首先,我们来看看struts2框架处理数据的流程:
客户端产生一个HttpServletRequest的请求该请求被提交到一系列的过滤器当中,所有的请求都会被前端控制器截获,再根据映射器来确定调用哪一个action,一旦确定后,控制器就会将处理权委托给action代理,action代理就会调用action类中的方法对请求进行处理,最后将结果转发 到相应的页面中。
下面,我们通过一个一个简单的登录应用来实际体会一下struts2框架的数据流程。
1、创建一个动态web工程,命名为StrutsTest,将编译路径改为WebContent/WEB-INF/classes,在最后一步选择自动添加we.bxml文件(注意,本例使用的是最新版的eclipse开发工具,版本号3.7.1),将struts所需要的jar包复制到WebContent/WEB-INF/lib/下(这里为了方便,全部复制,但一般我们只需复制需要的jar包即可);;
2、创建一个包,命名为com.action,里面用来存放Action类的;
3、在包com.action里面创建一个类,命名为LoginAction,代码如下:
package com.action;
public class LoginAction
{
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("1")&&getPassword().equals("1"))
{
return "success";
}
else
{
return "error";
}
}
}
4、在scr下创建一个xml系统配置文件struts.xml(编译以后将会自动保存到WebContent/WEB-INF/classes目录下),这个文件中的代码如下:
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2" extends="struts-default">
<action name="login" class="com.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
5、修改web.xml中的配置文件,修改后如下所示:
<?xml version="1.0" encoding="GB2312"?>
<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">
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
6、这里我们需要三个页面,分别为登录页面、登录成功页面和登录失败页面,具体代码如下:
login.jsp代码:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!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=GB2312">
<title>Insert title here</title>
</head>
<body>
<form action="login.action" method="post">
username:<input type="text" name="userName"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="提交">
<input type="reset" value="重填">
</form>
</body>
</html>
success.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!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=GB2312">
<title>登录成功</title>
</head>
<body>
<H1><font color="red">登录成功!!</font></H1>
</body>
</html>
Error.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!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=GB2312">
<title>登录失败</title>
</head>
<body>
<H1><font color="red">登录失败!</font></H1>
</body>
</html>
现在我们就可以部署并且运行这个struts2应用程序了。