依赖包
-- jakarta-oro.jar:提供了一组处理文本的类,具有文本替换、过滤和分割等功能
-- commons-validator.jar:提供了一个简单的、可扩张的验证框架,包含了通用的验证方法和验证规则
基于XML配置,在WEB-INF目录下
-- validator-rules.xml:包含了一组通用的验证规则,对所有的Struts应用都适用
-- validation.xml:validator框架的第二个配置文件。这个是针对于某个具体的Struts应用,需要开发人员来创建,它可以为应用中的ActionForm配置所需要的验证规则,取代ActionForm类中以编程方式来实现验证逻辑
在struts-config.xml中配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.cong.web.LoginForm"></form-bean> </form-beans> <action-mappings> <action path="/toLogin" name="loginForm" type="com.cong.web.LoginAction" parameter="method" scope="request"> <forward name="view" path="/WEB-INF/jsp/login.jsp" /> </action> <!-- validate="true" 开启验证 --> <action path="/login" input="/login" name="loginForm" type="com.cong.web.LoginAction" parameter="method" validate="true" scope="request"> <forward name="view" path="/WEB-INF/jsp/main.jsp" /> </action> </action-mappings> <!-- 国际化资源文件 --> <message-resources parameter="com.cong.login"></message-resources> <!-- 加入验证插件 --> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validator/validator-login.xml" /> </plug-in> </struts-config>
LoginAction.java
public class LoginAction extends DispatchAction {
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
return mapping.findForward("view");
}
public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//TODO print
System.out.println("into login");
LoginForm loginForm = (LoginForm)form;
System.out.println(loginForm.getUserName());
System.out.println(loginForm.getPassword());
return mapping.findForward("view");
}
}
LoginForm.java
public class LoginForm extends ActionForm {
private static final long serialVersionUID = 1L;
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;
}
}
web.xml
<web-app xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"> <display-name>Login</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
validator-login.xml
<formset> <form name="loginForm"> <field property="userName" depends="required"> <arg0 key="login.label.userName" /> <!-- <msg name="required" key="error.userName" /> --> </field> <field property="password" depends="required,minlength"> <arg0 key="login.label.password" /> <arg1 key="${var:minlength}" resource="false" /> <!-- <msg name="required" key="error.password" /> <msg name="minlength" key="error.password.minlength" /> --> <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> </field> </form> </formset>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<bean:define id="loginForm" name="loginForm" type="com.cong.web.LoginForm"></bean:define>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<html:form action="login.do?method=login">
<div><html:errors/></div>
<table>
<tr>
<td><bean:message key="login.label.userName" /></td>
<td><html:text property="userName" maxlength="10" ></html:text></td>
</tr>
<tr>
<td><bean:message key="login.label.password" /></td>
<td><html:password property="password" maxlength="10" ></html:password></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="button" value="提交" οnclick="javascript:submitForm();" />
</td>
</tr>
</table>
</html:form>
<script language="Javascript">
function submitForm()
{
if (validateLoginForm(document.loginForm)) {
document.loginForm.submit();
}
}
</script>
<html:javascript formName="loginForm" />
</body>
</html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <!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=UTF-8"> <title>main.jsp</title> </head> <body> <table> <tr> <td>userName:</td> <td><bean:write name="loginForm" property="userName" /></td> </tr> <tr> <td>password:</td> <td><bean:write name="loginForm" property="password" /></td> </tr> </table> </body> </html>