zoukankan      html  css  js  c++  java
  • 基于java代码的springmvc配置

      在我的印象中,开发一个web项目首选当然是springmvc,而配置springmvc无非就是web.xml里配置其核心控制器DispatcherServlet.然后把所有的请求都交给它处理,再配个视图解析器,一个注解扫描和一个注解的驱动差不多一个基于springmvc的web项目就搞定了,这么一总结感觉好麻烦啊;然后最近在spring实战一书里刚好看到了基于java的springmvc的配置,感觉瞬间简单高大上了许多,下面记录下如何基于java来搭建springmvc的环境

      首先当然是配置Spring MVC的核心DispatcherServlet了,按照传统的方式,像DispatcherServlet这样的Servlet会配置在web.xml文件中,但是,借助于Servlet 3规范和Spring 3.1的功能增强,我们完全可以基于java来配置它,下面是关键代码:

    /**
     *   @author 
     *   @date 2018/9/4 14:57
     *   @description   使用java(非xml)为项目配置DispatcherServlet
     */
    public class ExcepCollAppInitilizer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        /**
         * 此方法返回的带有@Configuration注解的类将会用来配置ContextLoaderListener创建的应用上下文中的bean
         * @return
         */
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[]{RootConfig.class};
        }
    
        /**
         * 此方法返回的带有@Configuration注解的类将会用来定义DispatcherServlet应用上下文中的bean
         * @return
         */
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[]{WebConfig.class};// 指定配置类
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"}; //将DispatcherServlet映射到"/"
        }
    }

    其中RootConfig和WebConfig使我们自己写的配置类,我们重点关注WebConfig,它相当于我们使用xml配置时项目里的springmvc.xml,可以开启组件扫描、配置视图解析器等功能;下面是其代码:

    @Configuration
    @EnableWebMvc //启用springmvc
    @ComponentScan("com.darling") // 开启组件扫描
    public class WebConfig extends WebMvcConfigurerAdapter {
    
        /**
         * 配置JSP试图解析器
         * @return
         */
        @Bean
        public ViewResolver viewResolver(){
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".jsp");
            resolver.setExposeContextBeansAsAttributes(true);
            return resolver;
        }
    
        /**
         * 配置静态资源的处理
         * 要求DispatcherServlet将对静态资源的请求转发到Servlet容器中默认的Servlet上,而不是使用DispatcherServlet本身来处理此类请求
         * @param configurer
         */
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    }

    RootConfig的代码:

    /**
     *   @author 董琳琳
     *   @date 2018/9/4 16:05
     *   @description
     */
    @Configuration
    @ComponentScan(basePackages = {"com.darling"},excludeFilters = {@Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})
    public class RootConfig {
    }

    至此,我们基本上已经可以开始使用Spring MVC了,下面是我写的测试类:

    @Controller
    @RequestMapping("/test")
    public class TestController {
    
        @RequestMapping("/testJson")
        @ResponseBody
        public String test(){
            return "HELLO,SPRING MVC";
        }
    
        @RequestMapping("testJsp")
        public String test1(){
            return "index";
        }
    
    }

    测试效果

    跳转到JSP页面:

    返回json:

  • 相关阅读:
    java 反射 报错:Attempt to get java.lang.Integer field "..." with illegal data type conversion to int
    经常报错:Communications link failure
    解析Excel
    spring+atomikos+mybatis 多数据源事务(动态切换)
    mysql 存储过程
    Ace Admin 学习笔记
    spring mvc 表单提交 乱码
    spring 事务
    基于注解的Spring多数据源配置和使用(非事务)
    javaEE版本的eclipse中导入工程,发现server里面找不到工程,根本发布不了也不能运行
  • 原文地址:https://www.cnblogs.com/darling2047/p/9588157.html
Copyright © 2011-2022 走看看