基於Struts2驗證框架的輸入驗證
Struts2框架中定義了驗證的方法,要驗證那個Action,只需要在與Action同級目錄下建立Action名稱-validation.xml,由Struts2自己完成驗證,大大簡化了驗證的
1;jsp(登入)
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Struts2攔截器的使用</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<h2>使用者登入</h2><hr/>
<s:form action="loginChecks.action" method="post">
<s:textfield name="name" label="使用者名稱"></s:textfield>
<s:password name="pass" label="密碼"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
2:web.xml
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Struts2攔截器的使用</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<h2>使用者登入</h2><hr/>
<s:form action="loginChecks.action" method="post">
<s:textfield name="name" label="使用者名稱"></s:textfield>
<s:password name="pass" label="密碼"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
3:Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<package name="struts2login" extends="struts-default">
<action name="loginoneCheck" class="com.test.action.OneAction">
<result name="success" >/sucesses.jsp</result>
<result name="login">/loginone.jsp</result>
</action>
<action name="loginChecks" class="com.test.action.StrutsYanZheng">
<result name="success" >/sucesses.jsp</result>
<result name="login">/loginone.jsp</result>
</action>
<action name="registerOneCheck" class="com.test.action.OneAction">
<result name="success" >/sucesses.jsp</result>
<result name="input">/inputone.jsp</result>
</action>
<action name="login" class="com.test.action.LoginAction">
<result name="success" >/result.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="login3" class="com.test.action.Login3Action">
<result name="success">/success.jsp</result>
<result name="input">/check2.jsp</result>
</action>
<action name="input" class="com.test.action.InputAction">
<result name="success" >/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="message" class="com.test.action.InputAction">
<result name="success" >/message.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
<package name="demo1" extends="struts-default">
<action name="addRegister" class="com.test.action.RegisterAction">
<result name="success">/showRegInfo.jsp</result>
</action>
<action name="addRegister1" class="com.test.action.Register1Action">
<result name="success">/showRegInfo1.jsp</result>
</action>
<action name="convert" class="com.test.action.ConvertAction">
<result name="success">/convertResult.jsp</result>
</action>
</package>
<package name="hellointerceptor" extends="struts-default">
<interceptors>
<interceptor name="helloInterceptor" class="com.test.action.HelloInterceptor">
</interceptor>
</interceptors>
<action name="helloaction" class="com.test.action.HelloAction">
<result name="success">/success1.jsp</result>
<result name="input1">/input1.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="helloInterceptor"></interceptor-ref>
</action>
</package>
<package name="check1interceptor" extends="struts-default">
<interceptors>
<interceptor name="logincheckinterceptor" class="com.test.action.CheckInterceptor">
</interceptor>
</interceptors>
<action name="login2action" class="com.test.action.UserAction">
<result name="success">/loginsuccess.jsp</result>
<result name="error">/loginerror.jsp</result>
<result name="login">/login2.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="logincheckinterceptor"></interceptor-ref>
</action>
</package>
</struts>
4:Action類
package com.test.action;
import com.opensymphony.xwork2.ActionSupport;
public class StrutsYanZheng extends ActionSupport{
private static final long serialVersionUID = 1L;
private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
5;Action同級目錄下的-validation.xml由框架完成驗證校驗
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必須輸入使用者名稱!</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必須輸入密碼!</message>
</field-validator>
</field>
</validators>
6:jsp(驗證成功後返回)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>驗證成功</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<h2>驗證正確,登陸成功</h2>
</body>
</html>