您的位置:首页 > 编程语言 > Java开发

Struts09---验证框架

2017-06-30 10:02 344 查看

01.创建登录界面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:form action="user/login" method="post">
<s:textfield name="user.name" label="姓名"/>
<s:textfield name="user.password" label="密码"/>
<s:submit value="登录"/>
<%-- 全局的validate()会拦截我们所有的请求      --%>
<a href="user/change">切换验证码</a>

</s:form>
</body>
</html>

02.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>

<package name="user"  namespace="/user" extends="default">
<!-- 登录验证 -->
<action name="login" class="cn.bdqn.action.UserAction" method="login">
<result name="input">/login.jsp</result>
<result>/success.jsp</result>
</action>
<!--  切换验证码  -->
<action name="change" class="cn.bdqn.action.UserAction" method="change">
<result>/success.jsp</result>
</action>

</package>
</struts>

03.Action

/**
* 验证框架:
*   01.局部验证
*   02.全局验证 使用 validate
*   03.全局验证 使用xml  推荐***
*
*
*/

public class UserAction extends ActionSupport{

private  User user;  //验证的对象

//默认
public  String  execute(){
System.out.println("默认执行的execute");
return SUCCESS;
}

//登录的方法
public  String login(){
System.out.println("进入了login()");
//如果有错误!
if (hasErrors()) {
return INPUT;  //返回登录界面
}
return  SUCCESS;
}

//切换验证码
public  String change(){
System.out.println("进入了change()");
return  SUCCESS;
}

/**
* 全局的验证  只要进入了我们的Action  这个方法就必须先执行!
* 重写了ActionSupport类中的validate()

@Override
public void validate() {
System.out.println("进入了validate()");
if (StringUtils.isBlank(user.getName())) {//用户名为空返回true!
addFieldError("user.name", "用户名不能为空");
}
if (StringUtils.isBlank(user.getPassword())) {//密码为空返回true!
addFieldError("user.password", "密码不能为空");
}
}*/

/**
* 验证指定的方法
*   需要验证的方法名 首字母大写 !前面加上validate
*   如果和全局验证同时存在 ,优先执行指定方法名称的验证!
*/
public void validateLogin() {
System.out.println("进入了validateLogin()");
if (StringUtils.isBlank(user.getName())) {//用户名为空返回true!
addFieldError("user.name", "用户名不能为空");
}
if (StringUtils.isBlank(user.getPassword())) {//密码为空返回true!
addFieldError("user.password", "密码不能为空");
}
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}

04.创建成功界面!  省略!

 validate拦截器的底层搜索!

01.找到struts-default.xml文件中的validation对应的类

 

02.进入其对应的父类

 

 03.继续观察

04.得到了  方法名变大写

 

 

使用xml验证框架! 首先保证xml文件和Action在同一个包中!

package cn.bdqn.action;

import java.sql.SQLException;

import org.apache.commons.lang3.StringUtils;

import cn.bdqn.bean.User;

import com.opensymphony.xwork2.ActionSupport;
/**
* 验证框架:
*   01.局部验证
*   02.全局验证 使用 validate
*   03.全局验证 使用xml  推荐***  前提验证文件 必须和 action在一个包中!
*      001.验证全局  :  ActionClassName-validation.xml
*      002.验证指定的: ActionClassName-ActionName-validation.xml
*
* ActionClassName:就是我们Action的类名!  在本类中就是对应UserAction!
* ActionName:指的的struts.xml文件中action节点中 name的属性值!
*
*/

public class UserAction extends ActionSupport{

private  User user;  //验证的对象

//默认
public  String  execute(){
System.out.println("默认执行的execute");
return SUCCESS;
}

//登录的方法
public  String login(){
System.out.println("进入了login()");

//如果有错误!
if (hasErrors()) {
return INPUT;  //返回登录界面
}
return  SUCCESS;
}

//切换验证码
public  String change(){
System.out.println("进入了change()");
return  SUCCESS;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}
<?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">
<!-- 验证文件 必须和 action在一个包中! -->
<validators>
<field name="user.name">
<field-validator type="requiredstring"><!--用户名不能为空  -->
<param name="trim">true</param>
<message><![CDATA[用户名不能为空!!!XML]]></message>
</field-validator>
<field-validator type="stringlength"><!--用户名的长度-->
<param name="minLength">5</param>
<param name="maxLength">10</param>
<message><![CDATA[用户名必须在5--10之间!!!XML]]></message>
</field-validator>
</field>

<field name="user.password">
<field-validator type="requiredstring"><!--密码不能为空  -->
<param name="trim">true</param>
<message><![CDATA[密码不能为空!!!XML]]></message>
</field-validator>
<field-validator type="regex"><!--密码的长度-->
<param name="trim">true</param>
<param name="regex"><![CDATA[^[0-9a-zA-Z]{5,10}$]]></param>
<message><![CDATA[密码必须在5--10之间!!!XML]]></message>
</field-validator>
</field>

</validators>

 

下面的

下面的

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: