Struts2中的数据校验
- 1、Action控制器
- 2、jsp页面
- 3、struts.xml配置
- 4、测试
1、Action控制器
如果要使用校验,则需要继承ActionSupport类,覆写validate()方法,如果是实现Action接口,则无法覆写此方法。直接在之前的控制器基础上进行改造,修改后如下:
public class LoginAction extends ActionSupport {
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;
}
@Override
public String execute() throws Exception {
if(username.equals("admin") && password.equals("ycz123456")) {
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("currentUser", username);
return SUCCESS;
}
return ERROR;
}
/**
* 此方法用于校验,会在execute()方法执行前先执行
*/
@Override
public void validate() {
if(StringUtils.isEmpty(username)) {
addFieldError("username", "用户名不能为空!");
return;
}
if(StringUtils.isEmpty(password)) {
addFieldError("password", "密码不能为空!");
return;
}
if(username.length() < 5) {
addFieldError("username", "用户名不得少于5位!");
return;
}
if(password.length() < 5) {
addFieldError("password", "密码长度不得低于5位!");
return;
}
if(!username.equals("admin") || !password.equals("ycz123456")) {
addFieldError("msg", "用户名或密码错误!");
return;
}
}
}
2、jsp页面
之前的login.jsp和success.jsp也需要进行改造。修改后的login.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页</title>
</head>
<body>
<form action="login.action" method="post">
<div>
<label>用户名:</label>
<input type="text" name="username" value="${username }"/>
<font color="red">
<s:fielderror fieldName="username" />
</font>
</div>
<div>
<label>密码:</label>
<input type="password" name="password" value="${password }"/>
<font color="red">
<s:fielderror fieldName="password" />
</font>
<font color="red">
<s:fielderror fieldName="msg" />
</font>
</div>
<div>
<input type="submit" value="登录" />
</div>
</form>
</body>
</html>
修改后的success.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页面</title>
</head>
<%
%>
<body>
<h1>当前用户:【${sessionScope.currentUser}】</h1>
</body>
</html>
3、struts.xml配置
<!-- 登录action -->
<action name="login" class="com.ycz.struts01.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/login.jsp</result>
<result name="input">/login.jsp</result>
</action>
需要注意的是,如果要向页面中回显错误信息,那么返回结果必须配置input,如下:
如果这里不配置,错误信息无法回显,提交会报错,如下:
即struts2中如果要添加校验信息,则必须要配置result input。
4、测试
启动tomcat容器,进行测试:
输入正确的用户名和密码点击登录: