使用Eclipse构建Maven的SpringMVC项目-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

使用Eclipse构建Maven的SpringMVC项目

简介:

    首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。

       用MyEclipse安装Maven插件,建出的Maven项目有些问题。一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class。要么真不在WEB-INF生成classes了但是发布tomcat的时候,class文件一个都不会给你发布过去,超级郁闷。但是使用Eclipse构建Maven项目后,使用MyEclipse打开就没问题了。

       用maven的好处:我感觉最主要就是自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题。再就是文件结构清晰,java文件,资源文件,测试文件都分的很清楚。

       将介绍两种方法:一,直接建立Maven项目方法;二、建立Dynamic Web project转成Maven项目方法。

一、直接建立Maven项目方法

1、建立Maven项目

       接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例:

1.1 选择建立Maven Project

选择File -> New -> Other,在New窗口中选择 Maven -> Maven Project。点击newxt。


15f666df-1dee-3b57-8e23-36f101d3f5d8.png



1.2 选择项目路径

Use default Workspace location默认工作空间。


710ac8a7-5833-3bb8-815a-6f90fceb7623.png



1.3 选择项目类型

在Artifact Id中选择maven-archetype-webapp


bd6a2335-ea36-3606-a5d3-75ecd739ff92.png



1.4 输入Group ID和 Artifact ID,以及Package

Group ID一般写大项目名称。Artifact ID是子项目名称。

例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。

Package是默认给你建一个包,不写也可以。


e3dbc9bf-1ff7-396e-86ad-7698fc321a8e.png



1.5 刚建立好后的文件结构如下图


459da30e-317d-3024-82aa-90beb507c183.png


如果这里显示的内容多,一般是Filters设置的问题。或perspective为JavaEE模式,改成Java模式就可以了。



2、配置Maven项目

接下来就需要更改好多配置了。


2.1 添加Source文件夹

接下来需要添加src/main/java,src/test/java ,src/test/resources三个文件夹。右键项目根目录点击New -> Source Folder,

建出这三个文件夹。注意不是建普通的Folder,而是Source Folder。


3a50a05a-d6c2-3570-a7b7-6c4351d1c84b.png


f6031745-c5b6-3eaa-bed5-7d00bce91caa.png



2.2 更改class路径

右键项目,Java Build Path -> Source

下面应该有4个文件夹。src/main/java,src/main/resources,src/test/java ,src/test/resources。


双击每个文件夹的Output folder,选择路径。

src/main/java,src/main/resources,选择target/classes;

src/test/java ,src/test/resources, 选择target/test-classes;


选上Allow output folders for source folders.



在此处还要更改:

更改文件夹显示的顺序:点击Order and Export。

更改JDK版本:在Libraries双击JRE System Library,要1.6版本。


9b09cb91-7cdc-387e-b8ab-bfd504363833.png


2.3 把项目变成Dynamic Web项目


2.3.1 右键项目,选择Project Facets,点击Convert to faceted from


90cb6af7-e66e-36f7-93dd-a8dbb809146e.png


2.3.2 配置Project Facets


更改Dynamic Web Module的Version为2.5。(3.0为Java7的)。

如果提示错误,可能需要在Java Compiler设置Compiler compliance level 为1.6。或者需要在此窗口的Java的Version改成1.6。


7146caa8-1652-3fbd-8cf1-4eff8d13933a.png



2.3.3 配置 Modify Faceted Project

点击Further configuration available…,弹出Modify Faceted Project窗口

此处是设置web.xml文件的路径,我们输入src/main/webapp。

Generate web.xml deployment descriptor自动生成web.xml文件,可选可不选。



2.4 设置部署程序集(Web Deployment Assembly)


上面步骤设置完成后,点击OK,Properties窗口会关闭,在右键项目打开此窗口。在左侧列表中会出现一个Deployment Assembly,点击进去后,如下图:


d8d75b79-e276-3e4b-a121-c172cb00f126.png



此处列表是,部署项目时,文件发布的路径。

1,我们删除test的两项,因为test是测试使用,并不需要部署。

2,设置将Maven的jar包发布到lib下。

Add -> Java Build Path Entries -> Maven Dependencies -> Finish

设置完成效果图


1def857e-b75a-35f3-ac0b-b7f1c42db7ec.png






3、向maven项目中添加jar包

maven可以管理项目依赖的jar包,通过groupID、artifactId以及版本号可以唯一确定一个jar包。这样可以防止老式Web项目中WEB-INF/lib下jar包不一致的问题。并且maven还会自动下载添加进的jar包所依赖的jar包。


3.1 在pom.xml中添加所需要的jar包

使用Maven POM editor打开项目中的pom.xml文件,选择Dependencies,在Dependencies栏目点击Add进行,首先弹出一个搜索按钮,例如输入spring-web,就会自动搜索关于spring-web相关的jar包,我们选择3.0.5版本的spring。将spring包全部添加进来。需要添加的其他jar包有:junit、jstl。或者点击pom.xml直接编辑pom.xml文件。这样可以直接copy过来dependencies内容。


0c03dd0b-745f-3499-99ca-f8ddb532525a.png



3.2设置jar包的scope

b4c2da41-145e-34de-a467-3bdfbfb2228f.png


当添加进入一个jar包后,有一些属性需要设置,最重要的就是scope,它有以下几种取值:

1.compile,缺省值,适用于所有阶段,会随着项目一起发布。

2.provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

3.runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

4.test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

5.system,类似provided,需要显式提供包含依赖的jar,Maven不会在 Repository中查找它。



通常SpringMVC项目所需要配置scope的jar包如下图:


3ad4da09-404b-3fa8-bb99-479be59630bb.png


有的时候发现servlet-api还是被打包到lib下面了,此时肯定会报错。就需要把maven插件中的WTP也安装一下。

Eclipse在线安装路径:http://m2eclipse.sonatype.org/sites/m2e-extras。选择for Eclipse WTP。


41aeca9f-970e-398f-a19e-4c914f1d14ee.png




4、构建SpringMVC框架


4.1 编辑web.xml文件


需要添加log4j,字符过滤,Spring 的dispatcher等。

webx.xml代码如下:


Xml代码  收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>

  2. <web-appxmlns="http://java.sun.com/xml/ns/javaee"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  

  5.                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  

  6. version="2.5">


  7. <!-- 区分项目名称,防止默认重名 -->

  8. <context-param>

  9. <param-name>webAppRootKey</param-name>

  10. <param-value>maven.example.root</param-value>

  11. </context-param>


  12. <!-- Spring的log4j监听器 -->

  13. <listener>

  14. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

  15. </listener>


  16. <!-- 字符集 过滤器  -->

  17. <filter>

  18. <filter-name>CharacterEncodingFilter</filter-name>

  19. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  20. <init-param>

  21. <param-name>encoding</param-name>

  22. <param-value>UTF-8</param-value>

  23. </init-param>

  24. <init-param>

  25. <param-name>forceEncoding</param-name>

  26. <param-value>true</param-value>

  27. </init-param>

  28. </filter>

  29. <filter-mapping>

  30. <filter-name>CharacterEncodingFilter</filter-name>

  31. <url-pattern>/*</url-pattern>

  32. </filter-mapping>


  33. <!-- Spring view分发器 -->

  34. <servlet>

  35. <servlet-name>dispatcher</servlet-name>

  36. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  37. <init-param>

  38. <param-name>contextConfigLocation</param-name>

  39. <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>

  40. </init-param>

  41. <load-on-startup>1</load-on-startup>

  42. </servlet>

  43. <servlet-mapping>

  44. <servlet-name>dispatcher</servlet-name>

  45. <url-pattern>*.do</url-pattern>

  46. </servlet-mapping>


  47. </web-app>


4.2 编写Spring配置文件dispatcher-servlet.xml


如要添加MVC驱动、注解检测、视图解析等。dispatcher-servlet.xml代码如下:


Xml代码  收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>

  2. <beansxmlns="http://www.springframework.org/schema/beans"

  3. xmlns:aop="http://www.springframework.org/schema/aop"

  4. xmlns:context="http://www.springframework.org/schema/context"

  5. xmlns:mvc="http://www.springframework.org/schema/mvc"

  6. xmlns:tx="http://www.springframework.org/schema/tx"

  7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  8. xsi:schemaLocation="http://www.springframework.org/schema/aop  

  9.        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  

  10.        http://www.springframework.org/schema/beans  

  11.        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  

  12.        http://www.springframework.org/schema/context  

  13.        http://www.springframework.org/schema/context/spring-context-3.0.xsd  

  14.        http://www.springframework.org/schema/mvc  

  15.        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  

  16.        http://www.springframework.org/schema/tx  

  17.        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


  18. <mvc:annotation-driven/>

  19. <context:component-scanbase-package="liming.maven.example"/>


  20. <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

  21. <propertyname="prefix"value="/WEB-INF/views/"/>

  22. <propertyname="suffix"value=".jsp"/>

  23. </bean>


  24. </beans>




4.3 编写一个Controller层测试类


编写一个SpringMVC的Controller层测试类。此类只有一个方法做地址映射,并向页面传递一个数据。代码如下:


Java代码  收藏代码
  1. package liming.maven.example.view;  


  2. import org.springframework.stereotype.Controller;  

  3. import org.springframework.ui.Model;  

  4. import org.springframework.web.bind.annotation.RequestMapping;  


  5. @Controller

  6. publicclass GeneralController {  


  7. @RequestMapping(value="index.do")  

  8. publicvoid index_jsp(Model model){  

  9.        model.addAttribute("liming", "黎明你好");  

  10.        System.out.println("index.jsp");  

  11.    }  

  12. }  




4.4 编写index.jsp页面

首先在src/main/webapp/WEB-INF下建文件夹views。此处和dispatcher-servlet.xml配置文件中的prefix属性路径要一样。

在views下建index.jsp文件

我们使用jstl获取Controlleradd的数据。

Jsp页面代码如下:


Html代码  收藏代码
  1. <%@ page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

  2. <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  4. <html>

  5. <head>

  6. <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">

  7. <title>Insert title here</title>

  8. </head>


  9. <body>

  10. <c:outvalue="${liming}"></c:out>

  11. </body>

  12. </html>




5,发布到tomcat

这个就没啥说的了。

Eclipse下Tomcat常用设置:http://limingnihao.iteye.com/admin/blogs/825394



6,测试

访问地址:http://localhost:8080/liming.maven.example/index.do

访问的结果来个截图:


367967b5-a44f-34a4-b603-0a4bda6c3aa7.png



二、建立Dynamic Web project转成Maven项目方法

7、第二种方法DynamicWeb项目转成Mavan

7.1 新建Dynamic Web Project

依次选择选择File -> New -> Other。在New窗口中选择Web下的Dynamic Web Project。点击next。


fd57a7ae-c9f3-39a2-8889-eea0bbfc113c.png


7.2 配置项目信息

7.2.1 输入项目信息

首先输入项目名称。

Target runtime 一般选择使用什么容器,tomcat之类的。可以先不选。

Dynamic web module version。就是版本号。选择2.5(3.0是Java7的)。

Configuration 是选择容易的配置。如果Target runtime选择了tomcat。这里对应也是选择tomcat。

Next。


6f2ad2bd-2ca9-3cda-a4d0-348c551bbca1.png

7.2.2 配置source和output的folder

此窗口输入需要建立的Source folders。和默认output folder。

这个我们的Source folders等建立完项目后在添加。

output folder可以顺手改成target/classes。


49d5a409-664f-32da-9056-9fcab0252ae4.png


7.2.3 配置web.xml文件的路径


08b741b5-b2ae-3226-9a41-339de751873d.png



7.3 转成maven项目

Dynamic web项目建立完后,首先将其转成maven项目。

右键此项目,选择maven -> Enable Dependency Management。弹出的窗口,直接finish就可以了。


074ee051-ee20-3b63-9342-27f0d2d706bf.png


7.4 其他配置

接下来的配置工作就和前面的基本一样了。

请参考上面。

2.1添加Source文件夹

2.2更改class路径。

2.3.3 配置 Modify Faceted Project

2.4 设置部署程序集(Web Deployment Assembly)


接着就是构建SpringMVC框架,发布到tomcat,测试。


http://limingnihao.iteye.com/blog/830409













本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1259591,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章