`
limingnihao
  • 浏览: 1824640 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用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。


 

 

1.2 选择项目路径

Use default Workspace location默认工作空间。


 

 

1.3 选择项目类型

在Artifact Id中选择maven-archetype-webapp


 

 

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

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

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

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


 

 

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


 

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

 

 

2、配置Maven项目

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

 

2.1 添加Source文件夹

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

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



 

 

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版本。


 

2.3 把项目变成Dynamic Web项目

 

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


 

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。


 

 

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,点击进去后,如下图:


 

 

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

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

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

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

设置完成效果图


 

 

 

 

 

3、maven项目中添加jar

maven可以管理项目依赖的jar包,通过groupIDartifactId以及版本号可以唯一确定一个jar包。这样可以防止老式Web项目中WEB-INF/libjar包不一致的问题。并且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内容。




3.2设置jar包的scope

 

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

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

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

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

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

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

 

 

通常SpringMVC项目所需要配置scopejar包如下图:


 

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

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


 

 

 

4、构建SpringMVC框架

 

4.1 编辑web.xml文件

 

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

webx.xml代码如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	                         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
	     version="2.5" >
	
	<!-- 区分项目名称,防止默认重名 -->
	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>maven.example.root</param-value>
	</context-param>

	<!-- Spring的log4j监听器 -->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<!-- 字符集 过滤器  -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- Spring view分发器 -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

</web-app>
 

 

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

 

如要添加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:annotation-driven />
	<context:component-scan base-package="liming.maven.example" />

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>
 

 

 

 

4.3 编写一个Controller层测试类

 

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

 

package liming.maven.example.view;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class GeneralController {

	@RequestMapping(value="index.do")
	public void index_jsp(Model model){
		model.addAttribute("liming", "黎明你好");
		System.out.println("index.jsp");
	}
}
 

 

 

 

4.4 编写index.jsp页面

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

在views下建index.jsp文件

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

Jsp页面代码如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	
	<body>
		<c:out value="${liming}"></c:out>
	</body>
</html>
 

 

 

 

5,发布到tomcat

这个就没啥说的了。

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

 

 

6,测试

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

访问的结果来个截图:


 

 

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

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

7.1 新建Dynamic Web Project

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


 

7.2 配置项目信息

7.2.1 输入项目信息

首先输入项目名称。

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

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

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

Next。


7.2.2 配置source和output的folder

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

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

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


 

7.2.3 配置web.xml文件的路径


 

 

7.3 转成maven项目

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

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


 

7.4 其他配置

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

请参考上面。

2.1添加Source文件夹

2.2更改class路径。

2.3.3 配置 Modify Faceted Project

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

 

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

 

 

 

  • 大小: 36.3 KB
  • 大小: 28.3 KB
  • 大小: 38.3 KB
  • 大小: 26.2 KB
  • 大小: 7.2 KB
  • 大小: 16.8 KB
  • 大小: 22.8 KB
  • 大小: 48.4 KB
  • 大小: 33.8 KB
  • 大小: 59.8 KB
  • 大小: 36.4 KB
  • 大小: 5.5 KB
  • 大小: 29.6 KB
  • 大小: 25.2 KB
  • 大小: 26.7 KB
  • 大小: 33.5 KB
  • 大小: 21.2 KB
  • 大小: 19.5 KB
  • 大小: 8.5 KB
  • 大小: 8.1 KB
  • 大小: 12.6 KB
  • 大小: 13.5 KB
  • 大小: 12.9 KB
80
3
分享到:
评论
45 楼 行走在雨天 2016-09-20  
严重: Exception starting filter encodingFilter
java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4689)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5329)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

九月 20, 2016 1:44:10 下午 org.apache.catalina.core.StandardContext startInternal
严重: One or more Filters failed to start. Full details will be found in the appropriate container log file
九月 20, 2016 1:44:10 下午 org.apache.catalina.core.StandardContext startInternal
严重: Context [/17.10] startup failed due to previous errors\

出现这样的错误怎么解决?我直接使用的您的代码
44 楼 henu_qiuyu 2016-06-07  
赞一个,很详细。并且能够正确运行
43 楼 sjhdream 2016-03-11  
limingnihao 写道
shenselongge 写道
在步骤2.1时,添加src/main/java等source folder时报错: The folder is already a source folder.但是这些文件夹在硬盘上确实不存在啊。
楼主能否指点下迷津啊?

在属性Java Build Path的source,应该报错了,把你物理上没有的删了,重新创建就好了。



  已经解决
42 楼 wejack639 2016-02-18  
很详细,学习了,谢谢
41 楼 Daemon_Liu 2016-02-17  
总结的很好,已收藏
40 楼 巴比奇 2015-12-27  
楼主总结的不错,源码实例下载:
http://blog.sina.com.cn/s/blog_150df94af0102vngn.html
39 楼 xuanfengwu 2015-12-02  
我将maven安装配置好后,编程pom.xml引入依赖关系是出现“Repository search".
Java heap space 是因为我的jvm没有配置合适吗?
38 楼 limingnihao 2015-08-17  
shenselongge 写道
在步骤2.1时,添加src/main/java等source folder时报错: The folder is already a source folder.但是这些文件夹在硬盘上确实不存在啊。
楼主能否指点下迷津啊?

在属性Java Build Path的source,应该报错了,把你物理上没有的删了,重新创建就好了。
37 楼 shenselongge 2015-08-03  
在步骤2.1时,添加src/main/java等source folder时报错: The folder is already a source folder.但是这些文件夹在硬盘上确实不存在啊。
楼主能否指点下迷津啊?
35 楼 阿萨姆 2015-02-04  
[size=small][/size]撒旦撒
34 楼 crab530143383 2015-01-13  
  
写的很好,初学者很实用,谢谢分享!!
33 楼 夕墨 2014-10-09  
霸气  支持 赞一个  谢谢
32 楼 tomtrije 2014-09-24  
第一次在iteye顶文章,不是因为文章深度,而是够细腻全面,又是用最佳的方式。
31 楼 luo_jun_lan 2014-09-24  
想请问一下,一个以前建好的项目,比如spring的示例项目petclinic,怎样用maven对其进行管理和部署?
30 楼 vinceall 2014-09-04  
vinceall 写道
可以使用,只不过提示找不到DispatcherServlet,多谢lz

少依赖了一个spring-webmvc的包哈~
29 楼 vinceall 2014-09-04  
可以使用,只不过提示找不到DispatcherServlet,多谢lz
28 楼 javaliuliu 2014-07-11  
3.1 在pom.xml中添加所需要的jar包
使用Maven POM editor打开项目中的pom.xml文件

操作到这一步时同样会有些问题,比如eclipse中没有Maven POM editor。
解决方案:
http://www.micmiu.com/software/build/eclipse-m2e-plugins/
如果你是手工link安装的maven eclipse插件可能会找不到pom editor
1.先下载确实的两个jar包
2.把jar包放入eclise根目录的dropins下重启即可。
27 楼 javaliuliu 2014-07-11  
javaliuliu 写道
2.4 设置部署程序集(Web Deployment Assembly)
我的eclipse左侧这一步没有Web Deployment Assembly选项怎么办啊??

这个问题,我刚才找到一个答案:
右击工程属性,找到Project Facets,选择Dynamic Web Module,2.5
点击apply。这样把这个maven工程转换成了web工程
这样就有了,但同时会多出一个WebContent文件夹,不知道是否该删除。
26 楼 javaliuliu 2014-07-11  
2.4 设置部署程序集(Web Deployment Assembly)
我的eclipse左侧这一步没有Web Deployment Assembly选项怎么办啊??

相关推荐

    基于Eclipse构建Maven的SpringMVC项目技术文档

    ### 基于Eclipse构建Maven的SpringMVC项目技术文档 #### 一、引言 在现代软件开发过程中,Maven作为一种自动化构建工具,因其便捷性与灵活性被广泛应用于Java项目的构建与管理中。SpringMVC作为Spring框架的一个...

    使用maven构建springMVC项目

    - **MyEclipse与Maven的兼容性问题**:文章提到使用MyEclipse构建Maven项目可能会遇到一些问题,比如资源文件没有被正确发布到Tomcat服务器,这可能是由于MyEclipse对Maven的支持不够完善所致。 #### 标签解析与...

    使用 eclipse oxygen maven 搭建 springmvc mybatis druid 的增删改框架代码

    在本项目中,我们主要探讨如何使用Eclipse Oxygen和Maven构建一个基于SpringMVC、MyBatis和Druid的数据访问层(DAO)框架。这个框架提供了基础的增删改查(CRUD)功能,是Java Web开发中的常用组合。下面我们将详细...

    使用Eclipse构建Maven的Spring MVC项目的源代码

    本文将详细解析如何使用Eclipse构建一个基于Maven的Spring MVC项目,并探讨相关知识点。 首先,Maven是一个强大的项目管理和构建工具,它通过依赖管理和项目信息管理,使得开发者可以更高效地构建项目。Maven使用一...

    eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建

    本项目"eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建"就是一个典型的Java Web开发实例,它利用了SpringMVC作为控制层,Maven作为项目构建工具,Mybatis作为数据持久层框架,以及MySQL作为数据库管理系统。...

    Eclipse-Maven部署SpringMVC实例Demo

    Eclipse作为强大的集成开发环境(IDE),Maven作为项目管理和构建工具,SpringMVC则是Spring框架的一部分,用于构建高性能、灵活的Web应用程序。本教程将详细讲解如何使用Eclipse和Maven来部署一个基于SpringMVC的...

    使用Maven构建SpringMVC项目

    标题中提到的知识点是“使用Maven构建SpringMVC项目”,这意味着接下来的内容将详细说明如何利用Maven这一项目管理工具来搭建基于SpringMVC框架的Java Web项目。SpringMVC是Spring框架的一个模块,用于实现MVC...

    eclipse+Maven+SpringMVC框架的开发项目基础

    在"eclipse+Maven+SpringMVC"项目中,Maven负责管理项目的依赖关系,确保所有所需的库都能正确引入,并且能够自动化构建项目,包括编译、测试、打包等步骤。 接下来,SpringMVC是Spring框架的一部分,用于构建Web...

    Spring/SpringMVC/Hibernate框架模板,使用mysql数据库,使用eclipse和maven;附带sql文件

    本项目结合了这三个框架,利用MySQL作为数据库,Eclipse作为开发IDE,Maven作为项目管理和构建工具,为开发者提供了一个完整的开发模板。 1. **Spring框架**:Spring是核心的Java企业级应用框架,提供了依赖注入...

    Maven 构建SpringMVC项目学习笔记

    本文主要介绍了如何使用Maven构建一个SpringMVC项目,并涵盖了构建过程、配置步骤和SpringMVC的核心配置。以下是对各个部分的详细解释: 1. **Maven与SpringMVC背景介绍** Maven是一个强大的项目管理工具,它能够...

    eclipse+maven+springmvc+spring+mybatis案例附带mysql数据库

    【标题】"eclipse+maven+springmvc+spring+mybatis案例附带mysql数据库"是一个典型的Java Web开发项目,它涵盖了多个关键的技术栈,包括Eclipse IDE、Maven构建工具、Spring MVC作为MVC框架、Spring核心框架以及...

    SpringMvc_Maven.zip_java项目_maven_maven springmvc_springmvc maven

    1. **创建 Maven 项目**:首先,你需要使用 Maven 的 archetype 命令或者 IDE(如 IntelliJ IDEA 或 Eclipse)的向导创建一个新的 Maven 项目。 2. **添加依赖**:在 POM.xml 文件中,你需要添加 Spring MVC 和其他...

Global site tag (gtag.js) - Google Analytics