学struts2也有那么一阵子了,感觉还不错。同struts1.x相比较起来,struts2要方便得多。从配置上来看,struts2的页面明显要简洁一些。在struts1.x中,每一个jsp页面,对应于一个Form表单,转到后台去处理,就得对应于一个form和一个actionForm,form主要对应表单的每个属性,以及get和set方法,还可以使用validate进行验证,但我们更多的,是采用验证框架去处理,struts1.x的验证框架总感觉比较复杂,需要一些正则表达式方面的知识。而struts2则没有对应的form和actionForm,它把两个东西合在一块了,只有一个action,换句话说,一个页面表单提交过来的数据,对应于一个form,这样感觉更"像"mvc一点,思路也很清晰。下面给出一个struts2入门级的例子。
注:开发工具为myEclipse
login.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login</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="submit">
<input type="reset" value="reset">
</form>
</body>
</html>
LoginAction.java
package action;
import com.opensymphony.xwork2.ActionSupport;
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;
}
//在struts2中,execute()方法是自动执行的
public String execute() throws Exception{
if("zc".equals(this.getUsername().trim())&&"123".equals(this.getPassword().trim())){
return "success";
}else{
/*系统默认的页面是input,也就是login.jsp,可以参看后面的struts.xml配置, 如果用户名和密码输入错误,则返回原来的页面,并给出错误提示*/
this.addFieldError("username","username or password is not correct");
return "input";
}
}
public void validate(){
if("".equals(this.getUsername())||null==this.getUsername().trim()){
this.addFieldError("username","username can not be null");
}
if("".equals(this.getPassword())||null==this.getPassword().trim()){
this.addFieldError("password","password can not be null");
}
}
}
result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>result</title>
</head>
<body>
<%=request.getParameter("username")%><br>
<%=request.getParameter("password")%>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!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="action.LoginAction">
<result name="success">/result.jsp</result><!-- 页面验证成功,跳转到result.jsp-->
<result name="input">/login.jsp</result><!-- 页面验证失败,返回到login.jsp-->
</action>
</package>
</struts>
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">
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
整个程序的页面逻辑非常简单,用户从login.jsp登陆,如果用户名不是zc 或密码不是123,则系统返回login.jsp并给出错误信息。呵呵,算是我的第一个struts2程序吧。
PS:本人刚刚学struts2不久,可能上面的认识有误,欢迎朋友们指正!加油!