zoukankan      html  css  js  c++  java
  • 全注解方式构建SpringMVC项目

    简述

    SpringBoot对Spring的的使用做了全面的封装,使用SpringBoot大大加快了开发进程,但是如果不了解Spring的特性,使用SpringBoot时会有不少问题

    目前网上流传使用IDEA比Eclipse效率更加高,在搭建项目时,也尝试使用IDEA,但是由于习惯问题,最终还是使用了Eclipse,以后也别再折腾了,专注于开发本身更加重要

    这是个简单的SpringMVC项目,目的在于帮助理解Spring4的SpringMVC的搭建,采用注解方式。项目简单得不能再简单,采用tomcat+spring+springmvc+h2方式搭建。项目启动后,在访问栏输入访问地址http://localhost:8080/testspringmvc/后直接访问,利用访问地址http://localhost:8080/testspringmvc/user/10001检测功能是否正常运行,输出结果是为一串JSON字串(java直接转换)

    文章分为3部分,项目搭建,代码说明,以及在这过程中遇到的问题的小结

    项目搭建

    依次选择File、New、Spring Legacy Project

    在弹出的对话框中选择Spring MVC项目,填写项目其他信息

    最后生成的SpringMVC项目的POM文件中要做些修改,因为这时生成的项目使用的是Spring3,而这次的目的是练习使用Spring4(这里做个标志,以后有时间回来看看怎样可以直接生成Spring4的)

    至此,项目已经生成,项目文件结构如下

    代码说明

    public class TestMVCInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
        @Override
        protected Class<?>[] getRootConfigClasses()
        {
            return new Class<?>[] { RootConfig.class };
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class<?>[] { WebConfig.class };
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[] { "/" };
        }
    }

    Spring4中通过继承AbstractAnnotationConfigDispatcherServletInitializer类,重写其方法实现web项目的配置,其中getRootConfigClasses方法定义了的配置类将用于ContextLoaderListener应用上下文的bean,getServletConfigClasses方法用于定义DispatcherServlet应用上下文中的bean,getServletMappings方法将DispatcherServlet映射到"/"

    @Configuration
    @EnableWebMvc
    @ComponentScan("com.m24.controller")
    public class WebConfig extends WebMvcConfigurerAdapter {
        @Bean
        public ViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".jsp");
            return resolver;
        }
    
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            super.addResourceHandlers(registry);
        }
    }

    此处注意的是使用@EnableWebMvc,是SpringMVC配置类

    最后是业务相关配置类

    @Configuration
    @Import(DataConfig.class)
    @ComponentScan(basePackages = {"com.m24"},
        excludeFilters = @Filter(type=FilterType.CUSTOM, value=RootConfig.WebPackage.class))
    public class RootConfig {
        public static class WebPackage extends RegexPatternTypeFilter {
            public WebPackage() {
                super(Pattern.compile("com.m24.controller"));
            }
        }
    }

    由于该配置类中使用了H2数据库,所以还需要引入H2的配置类

    @Import(DataConfig.class)
    @Configuration
    public class DataConfig {
        @Bean
        public DataSource dataSource() {
            return new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.H2)
                    .addScript("schema.sql")
                    .build();
        }
    
        @Bean
        public JdbcOperations jdbcTemplate(DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    }

    问题小结

    1、提供数据库插入语句时,正确的是

    insert into User values(10001, 'mvc', '123456', 'm', 'vc', 'mvc@m24.com');

    在开始时使用双引号,后台出现未识别列的的错误,经查找

    2、使用@ResponseBody时,提示找不到合适的转换器,要引入依赖

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.5.0</version>
            </dependency>

    3、由于使用注解方式,没有web.xml文件,项目报错,缺失web.xml文件,pom文件中添加

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

    4、定义java版本

    <!-- define the project compile level -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>

    5、指定项目名

    <finalName>testspringmvc</finalName>

    代码地址:https://github.com/m2492565210/testspringmvc

  • 相关阅读:
    aspnetpager 详解
    删除sql数据库日志的方法
    Asp.Net 自带的分布式事务(TransactionScope)的代码块
    VS2010项目放到VS2008下的方法
    SQL Server 2005中的SSIS维护计划
    XML格式与DataTable、DataSet、DataView格式的转换
    .NET公共执行类
    C#学习BackgroundWork
    <winform>源代码
    C#学习Thread
  • 原文地址:https://www.cnblogs.com/m2492565210/p/8328070.html
Copyright © 2011-2022 走看看