标题struts2继承ActionSupport类示例 有图有代码!!
ActionSipport是Action接口的默认实现类,包含许多默认方法,提供了许多功能,例如,获取国际化资源,数据校验,默认处理方法等。可以直接继承ActionSupport类而不用去实现Action接口来简化开发。
示例代码:
jsp页面 login,jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; utf-8">
<title>Insert title here</title>
<style type="text/css">
ul,li {
list-style-type:none;
margin:0px;
float:left;
}
</style>
</head>
<body>
<form action="helloworldAction.action" method="post">
<input type="hidden" name="submitFlag" value="login"/>
<div>
<font color=red><s:fielderror fieldName="account"/></font>
<br/>
账号:<input type="text" name="account">
</div>
<div>
<font color=red><s:fielderror fieldName="password"/></font>
<br/>
密码:<input type="password" name="password">
</div>
<input type="submit" value="提交">
</form>
</body>
</html>
这是一个简单的登陆界面根据业务逻辑需要进行数据验证 代码如下
package com.action;
import com.opensymphony.xwork2.ActionSupport;
public class helloAction extends ActionSupport {
private String account;
private String password;
private String submitFlag;
public String execute() throws Exception {
this.businessExecute();
return "toWelcome";
}
public void validate(){
if(account==null || account.trim().length()==0){
this.addFieldError("account", "账号不可以为空");
}
if(password==null || password.trim().length()==0){
this.addFieldError("password", "密码不可以为空");
}
if(password!=null && !"".equals(password.trim()) && password.trim().length()<6){
this.addFieldError("password", "密码长度至少为6位");
}
}
/**
* 示例方法,表示可以执行业务逻辑处理的方法,
*/
public void businessExecute(){
System.out.println("用户输入的参数为==="+"account="+account+",password="+password+",submitFlag="+submitFlag);
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSubmitFlag() {
return submitFlag;
}
public void setSubmitFlag(String submitFlag) {
this.submitFlag = submitFlag;
}
}
在Action类中覆盖实现validate方法,validate方法会在执行系统的excute方法之前执行。在validate方法内部,对请求传递过来的数据进行校验 。validate方法是没有返回值的,那么当验证后,如果有数据没有通过验证,那么会自动跳转回到该action中名称为input的result所配置的页面。这就需要在struts.xml中的Action配置里面,添加一个名称为input的result配置,
代码如下
<?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>
<constant name="struts.devMode" value="true" /> <!-- 设置了程序的运行模式 -->
<constant name="struts.locale" value="zh_CN"/> <!-- 设置程序运行所使用的locale -->
<constant name="struts.i18n.encoding" value="utf-8"/> <!-- 设置程序运行时用的编码方式 -->
<!-- 正确设置后面两个参数,就可以解决Struts2的中文问题了。 -->
<package name="helloworld" namespace="/" extends="struts-default">
<action name="helloworldAction" class="com.action.helloAction">
<result name="toWelcome">/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
这时错误信息就会被传到login,jsp页面,当然前面我们页面代码中的<s:fielderror/>标签就是在相应的字段处输出错误信息
效果展示图