zoukankan      html  css  js  c++  java
  • maven 纯注解一步一步搭建Spring Mvc项目(入门)

    初次接触spring MVC项目,通过一段时间的学习,本文介绍一种以纯注解的方法去配置spring MVC环境,让那些配置的.xml文件统统见鬼吧。

    什么是Spring MVC

      Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。

    版本

    本人使用64位的eclipse,版本是eclipse-jee-neon-R-win32-x86_64,下载地址:http://pan.baidu.com/s/1cfETtk;若有32位系统的同学请自行去官网下载。

    其他的软件参数:

    Tomcat: 8.0.44(下载地址:http://pan.baidu.com/s/1skF1PrJ)

    JDK:1.8.0_60(下载地址:http://pan.baidu.com/s/1eSmYoRg)

    Maven:3.5.0(下载地址:http://pan.baidu.com/s/1mhItVHQ)

    Spring-framework: 4.0.4.RELEASE

    可自行百度安装教程。

    1)新建项目:

            file-new-other后,在Maven中选择Maven Project,如下图所示,

    点Next,如下图所示

    在这里Use default Workspace  location可能不同,不用管,直接点Next,如下图:

    选择maven-archetype-webapp 1.0,点Next进入输入项目名的步骤。如下图

    其中Actifact Id是项目名。点Finish完成项目创建。

           项目建好之后,目录结构如下:

                                                           

    注:此时可能会提示index.jsp文件报错,此时右击项目名选择-Build Path-Configure Build Path,在Libraries下选择Add Library-Server Runtime后,选择安装的tomcat版本。

    2)导入jar包

    我们基于Spring mvc框架进行开发,需要依赖一下的spring jar包:

    • spring-aop-4.2.5.RELEASE.jar
    • spring-beans-4.2.5.RELEASE.jar
    • spring-context-4.2.5.RELEASE.jar
    • spring-core-4.2.5.RELEASE.jar
    • spring-expression-4.2.5.RELEASE.jar
    • spring-web-4.2.5.RELEASE.jar
    • spring-webmvc-4.2.5.RELEASE.jar
    • commons-logging-1.1.1.jar(用来打印log)

    此时打开pom.xml文件导入上述的jar包

    pom.xml文件的内容如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.wj.test</groupId>
        <artifactId>springmvc</artifactId>
        <packaging>war</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>springmvc Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <properties>
            <org.springframework.version>4.0.4.RELEASE</org.springframework.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <!--Spring mvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${org.springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
    
    
        </dependencies>
        <build>
            <finalName>springmvc</finalName>
        </build>
    </project>

    这个时候,就该进行Spring配置了。按传统方式来的话,首先要去web.xml写一堆配置,然后建立个管理beab的Beans.xml,管理spring mvc 的xml,再写一坨一坨Bean。就是先进一点的(也就是很多人说的0配置),也就是自己的业务Bean不用写进xml了,还是很麻烦。

    而我这里讲的方式,则是完全不修改任何web.xml代码,不写一行XML代码的方式。

    3)配置文件及编写代码

    首先,在项目立建立一个

    SpringMvcConfig.java文件:
    package com.wj.test.cfg;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.FilterType;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    

      /**
      * 取代Beans.xml,纯注解配置各种BEAN
      * @author wj
      *
      */

    @Configuration
    @EnableWebMvc
    @ComponentScan(
            value = "com.wj.test", includeFilters = {
                    @ComponentScan.Filter(type = FilterType.ANNOTATION, value = Controller.class)
            })
            
    public class SpringMvcConfig extends WebMvcConfigurerAdapter
    {
        @Bean
        public ViewResolver viewResolver() 
        {
            //InternalResourceViewResolver;配置视图解析器
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setOrder(1);
            resolver.setPrefix("/WEB-INF/");
            resolver.setSuffix(".jsp");
            return resolver;
        }
    }

    @Configuration注解就是告诉Spring这个是一个配置文件类,这里配置的Bean要交给Spring去管理。这个就是用来取代Beans.xml这种文件的。

    @ComponentScan("com.csonezp")这个注解就是配置包扫描用的,不必多说了

    @EnableWebMvc ,启用Spring MVC支持

    这里面配置了一个Bean就是JSP的视图解析器。这可以对应到XML文件里面去的。找一个传统Spring项目,用xml文件对比着我这个类去看,会对这种配置方式有更深的了解。

    下面要建立一个WebInitializer类继承WebApplicationInitializer,在这里添加一个servlet。这一步是用来取代在web.xml中添加servlet的步骤

    package com.wj.test.cfg;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRegistration;
    import org.springframework.web.WebApplicationInitializer;
    import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    import org.springframework.web.servlet.DispatcherServlet;
    

      /**
      * 取代在web.xml中添加servlet的步骤
      * @author wj
      *
      */

    public class WebAppInitializer implements WebApplicationInitializer
    {
        
        public void onStartup(final ServletContext sc) throws ServletException {
    
            AnnotationConfigWebApplicationContext  rootContext = new AnnotationConfigWebApplicationContext();
            rootContext.register(SpringMvcConfig.class);
            rootContext.setServletContext(sc);
    
            DispatcherServlet dispatcherServlet = new DispatcherServlet(rootContext);
    
            ServletRegistration.Dynamic dynamic = sc.addServlet("dispatcherServlet", dispatcherServlet);
            dynamic.setLoadOnStartup(1);
            dynamic.addMapping("/");
        }
    }

    写到这里就已经完成了,现在写一个测试的代码试试。

     UserDao类:

    package com.wj.test.mod;
    
    public class UserDao
    {
        private String name;
        private String hello;
        public String getName()
        {
            return name;
        }
        public void setName(String name)
        {
            this.name = name;
        }
        public String getHello()
        {
            return hello;
        }
        public void setHello(String hello)
        {
            this.hello = hello;
        }
    }

    Controller类:

    package com.wj.test.web;
    
    import javax.servlet.http.HttpServletRequest;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.wj.test.mod.UserDao;
    
    /**
     * Created by wj
     */
    @RestController
    public class TestController
    {
        @RequestMapping("/test")
        public UserDao getToken(HttpServletRequest request)
        {
            UserDao user = new UserDao();
            user.setName(request.getParameter("name"));
            user.setHello("How are you?");
            return user;
    
        }
    }

    在这还需要导入三个关于json的.jar包,整个项目所需要的.jar包如下:

    运行项目,在浏览器中输入http://localhost:8080/springmvc/test?name=God,最后的运行结果如下:

    整个项目的结构图如下:

     

    本文到此结束。

  • 相关阅读:
    ORACLE 变量定义
    AcWing1082 数字游戏(数位dp)
    AcWing1081 度的数量(数位dp)
    UCF Local Programming Contest 2017 I题 Rotating Cards(贪心+树状数组)
    AcWing1048 鸡蛋的硬度(浅谈两种解法的思考方向)
    CF713C Sonya and Problem Wihtout a Legend (经典dp)
    CF269B Greenhouse Effect (dp LIS)
    CF463D Gargari and Permutations (LCS)
    AcWing987 最长公共子序列
    CF721C Journey (dp+拓扑)
  • 原文地址:https://www.cnblogs.com/wj0816/p/7066321.html
Copyright © 2011-2022 走看看