对于struts2和struts1系列来说,配置处理方法上有了很大的不同,会搭建struts1系列的环境人,就未必会搭建struts2的环境,阿堂刚用时,也出现了一些问题,为了让想使用struts2的新手朋友,能尽快上手,这里,阿堂就搭建一个struts2环境及布署一个简单的应用来说明
(注意,要用tomcat5.5环境或更高环境,如果是tomcat5.0环境,会报404错务,一定要注意啦)
一.增加struts2支持
1.新建一个web项目,如Struts2Demo
2.必须将struts2框架的核心类库增加到web应用中。就是将struts2-core-2.0.6.jar,xwork-2.01.jar,ognl-2.6.11.jar,freemarker-
2.3.8.jar,commons-logging-1.1.jar等struts2框架的核心类库复制到web应用的lib路径下,也就是%workspace%项目名\WebRoot\WEB-INF\lib
路径下
3.修改Struts2Demo项目下的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">
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
经过上面三步,该web项目已经具备struts2的配置环境了
二.部署struts2的应用
1.在部署之前,先在WebRoot目录下新建一些jsp文件.如login.jsp文件(welcome.jsp,error.jsp)
(s是用的struts2的标签库)
login.jsp文件内容如下
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:form action="Login">
<s:textfield name="username" key="user"/>
<s:password name="password" key="pass"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
welcome.jsp文件内容如下
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="succPage"/></title>
</head>
<body>
<s:text name="succTip">
<s:param>${sessionScope.user}</s:param>
</s:text><br>
</body>
</html>
error.jsp文件内容如下
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="errorPage"/></title>
</head>
<body>
<s:text name="failTip"/>
</body>
</html>
2.此处由于用到了国际化资源文件中的key,所以,要增加该应用所需的国际化资源文件,如struts.properties,在该文件中增加如下一行代码
struts.custom.i18n.resources=messageResource
(messageResource_zh_CN.properties资源文件和struts.properties,struts.xml都放在classes目录下面,实际上是放在与src同一目录下,发
布后会自动编译放在classes目录下了)
messageResource_zh_CN.properties文件内容如下
loginPage=登陆页面
errorPage=错误页面
succPage=成功页面
failTip=对不起,您不能登录!
succTip=欢迎,${0},您已经登录!
viewLink=查看作者已出版的图书
bookPageTitle=作者已出版的图书
bookName=书名:
user=用户名
pass=密 码
login=登陆
user.required=用户名必须输入!
pass.required=密码必须输入!
3.增加应用的Action
如 LoginAction类
package project;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction extends ActionSupport
{
private String username;
private String password;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String execute() throws Exception
{
if (getUsername().equals("scott")
&& getPassword().equals("tiger") )
{
ActionContext.getContext().getSession().put("user" , getUsername());
return SUCCESS;
}
else
{
return ERROR;
}
}
}
4.增加一个对应的配置文件struts.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="project" extends="struts-default">
<action name="login" class="project.LoginAction">
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
至此,整个StrutsDemo对应的Struts2应用完全建立了.
下面看示意图