前面我们已经提到了在Eclipse中怎么配置struts2和Eclipse中怎么配置maven。如今要将这两者结合起来,利用maven的优点,使得struts2项目更易管理。
关于struts2环境搭建和maven配置参见扩展阅读。
利用maven创建web项目
首先在File中选择Maven Project
接着选择工作空间路径,这里我选择默认路径 Paste_Image.png
选择创建webapp项目
Paste_Image.png根据项目实际输入Group id和Artifact id
Paste_Image.png最后finish,这样就成功创建了一个maven的web项目。项目创建成功的目录树如下 Paste_Image.png
但是,这时我们注意到Java Resources目录下没有出现 src/main/java 和 src/test/java两个目录,这两个目录是存放java源代码的目录。解决办法如下:
- 右键项目->Build Path->Configure Build Path
- 进入Order and Export目录,勾选两个缺失的库
- 保存修改并应用
可以看到Java Resources目录下出现了src/main/java和src/test/java目录。这样才算最终成功创建了maven的web项目。
maven的struts2项目实例
- 导入struts2库
在maven中导入库不再需要你手动复制库文件,只需要你修改pom.xml,maven会自动下载相应的库到本地。
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.demo</groupId>
<artifactId>MavenDemo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>MavenDemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
<build>
<finalName>MavenDemo</finalName>
</build>
</project>
一共导入了三个依赖包。分别是junit、javax.servlet、struts2-core这三个包。
修改后,别忘了更新Maven项目。右键项目->Maven->Update Project,然后就可以看到maven已经将依赖包下载到本地了。
- 添加动作类(Action)
前面提到src/main/java是用来存放java代码的,这里我们在里面放一个简单的动作类。
登陆动作,只有UserName的getter和setter
package com.demo;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
public String Name;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
- 添加视图(View)
视图文件存在webapp目录下,这里我们也只需创建两个视图。
首页视图,用户输入姓名,并提交
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<h2>Hello World!</h2>
<form action="loginAction">
姓名<input type='text' name="Name"><input type="submit" value="提交">
</form>
</body>
</html>
结果视图,返回用户姓名
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<!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>Welcome</title>
</head>
<body>
Hello <s:property value="Name" />
</body>
</html>
- 配置struts.xml
这里在src/main/resources中创建一个struts.xml文件,并在其中进行修改。
创建一个动作类到视图的一个映射
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<constant name="struts.locale" value="zh_CN"></constant>
<package name="hurricane" extends="struts-default">
<action name="loginAction" class="com.demo.LoginAction" method="execute">
<result>
/result.jsp
</result>
</action>
</package>
</struts>
- 最后修改web.xml
web.xml是一个任何对struts2请求的入口点。Struts2应用程序的入口点是在web.xml中定义的过滤器。这些都需要在web.xml中进行声明
web.xml的代码如下:
<web-app>
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
注:不同版本的struts2这里对应的过滤器不同,可能需要针对专门查看专门的struts2说明。
- 运行项目实例
右键项目->Run->Run as Server就可以看到项目运行情况,运行情况如下:
至此完成了Maven中struts2实例的配置。
网友评论