码迷,mamicode.com
首页 > 编程语言 > 详细

Servlet3.0整合Springmvc(注解版)

时间:2019-04-14 09:39:00      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:nta   meta   art   spring配置   启动   resolve   xml配置   end   了解   

在创建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";
    }
}

访问结果:

技术图片

 

Servlet3.0整合Springmvc(注解版)

标签:nta   meta   art   spring配置   启动   resolve   xml配置   end   了解   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!