【SpringMVC】使用Maven搭建SpringMVC项目

来源:互联网 发布:mac隐藏菜单栏 编辑:程序博客网 时间:2024/06/05 21:51

此博文主要是描述在Eclipse中使用Maven工具搭建SpringMVC项目,此博文是建立在【JavaWeb开发】Maven的安装配置方法(eclipse)的基础之上。

第一步,新建项目

  • 在Eclipse中依次进行新建项目:File -> New -> Other -> Maven -> Maven Project -> 点击Next -> 选择Artifact Id 为 maven-archetype-webapp -> Next -> Group Id填写自己的域名,例如笔者的 com.baofeidyz | Artifact Id填写自己的项目名称,比如笔者的WeChatSpringMVC | 其余保持默认即可 -> Finish

    如果你没有使用Maven创建过任何项目(也就是说你的repository文件夹为空),这种情况之下,Maven会下载网络资源,如果你之前配置的镜像站在国内是不可以直接访问的,即可打开的你的VPN或者代理哦。
    资源下载结束之后,大致的项目目录会是这个样子的:
    使用Maven搭建的SpringMVC项目路径简图
    这个时候会有几个错误提示,主要是由于Maven自动加载的项目并不完善,需要我们手动完善一部分的文件结构

    • 第一个,需要在main文件夹中新增一个java文件夹;
    • 第二个,需要在src文件夹中新增一个test文件夹,并且在test文件夹中创建一个java文件夹;
    • 完成后的展示图如下:
      这里写图片描述
      这里将index.jsp文件删掉了。

第二步,配置pom.xml文件

  • 默认的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.baofeidyz</groupId>  <artifactId>WeChatSpringMVC</artifactId>  <packaging>war</packaging>  <version>0.0.1-SNAPSHOT</version>      <name> </name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies>  <build>    <finalName>WeChatSpringMVC</finalName>  </build></project>
  • 修改之后如下:
<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 artifactId version name和你在新建项目的时候有关,这个不需要你做修改-->  <groupId>com.baofeidyz</groupId>  <artifactId>spring-mvc-study</artifactId>  <version>0.0.1-SNAPSHOT</version>  <name>spring-mvc-study Maven Webapp</name>  <url>http://maven.apache.org</url>    <!--properties相当于一个全局变量-->    <properties>    <!--限定编码格式-->    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <!--用slf4j.version 替代 1.7.21 非常类似于java中的全局变量,也是为了后面做修改的时候减少代码量-->    <slf4j.version>1.7.21</slf4j.version>    <spring.version>4.3.1.RELEASE</spring.version>  </properties>  <dependencies>  <!--依赖的包,这个地方是SpringMVC,所以我填写的是org.springframework,关于这个填写的方式,可以在http://mvnrepository.com这个网站中找到,也可以在SpringMVC的网站中找到,后面也是类似的,每加载一个jar包都必须要在这个<dependencies>标签中加上,但是具体他们由依赖于哪一个包,这个就有maven这个工具自动完成了-->  <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>4.3.1.RELEASE</version>    </dependency>    <!--    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>${spring.version}</version>    </dependency>-->    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>${slf4j.version}</version>    </dependency>    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>jstl</artifactId>        <version>1.2</version>    </dependency>    <!-- servlet依赖 -->    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>4.0.0-b01</version>    </dependency>    <dependency>        <groupId>commons-lang</groupId>        <artifactId>commons-lang</artifactId>        <version>2.6</version>    </dependency>  </dependencies>  <build>    <finalName>spring-mvc-study</finalName>  </build></project>

有关的说明我都写在了代码块中,所以这里就不再赘述了。

第三步,配置web.xml文件

  • 这里我直接贴出代码块,然后我将在代码块中进行解读:
<?xml version="1.0" encoding="UTF-8"?>    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <display-name>WeChatSpringMVC</display-name>  <!--这个Spring应用上下文就相当于一个分支,这里我用职位来作解释说明,  把下面的DispacherServlet看作为一个公司的经理,  公司大大小小的事情都必须要经过他的手,然后由他来决定分给哪个部分来做,  那么这个ApplicationContext就相当于公司的某一个部门,只能处理某一个时间,  比如在你的网站中,他只负责处理安卓端的请求与响应,那么这个“部门”就只配置与安卓端相关的请求,  这样在开发的工程中更容易分开协作,提升工作效率,说得比较简单,因为主要是针对需要直接配置的同学,  如果需要有深入的理解,本人暂时还没发达到这个水平,深感抱歉-->  <!-- Spring应用上下文,理解层次化的ApplicationContext -->  <context-param>  <!--名字可以随意,但是要让别人看得懂-->    <param-name>contextConfigLocation</param-name>    <!--这里路径比较多,其实就是在configs这个文件夹下面又创建了一个新的文件夹spring,然后在这个下面有个配置文件,这个文件夹需要自己单独创建哦,也可以设置其他想要设置的路径-->    <param-value>/WEB-INF/configs/spring/applicationContext.xml</param-value>  </context-param><!--不做修改,如果按住Ctrl+鼠标左键单机可以看到源码证明没有问题-->  <listener>    <listener-class>        org.springframework.web.context.ContextLoaderListener    </listener-class>  </listener>  <!--只可以修改名字和路径,其他的不建议修改-->  <!-- DispacherServlet,Spring MVC的核心 -->  <servlet>    <servlet-name>mvc-dispatcher</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>        <param-name>contextConfigLocation</param-name>        <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet><!--这里的mapping仅设置了一个 / 表示拦截所有-->  <servlet-mapping>    <servlet-name>mvc-dispatcher</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping></web-app>

第三步结束之后,我又在webapp文件夹下面创建了一个jsp文件夹用于存放jsp文件,那么得到的目录就成了这个样子了:
这里写图片描述

第四步,配置mvc-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"          xmlns:aop="http://www.springframework.org/schema/aop"          xmlns:context="http://www.springframework.org/schema/context"         xmlns:mvc="http://www.springframework.org/schema/mvc"          xmlns:tx="http://www.springframework.org/schema/tx"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://www.springframework.org/schema/aop           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd           http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-3.0.xsd           http://www.springframework.org/schema/mvc           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd           http://www.springframework.org/schema/tx           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">      <!-- 本配置文件是工名为mvc-dispather的DispatcherServlet使用,提供其相关的Spring MVC配置 -->    <!-- 启用Spring基于annotation的DI,使用户可以在Spring MVC中使用强大功能。        激活@Required @Autowired,JSR 250's @PostConstruct,@PreDestroy and @Resource 等标注 -->    <context:annotation-config />      <!-- 控制层 -->    <!-- DispatcherServlet上下文,只管理@Controller类型的bean,忽略其他类型的bean,如@Service -->    <context:component-scan base-package="com.baofeidyz.web">        <context:include-filter type ="annotation" expression = "org.springframework.stereotype.Controller"/>    </context:component-scan>    <!-- HandlerMapping,无需配置,Spring MVC可以默认启动。        DefaultAnnotationHandlerMapping annotation-driven HandlerMapping     -->    <!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 -->    <mvc:annotation-driven />      <!-- 静态资源配置,css,js,imgs -->    <mvc:resources location="/resoures/"  mapping="/resources/**"/>    <!-- view层 -->    <!-- 配置ViewResolver             可以使用多个ViewResolver            使用order属性排序            InternalResourceViewResolver放在最后    -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">          <property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView"/>        <!-- 前缀 -->        <property name="prefix" value="/WEB-INF/jsp/" />          <!-- 后缀 -->        <property name="suffix" value=".jsp" />      </bean>  </beans>  

由于笔者多数都增加了注解,在此就做一部分解释,如果还是有不清楚的可以留言,笔者看到后会尽快回复的。
第一个
<!-- 控制层 -->
<!-- DispatcherServlet上下文,只管理@Controller类型的bean,忽略其他类型的bean,如@Service -->
<context:component-scan base-package="com.baofeidyz.web">
<context:include-filter type ="annotation" expression = "org.springframework.stereotype.Controller"/>
</context:component-scan>

这里的com.baofeidyz.web 表示的是一个包名,就是告诉这个DispatcherServlet,你到com.baofeidyz.web中去找你要的东西
第二个
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView"/>
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>

这里的前缀和后缀主要是方便后面在编写代码的过程中会比较方便,按照这个配置,如果jsp文件夹中有一个hellp.jsp文件,那么在java代码中只需要返回一个”hello”字符串即可跳转到这个hello.jsp文件(具体我会在后面的内容中再次阐述)

第五步,配置applicationContext.xml

  • 先贴出代码块:
<?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:context="http://www.springframework.org/schema/context"        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/context            http://www.springframework.org/schema/context/spring-context.xsd            http://www.springframework.org/schema/mvc            http://www.springframework.org/schema/mvc/spring-mvc.xsd">        <context:annotation-config/>        <context:component-scan base-package="com.baofeidyz.web">            <context:exclude-filter type = "annotation"                expression="org.springframework.stereotype.Controller"/>        </context:component-scan></beans>

注意 exclude-filter 表示不处理类型为 annotation 的请求,关于这个annotation暂时不做讨论

第六步,配置java环境

  • 由于使用Maven工具包创建的项目是没有指定是否是java项目的,所以需要我们手动配置:
  • 右键项目吗->Properties->Java Build Path->Libraries->Add Library->选择 JRE System Library->Finish->转到Order and Export 勾选上 JRE System Library

第七步,测试SpringMVC是否可以运转

  • 在/src/java 中创建一个Test类,并且包名为com.baofeidyz.web 与之前的配置文件对应
0 0
原创粉丝点击