struts2配置文件检验,想要实现校验,action必须继承自ActionSupport类,如下为简单登录注册校验。
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>login</title>
<meta charset="utf-8">
</head>
<body>
<!-- <s:fielderror></s:fielderror> -->
<form action="login" methor="get">
<input type="hidden" name="user.type" value="login"/>
<p>
<input type="text" name="user.name" placeholder="用户名"/>
<s:fielderror><s:param>user.name</s:param></s:fielderror>
</p>
<p>
<input type="password" name="user.pass" placeholder="密码"/>
<s:fielderror><s:param>user.pass</s:param></s:fielderror>
</p>
<p>
<input type="submit" value="submit"/>
</p>
</form>
<a href="reg.jsp">reg.jsp</a>
</body>
</html>
reg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>reg</title>
<meta charset="utf-8">
</head>
<body>
<!-- <s:fielderror></s:fielderror> -->
<form action="reg" method="get">
<input type="hidden" name="user.type" value="reg"/>
<p>
<input type="text" name="user.name" placeholder="用户名"/>
<s:fielderror><s:param>user.name</s:param></s:fielderror>
</p>
<p>
<input type="password" name="user.pass" placeholder="密码"/>
<s:fielderror><s:param>user.pass</s:param></s:fielderror>
</p>
<p>
<input type="text" name="user.age" placeholder="年龄"/>
<s:fielderror><s:param>user.age</s:param></s:fielderror>
</p>
<p>
<input type="text" name="user.birth" placeholder="出生日期"/>
<s:fielderror><s:param>user.birth</s:param></s:fielderror>
</p>
<p>
<input type="submit" value="submit"/>
</p>
</form>
<a href="login.jsp">login.jsp</a>
</body>
</html>
result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>RegAndLogin_result</title>
<meta charset="utf-8">
</head>
<body>
<%
String form_action = request.getParameter("user.type");
if(form_action=="login"||form_action.equals("login")){
%>
<p>用户:<s:property value="user.name"/></p>
<p>密码:<s:property value="user.pass"/></p>
<%
}else if(form_action=="reg"||form_action.equals("reg")){
%>
<p>用户:<s:property value="user.name"/></p>
<p>密码:<s:property value="user.pass"/></p>
<p>年龄:<s:property value="user.age"/></p>
<p>出生日期:<s:property value="user.birth"/></p>
<%
}else{
out.print("hello world");
out.print(form_action);
}
%>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="reg_package" extends="struts-default">
<action name="login" class="top.k10000.LoginAction" method="login">
<result name="success">/result.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="reg" class="top.k10000.RegestAction" method="reg">
<result name="success">/result.jsp</result>
<result name="input">/reg.jsp</result>
</action>
</package>
</struts>
User.java
package top.k10000;
import java.util.Date;
public class User {
private String name;
private String pass;
private int age;
private Date birth;
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void setName(String str_name){
this.name = str_name;
}
public String getName(){
return name;
}
public void setPass(String str_pass) {
this.pass = str_pass;
}
public String getPass() {
return pass;
}
public void setAge(int str_age) {
this.age = str_age;
}
public int getAge() {
return age;
}
public void setBirth(Date str_birth) {
this.birth = str_birth;
}
public Date getBirth() {
return birth;
}
}
LoginAction.java
package top.k10000;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// 登录
public String login() throws Exception {
if(this.hasFieldErrors()){
return INPUT;
}else{
System.out.println("login ok!!!");
return SUCCESS;
}
}
}
RegestAction.java
package top.k10000;
import com.opensymphony.xwork2.ActionSupport;
public class RegestAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// 注册
public String reg() throws Exception {
if(this.hasFieldErrors()){
return INPUT;
}else{
System.out.println("reg ok!!!");
return SUCCESS;
}
}
}
在Action所在的包下创建一个对此Action进行校验的xml文件,文件名为XXXAction-validation.xml,如下
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
<message>用户名必须字母开头,3-14位,由数字字母下划线组合</message>
</field-validator>
</field>
<field name="user.pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
<message>密码必须字母开头,3-14位,由数字字母下划线组合</message>
</field-validator>
</field>
</validators>
RegestAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="user.name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
<message>用户名必须字母开头,3-14位,由数字字母下划线组合</message>
</field-validator>
</field>
<field name="user.pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
<field-validator type="regex">
<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
<message>密码必须字母开头,3-14位,由数字字母下划线组合</message>
</field-validator>
</field>
<field name="user.age">
<field-validator type="required">
<param name="trim">true</param>
<message>年龄不能为空!</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄取值范围在${min}到${max}之间</message>
</field-validator>
</field>
<field name="user.birth">
<field-validator type="required">
<param name="trim">true</param>
<message>出生日期不能为空!</message>
</field-validator>
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message>格式不正确yyyy-MM-dd</message>
</field-validator>
</field>
</validators>
运行:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/151227.html