Servlet3.0整合Springmvc(注解版)

在创建maven的web工程时候,如果报错缺少web.xml

则在pom添加如下配置 :

<build>
   <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
         <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
     </plugin>
   </plugins>
 </build>

web容器在启动的时候  会扫描每个jar包下的META-INF/services/javax.servlet.ServletContainerInitializer

加载这个文件指定的启动类

Spring的应用一启动会加载感兴趣的WebApplicationInitializer接口下的所有组件

并且为WebApplicationInitializer 组件创建对象(组件不是接口,不是抽象类)

总结:

以注解方式来启动Spring MVC 继承 AbstractAnnotationConfigDispatcherServletInitializer

实现抽象方法指定 DispatchServlet的配置信息

将Spring mvc 通过注解形式整合



配置:

//web容器启动的时候就会创建对象 调用方法 初始化容器 以及前端控制器
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    //获取跟容器的配置类  (Spring配置文件) 父容器
    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return new Class<?>[] {RootConfig.class};
    }
  // 获取web容器的配置类 (Spring mvc配置文件) 创建子容器
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {AppConfig.class};
    }
  //获取DispatcherServlet的映射信息
    @Override
    protected String[] getServletMappings() {
        // /* 拦截所有亲求; 连*.jsp页面都拦截; jsp页面是Tomcat的jsp引擎解析的
        return new String[] {"/"}; //拦截所有请求 包括静态资源 

    }

}

AppConfig:

//Spring mvc 只扫描controller 子容器
@ComponentScan(value="com.toov5",
includeFilters= { @Filter(type=FilterType.ANNOTATION,classes= {Controller.class})},
useDefaultFilters = false)  //禁用默认的过虑规则
public class AppConfig {

}

RootConfig:

//Spring的容器不扫描controller  父容器
@ComponentScan(value="com.toov5", excludeFilters= {@Filter(type=FilterType.ANNOTATION,classes= {Controller.class})})
public class RootConfig {

}

Controller:

@Controller
public class HelloController {

    @Autowired
    HelloService HelloService;

    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        String sayHello = HelloService.sayHello("toov5");
        return sayHello;
    }
}

Service:

@Service
public class HelloService {

    public String sayHello(String name) {
        return "Hello:"+name;
    }
}

访问:

在xml配置的spring mvc开发中

<mvc: default-servlet-handler/>   将springmvc处理不了的请求交给tomcat 静态资源就可以访问

<mvc:annotation-driven /> springmvc高级功能开启

<mvc:interceptors> </mvc:interceptors>

<mvc:view-controller path="" />

下面我们定制 Spring mvc

1 @EnableWebMvc  开始Spring mvc 定制配置功能

<mvc:annotation-driven />

2 配置组件(视图解析器 视图映射 静态资源映射 拦截器)

//Spring mvc 只扫描controller 子容器
@SuppressWarnings("deprecation")
@ComponentScan(value="com.toov5",
includeFilters= { @Filter(type=FilterType.ANNOTATION,classes= {Controller.class})},
useDefaultFilters = false)  //禁用默认的过虑规则
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter {

     //定制视图解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/",".jsp");

    }
    //静态资源访问等等都可配置

}

Controller

@Controller
public class HelloController {

    @Autowired
    HelloService HelloService;

    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        String sayHello = HelloService.sayHello("toov5");
        return sayHello;
    }
    @RequestMapping("/su")
    public String success() { //配置了解析器
        return "success";
    }
}

访问结果:

原文地址:https://www.cnblogs.com/toov5/p/10703853.html

时间: 2024-11-09 02:37:19

Servlet3.0整合Springmvc(注解版)的相关文章

Spring注解驱动开发(七)-----servlet3.0、springmvc

ServletContainerInitializer Shared libraries(共享库) / runtimes pluggability(运行时插件能力) 1.Servlet容器启动会扫描,当前应用里面每一个jar包的 ServletContainerInitializer的实现2.提供ServletContainerInitializer的实现类: 必须绑定在,META-INF/services/javax.servlet.ServletContainerInitializer 文件

Servlet3.0与springmvc那些事

官方文档:https://docs.spring.io/spring/docs/5.0.2.RELEASE/spring-framework-reference/web.html#mvc-servlet-context-hierarchy 以前开发web工程:servlet.filter.listener都需要在web.xml进行注册,包括springmvc的前端控制器DispatcherServlet也需要在web.xml进行注册,现在用[注解]方式快速搭建一个web应用: 1.servlet

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

springMVC(注解版笔记)

springMVC(注解版) 较之于非注解版本,发生一下变化: 1.配置文件需要配置的标签有: <!-- 包的扫描,此包下面的所有包都启用注解 --> <context:component-scan base-package="com.mindreader.springmvc.controller" /> <!-- 开启注解 --> <!--包的映射--> <bean class="org.springframework.

菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架也是界面把信息传输到Contorller层的一种架构,通过这个架构可以让我们把页面和Contorller层解耦,使得开发人员的分工更加明确. 二.代码演示. 1.首先配置SpringMVC环境. 1.1导入jar. 值得注意的是红色标记的commons-logging这个jar包一定得引入进去不然会

ssh框架整合之注解版

一,引jar包 <!--单测--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3</version> <scope>test</scope> </dependency> <!--spring配置--> <dependency> <

[Servlet3.0新特性]注解替代配置文件

需要注意的是,如果使用Servlet 3.0版本的话:首先Tomcat服务器必须使用7.0版本以上的(老版本不提供3.0版本),其次Eclipse创建Web工程时选择3.0版本. Servlet 3.0版本允许使用注解方式来替代web.xml文件中配置Servlet.Filter和Listener的信息,首先回忆一下web.xml文件是如何配置Servlet.Filter和Listener的: <?xml version="1.0" encoding="UTF-8&qu

菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析

一.概述. SpringMVC在服务端把客户端传过来的JSON字符串,并把JSON字符串转成 JSON对象并取得其中的属性值,这个在项目中经常用到. 二.代码演示. 需要添加的jar包. 2.1 web.xml. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=&

菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层

一.概述. SpringMVC中界面请求Contorller1,Contorller1需要重定向到Contorller2中显示其他页面或者做一些业务逻辑,Spring中提供了这个功能利用"redirect:/"来进行重定向. 二.代码演示. 1.界面 Login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF