一、使用验证器
使用Struts2验证框架
•
第一步:编写登录页面login.jsp
–
包含用户名、密码输入框
•
第二步:编写登录成功页面success.jsp
–
显示用户姓名
•
第三步:编写LoginAction类
–
username属性和password属性
–
execute方法返回“success”
•
第四步:编写LoginAction-validation.xml
•
第五步:在struts.xml中配置Action
•
第六步:测试--------
不输入用户名或者只输入一些空格,提交。
这里最麻烦的是idea怎么生成规则校验文件
LoginAction-validation.xml,我网上查了很久都没有找到正经的教程,在这里我提供一种不太靠谱的办法,请读者自行斟酌。如果有现成的
LoginAction-validation.xml文件直接复制粘贴到action包里就行了。
我的
LoginAction类是放在action包下的,所以右击action包 -> New -> XML Config..... -> Struts Config。New FIile 就是 LoginAction-validation
![](https://i-blog.csdnimg.cn/blog_migrate/020423b2a4cd49af11ddaed1562f5338.png)
然后把
LoginAction-validation.xml里面的内容全部删除,替换如下内容。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators></validators>
如果没有什么意外的话,LoginAction-validation.xml的图标应该会变成这样:
这时候规则校验文件LoginAction-validation.xml就创建好了。
接下来直接上代码:
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 String getPassword() {
return password;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
}
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>请输入用户名</message>
</field-validator>
</field>
</validators>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="default" extends="struts-default">
<action name="login" class="action.LoginAction">
<result name="success">success.jsp</result>
<result name="input">login.jsp</result>
</action>
</package>
</struts>
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录界面</title>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
</head>
<body>
<s:form action="login">
<s:textfield name="username"/>
<s:password name="password"/>
<s:submit/>
</s:form>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录成功</title>
</head>
<body>
登录成功
</body>
</html>
运行结果如下:
二、使用visitor验证器
•
第一步:编写一个User类
–
包含属性username和password
•
第二步:编写一个User-validation.xml
–
文件头参考xwork-validator-1.0.3.dtd(解压xwork-core-2.2.1.jar包可看到)
–
<validators>
•
<field name=“username”>
–
<field-validator type=“requiredstring”>
»
<message>请输入用户名</message>
–
</field-validator>
•
</field>
•
<field name=“password”>…省略</field>
–
</validators>
•
第三步:修改LoginAction
–
去掉属性username和password
–
增加属性private User user;
•
第四步:修改
LoginAction-validation.xml
–
文件头参考xwork-validator-1.0.3.dtd(解压xwork-core-2.2.1.jar包可看到)
–
<validators>
•
<field name=“user”>
–
<field-validator type=“visitor”>
»
<param name=“appendPrefix”>true</param>
»
<message>用户</message>
–
</field-validator>
•
</field>
–
</validators>
•
第五步:部署并测试
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9828e1554f6824f9bcc12e922110e74d.png)
下面给出代码:
LoginAction.java
package action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="user">
<field-validator type="visitor">
<param name="appendPrefix">true</param>
<message>用户</message>
</field-validator>
</field>
</validators>
User.java
package action;
public class User {
public User(){}
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
private String password;
}
User-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
</field>
</validators>
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录界面</title>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
</head>
<body>
<s:form action="login">
<s:textfield name="user.username"/>
<s:password name="user.password"/>
<s:submit/>
</s:form>
</body>
</html>
其他的都不变。
三、客户端验证
•
第一步:回到第一个实验的状态
•
第二步:修改login.jsp
–
增加红字部分<s:form action=“login”
validate=“true”
>
•
第三步:修改LoginAction.java
–
增加public String input(){return “input”;}
•
第四步:测试
–
直接访问login.jsp,看看有什么提示
–
访问login!input.action,看看有什么变化
–
右键页面,选择“查看源码”,是否看到验证的js代码