struts2入门精讲
虽然Struts 2提供了与Struts 1的兼容,但已经不是Struts 1的升级。对于已有Struts 1开发经验的开发者而言,Struts 1的开发经验对于Struts 2并没有太大的帮助;相反,对于已经有WebWork开发经验的开发者而言,WebWork的开发经验对Struts 2的开发将有很好的借鉴意义。
1.从用户请求开始<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<!-- 提交请求参数的表单 -->
<form action="Login.action" method="post">
<table align="center">
<caption><h3>用户登录</h3></caption>
<tr>
<!-- 用户名的表单域 -->
<td>用户名:<input type="text" name="username"/></td>
</tr>
<tr>
<!-- 密码的表单域 -->
<td>密 码:<input type="text" name="password"/></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="登录"/><input
type="reset" value="重填" /></td>
</tr>
</table>
</form>
</body>
</html>
注意:该表单的action属性:login.action,这个action属性比较特殊,它不是一个普通的Servlet,也不是一个动态JSP页面。当表单提交给login.action时,Struts 2的FilterDispatcher将自动起作用,将用户请求转发到对应的Struts 2 Action。
Struts 2 Action默认拦截所有后缀为.action的请求。
2.创建web应用
(1)在任意目录新建一个文件夹,笔者将以该文件夹建立一个Web应用。
(2) 在第1步所建的文件夹内建一个WEB-INF文件夹。
(3) 进入Tomcat,或任何Web容器内,找到任何一个Web应用,将Web应用的WEB-INF下的web.xml文件复制到第2步所建的WEB-INF文件夹下。
(4)修改复制的web.xml文件,将该文件修改成只有一个根元素的XML文件,修改后的web.xml文件代码如下:
<?xml version="1.0" encoding="GBK"?>
<!-- web-app是Web应用配置文件的根元素,指定Web应用的Schema信息 -->
<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">
</web-app>
(5) 在第2步所建的WEB-INF路径下,新建两个文件夹:classes和lib,它们分别用于保存单个*.class文件和JAR文件。
经过上面步骤,已经建立了一个空Web应用。将该Web应用复制到Tomcat的webapps路径下,该Web应用将可以自动部署在Tomcat中。
该Web将有如下文件结构:
Struts2qs
|-WEB-INF
| |-classes
| |-lib
| |-web.xml
|-login.jsp
3.实现控制器类
Struts 2下的控制器不再像Struts 1下的控制器,需要继承一个Action父类,甚至可以无需实现任何接口,Struts 2的控制器就是一个普通的POJO。
public class LoginAction{
//下面是Action内用于封装的两个属性
private String username;
priavte String password;
//username属性对应的getter方法
public String getUsername()
{
return username;
}
//username属性对应的setter方法
public void setUsername(String username)
{
this.username = username;
}
//password属性对应的getter方法
public String getPassword()
{
return password;
}
//password属性对应的setter方法
public void setPassword(String password)
{
this.password = password;
}
//处理用户请求的execute()方法
public String execute() throws Exception{
if(getUsername().equals("niu") && getPassword().equals("meng")){
return "success";
}else{
return "error";
}
}
}
Struts 2的Action就是一个包含execute方法的普通Java类,该类里包含的多个属性用于封装用户的请求参数。
4.配置Action
上面定义了Struts 2的Action,但该Action还未配置在Web应用中,还不能处理用户请求。为了让该Action能处理用户请求,还需要将该Action配置在struts.xml文件中。
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
<!-- Struts 2的Action必须放在指定的包空间下定义 -->
<package name="strutsqs" extends="struts-default">
<!-- 定义login的Action,该Action的实现类为lee.Action类 -->
<action name="Login" class="lee.LoginAction">
<!-- 定义处理结果和资源之间映射关系。 -->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
注:该Action将负责处理向login.action URL请求的客户端请求。该Action将调用自身的execute方法处理用户请求,如果execute方法返回success字符串,请求将被转发到/welcome.jsp页面;如果execute方法返回error字符串,则请求被转发到/error.jsp页面。
5.增加视图资源完成的应用
两个JSP文件分别是error.jsp页面和welcome.jsp页面,将这两个JSP页面文件放在Web应用的根路径下(与WEB-INF在同一个文件夹下)。
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>成功页面</title>
</head>
<body>
您已经登录!
</body>
</html>
总结:这是一个简单的流程用户输入两个参数,即username和password,然后向login.action发送请求,该请求被FilterDispatcher转发给LoginAction处理,如果LoginAction处理用户请求返回success字符串,则返回给用户welcome.jsp页面;如果返回error字符串,则返回给用户error.jsp页面。
Struct2简单的应用
猜你喜欢
转载自n-meng.iteye.com/blog/1045777
今日推荐
周排行