转载自:http://blog.csdn.net/j903829182/article/details/38128777
在我学mavne的时候,遇到了很多的问题,不知道怎么用maven进行包的管里,后来在网上查看了很多的资料,借鉴了其他的博客资料,但是看其他的博客写的不是很详细,所以我在前人的基础上写下我自己学习maven管理struts2项目的过程和步骤,希望对初学者有所帮助,也对于我自己以后在使用maven带来方便。本博文参照的博文是:http://blog.csdn.net/yuguiyang1990/article/details/8798052(也比较详细了)
maven里面包的版本格式网址:
http://mvnrepository.com/
http://search.maven.org/
1.在windows(我的事window8)下面输入cmd,进入到dos界面,切换到你存放仓库的目录的上一级目录(方便管理,放在其他地方也是可以的,你在哪个目录下操作,生成的maven项目就在哪个目录下面),我的仓库目录是G:\maven\repository(repository存放maven下载的包),我进入到G:\maven目录里面输入mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp,创建web的maven项目,如下:
![](https://img-blog.csdn.net/20140726094922531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.输入groupid(组织id),artifactId(项目的名字),version或者采用默认的设置(直接回车),
![](https://img-blog.csdn.net/20140726095251156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
输入Y,项目就生成了
![](https://img-blog.csdn.net/20140726095439968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在我的G:\maven目录下面可以看到maven3的项目
3.把生成的maven项目导入myeclipse(我的是myeclipse2013)
打开myeclipse,选择File--〉import-->Maven4Myeclipse--->Existing Maven Projects-->在Root Directory后面点击Browse,找到上面生成的maven3项目,我的是在G:\maven目录下面,---〉确定----〉next---〉Finish
到此为止maven生成的web项目已经导入到myeclipse里面了,但是项目的目录结构还有问题,需要修改。
4.修改项目的目录结构:
需要在src/main目录下创建java文件夹(右击src/main目录的main目录,选择new--〉Folder--〉输入Folder name为java--->Finish完成创建)
需要在src目录下面创建test目录,创建方法如上,接着在src/test目录下面创建java目录和resources
目录结构修改后如下所示:
![](https://img-blog.csdn.net/20140726102315234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5.配置工程属性:
右击项目选择Build Path--〉Configure Build Path--〉选择source
双击每个文件夹的Output folder,选择路径
src/main/java,src/main/resources,选择target /classes;
src/test/java ,src/test/resources, 选择target/test-classes;
选择好后如下
![](https://img-blog.csdn.net/20140726104146484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
修改jdk版本:选择 libraries 标签,选中JRE library,单击Edit按钮选择合适的jdk版本,我用的是自己的jdk1.7的所以我选择的是jdk1.7,Finish
![](https://img-blog.csdn.net/20140726104939916?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后单击ok,
![](https://img-blog.csdn.net/20140726105103875?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这时候还可能报错,说jdk的DescriptionResourcePathLocationType Java compiler level does not match the version of the installed Java project facet.maven3 Maven WebappUnknownFaceted Project Problem (Java Version Mismatch),项目前面有个小的红叉,别着急,接下来告诉你怎么处理,
解决办法:右击项目名--〉选择properties--〉点击Myeclipse---〉点击Project Facts--〉找到java,选择1.7版本,---〉apply---〉ok问题就解决了
目录结构如下:
![](https://img-blog.csdn.net/20140726110654697?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
6.经过上面的步骤,基本上maven管理的web就配置好了,接下来就来用maven配置struts
首先右击项目选择Maven4Meclipse ---〉Update Project,现在你看项目的Mave Dependencies里面没有struts2支持的jar包,
![](https://img-blog.csdn.net/20140726110012029?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所以需要通过maven的配置来倒入struts2的jar包
7.配置pom.xm文件,添加struts2的依赖,这里只需要在pom.xml中添加一个struts-core的依赖即可
- <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.demo</groupId>
- <artifactId>maven2</artifactId>
- <packaging>war</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>maven2 Maven Webapp</name>
- <url>http://maven.apache.org</url>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
-
-
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>2.3.1</version>
- </dependency>
-
- </dependencies>
- <build>
- <finalName>maven2</finalName>
- </build>
- </project>
之后你clean下项目,
右击项目选择Maven4Meclipse ---〉Update Project,maven会自动从网上下载struts需要的其他的依赖包,下载后可以看到
![](https://img-blog.csdn.net/20140726110909734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
可以看到需要的struts2的一些开发包已经下载下来了
8.有了struts2支持的包,接下里就写acition
在src/main/java目录下面创建一个包后,在这个包里面创建一个action的类,类的内容如下
- package com.wj.demo.action;
-
- import com.opensymphony.xwork2.ActionSupport;
-
- public class UserAction extends ActionSupport {
-
- private String name;
- private String password;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
-
-
-
- public String login_input()throws Exception{
-
-
- return SUCCESS;
- }
-
- public String login()throws Exception{
- System.out.println("name="+name);
- System.out.println("password="+password);
- return SUCCESS;
- }
- }
9.配置struts.xml。新建文件struts.xml,注意一定要放在src/main/resources下。内容如下:
- <?xml version="1.0" encoding="UTF-8" ?>
-
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
- "http://struts.apache.org/dtds/struts-2.3.dtd">
-
-
- <struts>
-
- <constant name="struts.i18n.encoding" value="utf-8"></constant>
-
- <constant name="struts.devMode" value="true" />
-
- <package name="default" extends="struts-default">
- <!-- <action name="input" class="com.wj.demo.action.UserAcion" method="login_input">
- <result name="success">/login.jsp</result>
- </action> -->
-
- <action name="login" class="com.wj.demo.action.UserAction" method="login">
- <result name="success">/login_success.jsp</result>
- </action>
- </package>
-
-
- </struts>
10.配置web.xml文件,进行请求的过滤
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
- <web-app>
- <display-name>Archetype Created Web Application</display-name>
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
11.在webapp目录下写jsp文件
写login.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>maven and struts login</title>
-
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
-
-
-
-
- </head>
-
- <body>
- <form action="login" method="post">
- username:<input type="text" name="name"/><br>
- password:<input type="password" name="password"/><br>
- <input type="submit" value="登入">
- </form>
- <%
- System.out.println(path+"\n");
- System.out.println(basePath);
- %>
- </body>
- </html>
写login_success.jsp文件
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ taglib uri="/struts-tags" prefix="s" %>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>login success</title>
-
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
-
-
-
-
- </head>
-
- <body>
- 登入成功!!!. <s:property value="name"/><br>
- </body>
- </html>
12.完整的项目结构
![](https://img-blog.csdn.net/20140726112240090?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20140726112021031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
到此为止,项目基本已经写完了,
13.发布项目,启动tomcat
打开浏览器,输入访问路径http://localhost:8080/maven2/login.jsp
![](https://img-blog.csdn.net/20140726124900250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
登入:
![](https://img-blog.csdn.net/20140726124741640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgyOTE4Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
后台输出数据:
http://localhost:8080/maven2/
name=hello
password=world
至此使用maven管理struts2的bao,已经写完。
总结:struts2需要的包,利用maven在pom.xml文件里面配置就好了,其他的web操作和普通的web操作一样