zoukankan      html  css  js  c++  java
  • (三)Web模块:【6】定制与接管 SpringMVC

    一、配置文件方式

      以前在使用 SpringMVC 时,我们可以在配置文件中进行配置:

      例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--将SpringMVC处理不了的请求交给tomcat;静态资源 就可以访问 -->
        <mvc:default-servlet-handler/>
        <!-- SpringMVC的高级功能开启 -->
        <mvc:annotation-driven />
    
        <!--<mvc:interceptors>   &lt;!&ndash; 配置拦截器&ndash;&gt;-->
    
        <!--</mvc:interceptors>-->
    
        <!--<mvc:view-controller path=""/>-->
    </beans>

    二、无配置文件方式

      在 Servlet整合了 SpringMVC 后,就没有了配置文件,此时就可以通过配置类的方式来进行定制SpringMVC。

      定义SpringMVC:

      (1)@EnableWebMvc:开启SpringMVC定制配置功能;    <mvc:annotation-driven/>;

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

    三、示例

      SpringMVC 的配置类:

    @ComponentScan(value="com.njf", includeFilters={
            @ComponentScan.Filter(type = FilterType.ANNOTATION, classes={Controller.class})
    }, useDefaultFilters=false)
    @Configuration
    @EnableWebMvc //开启SpringMVC定制配置功能
    public class SpringMVCConfig extends WebMvcConfigurerAdapter {
    
        //定制
    
        //视图解析器
        @Override
        public void configureViewResolvers(ViewResolverRegistry registry) {
            //默认所有的页面都从 /WEB-INF/ xxx .jsp
            //registry.jsp();
            registry.jsp("/WEB-INF/views/", ".jsp");
        }
    
        //静态资源访问
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    
        //拦截器
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //super.addInterceptors(registry);
            registry.addInterceptor(new MyFirstInterceptor()).addPathPatterns("/**");
        }
    }

       创建自定义拦截器:

    public class MyFirstInterceptor implements HandlerInterceptor {
    
        //目标方法运行之前执行
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
            // TODO Auto-generated method stub
            System.out.println("preHandle..."+request.getRequestURI());
            return true;
        }
    
    
        //目标方法执行正确以后执行
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            // TODO Auto-generated method stub
            System.out.println("postHandle...");
        }
    
    
        //页面响应以后执行
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            // TODO Auto-generated method stub
            System.out.println("afterCompletion...");
        }
    
    }

      容器启动加载的类

    //web容器启动的时候创建对象;调用方法来初始化容器以前前端控制器
    public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    
        //获取根容器的配置类;(Spring的配置文件)   父容器;
        @Override
        protected Class<?>[] getRootConfigClasses() {
            // TODO Auto-generated method stub
            return new Class<?>[]{RootConfig.class};
        }
    
    
        //获取web容器的配置类(SpringMVC配置文件)  子容器;
        @Override
        protected Class<?>[] getServletConfigClasses() {
            // TODO Auto-generated method stub
            return new Class<?>[]{AppConfig.class};
        }
    
    
        //获取DispatcherServlet的映射信息
        //  /:拦截所有请求(包括静态资源(xx.js,xx.png)),但是不包括*.jsp;
        //  /*:拦截所有请求;连*.jsp页面都拦截;jsp页面是tomcat的jsp引擎解析的;
        @Override
        protected String[] getServletMappings() {
            // TODO Auto-generated method stub
            return new String[]{"/"};
        }
    }

      MVC Config 参考文档

     

  • 相关阅读:
    P3973 [TJOI2015]线性代数
    P3168 [CQOI2015]任务查询系统
    二次剩余学习笔记
    URL注入攻击+知识星球资源整理
    我的网络安全架构知识点的总结(待完善)
    Sudo提权
    DNSlog平台各种利用姿势(盲注)
    Wireshark抓包理论加实操
    Fofa搜索技巧(理论加实践的整理)
    Windows留后门维持权限(其中包括详细的telnet改端口与连接)
  • 原文地址:https://www.cnblogs.com/niujifei/p/15593200.html
Copyright © 2011-2022 走看看