• Spring-MVC的配置方式


    Spring MVC的配置方式

    • 注解配置

    • XML配置

    1:XML配置 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    
        <display-name>projectName</display-name>
        <context-param>
            <param-name>webAppRootKey</param-name>
            <param-value>webapp.root</param-value>
        </context-param>
    
        <!-- 配置文件 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml,classpath:spring-security.xml</param-value>
        </context-param>
        <!-- log4j日志 -->
        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>classpath:log4j.properties</param-value>
        </context-param>
        <context-param>
            <param-name>log4jRefreshInterval</param-name>
            <param-value>30</param-value>
        </context-param>
    
        <!-- 中文过滤 -->
        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!-- hibernate session -->
        <filter>
            <filter-name>hibernateFilter</filter-name>
            <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>hibernateFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
        <!-- 验证码 -->
        <servlet>
            <servlet-name>RandomCodeServlet</servlet-name>
            <servlet-class>com.sfkj.base.common.RandomCode</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>RandomCodeServlet</servlet-name>
            <url-pattern>/imgcode</url-pattern>
        </servlet-mapping>
        <!-- spring监听 -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!-- 日志监听 -->
        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>
        <!-- mvc -->
        <servlet>
            <servlet-name>springMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springMVC</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
        <!-- session过期时间 -->
        <session-config>
            <session-timeout>0</session-timeout>
        </session-config>
        <!-- 验证码(一定要在security之前) -->
        <filter>
            <filter-name>validateFilter</filter-name>
            <filter-class>com.sfkj.base.filter.ValidateFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>validateFilter</filter-name>
            <url-pattern>/j_spring_security_check</url-pattern>
        </filter-mapping>
        <!-- security -->
        <filter>
            <filter-name>springSecurityFilterChain</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>/WEB-INF/views/login.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

      

     2:注解配置

    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = {"top.cqscrb.courage.controller"})
    public class DispatcherConfig extends WebMvcConfigurerAdapter {//注解配置
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
            List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
            supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
            supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
            supportedMediaTypes.add(MediaType.TEXT_HTML);
            fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
            FastJsonConfig config = new FastJsonConfig();
            config.setSerializerFeatures(
                    // 保留map空的字段
                    SerializerFeature.WriteMapNullValue,
                    // 将String类型的null转成""
                    SerializerFeature.WriteNullStringAsEmpty,
                    // 将Number类型的null转成0
                    SerializerFeature.WriteNullNumberAsZero,
                    // 将List类型的null转成[]
                    SerializerFeature.WriteNullListAsEmpty,
                    // 将Boolean类型的null转成false
                    SerializerFeature.WriteNullBooleanAsFalse,
                    // 避免循环引用
                    SerializerFeature.DisableCircularReferenceDetect);
            fastJsonHttpMessageConverter.setFastJsonConfig(config);
            fastJsonHttpMessageConverter.setDefaultCharset(Charset.forName("UTF-8"));
            converters.add(fastJsonHttpMessageConverter);
        }
    
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/files/**")
                    .addResourceLocations("/files/");
        }
    
        @Bean
        public MultipartResolver multipartResolver(){
            return new StandardServletMultipartResolver();
        }
    
    
        @Bean
        public InternalResourceViewResolver viewResolver() {//视图配置
            InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
            internalResourceViewResolver.setPrefix("WEB-INF/jsp/");
            internalResourceViewResolver.setSuffix(".jsp");
            internalResourceViewResolver.setExposeContextBeansAsAttributes(true);
            return internalResourceViewResolver;
        }
    
    }

    添加dispatcgerServlet

    public class StartServletInitializer implements WebApplicationInitializer {
    
        @Override
        public void onStartup(ServletContext servletContext){
            AnnotationConfigWebApplicationContext rootContext =
                    new AnnotationConfigWebApplicationContext();
            rootContext.register(WebBlackConfig.class);
    
            servletContext.addListener(new ContextLoaderListener(rootContext));
    
            AnnotationConfigWebApplicationContext servlet = new AnnotationConfigWebApplicationContext();
            servlet.register(SpringMVCInterceptor.class);
            servlet.register(SpringMvcConfig.class);
            ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet", new DispatcherServlet(servlet));//添加dispatcherServlet
            dispatcherServlet.addMapping("/*");//拦截路径
            dispatcherServlet.setLoadOnStartup(1);//启动时机
            dispatcherServlet.setInitParameter("throwExceptionIfNoHandlerFound", "true");
    
            FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter());//字符编码配置
            encodingFilter.setInitParameter("encoding", "UTF-8");
            encodingFilter.setInitParameter("forceEncoding", "true");
            encodingFilter.addMappingForUrlPatterns(null, false, "/*");
    
        }
    
    }

     

    public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        /**
         * 配置上下文
         * @return
         */
        @Override
        protected Class<?>[] getRootConfigClasses() {
                return null;
        }
    
        /**
         * 启动组件扫描,配置试图解析器,配置静态资源等等,
         * 相当于springmvc-servlet.xml中的配置
         * @return
         */
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[]{SpringMvcConfig.class};
        }
    
        /**
         * 拦截url请求
         * 把DispatchServlet映射到对应的请求路径上
         * 相当于xml中的 <servlet-mapping></servlet-mapping>
         * @return
         */
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"};
        }
    }

      

    xml中配置的内容,在注解配置中,都可以创建对应的对象,以返回bean的方式交给spring去管理。

    例如:

    spring-mvc.xml中文件上传的配置

    <!-- 文件上传 -->
    <bean id="multipartResolver"     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
            <property name="defaultEncoding" value="UTF-8"/>   
            <property name="maxUploadSize" value="10099884032"/>//上传文件大小
     </bean>

    注解配置中可以这样配置

    @Bean
    public MultipartResolver multipartResolver() {//注解开启文件上传
    
       MultipartResolver multipartResolver = new CommonsMultipartResolver();
       return multipartResolver;
    
    }

      

    我们都只是茫茫星辰中的一粒沙。
  • 相关阅读:
    swfupdate flash上传工具
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服 务器。请验证实例名称是否正确并且 SQL Server 已配置为允
    多对多 一对一 一对多 主从 关联 字典
    JavaScript面向对象
    vue的transition过渡效果
    【译】Learn ES2015——箭头函数
    vue的选项
    JavaScript模块化
    vue-router
    vuex是啥
  • 原文地址:https://www.cnblogs.com/yjp372928571/p/10893237.html
Copyright © 2020-2023  润新知