struts的两种校验方式

struts校验页面的输入是否符合要求有两种方式,每种方式又分为全局验证和局部验证两种。

第一种:在Action类中重写方法。

在action类中实现全局验证的步骤:

1、action类继承ActionSupport类。

2、重写validate方法,实现验证规则。

/*//全局验证,不通过跳转到input
@Override
public void validate() 
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}

if (user.getPassword().equals(""))
{
this.addFieldError("msg", "密码不能为空");
}
}
*/

3、在核心文件struts.xml中配置input字符串与视图的映射(input字符串为不通过验证时返回的字符串)

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="default" namespace="/" extends="struts-default" >
<action name="userAction_*" class="com.caokaiyuan.action.UserAction" method="{1}">
<result name="register">success.jsp</result>
<result name="login">success.jsp</result>

<!-- 配置input字符串与视图的映射 -->
<result name="input">{1}.jsp</result>
</action>
</package>
</struts>


局部验证的步骤基本如全局验证,不同的是在局部验证时不是重写validate方法。而且局部验证的方法也要遵循一定的命名规制。

命名规制:validate + 要验证的方法名,方法名首字母大写

如下代码:只对userAction_login的请求时验证

package com.caokaiyuan.action;


import com.caokaiyuan.vo.UserVO;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class UserAction extends ActionSupport implements ModelDriven<UserVO>
{
private static final long serialVersionUID = 1L;

private UserVO user = new UserVO();

public String register() throws Exception 
{
return "register";
}
public String login() throws Exception
{
return "login";
}

/*//全局验证,不通过跳转到input
@Override
public void validate() 
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}

if (user.getPassword().equals(""))
{
this.addFieldError("msg", "密码不能为空");
}
}
*/

//局部验证
public void validateLogin()
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}
}

public UserVO getUser() {
return user;
}


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


@Override
public UserVO getModel()
{
return user;
}


}

第二种:在xml文件中配置验证规则。

在xml文件中配置全局验证的步骤

1、在action的包下面建立action名称+validation的xml文件如(UserAction-validation.xml)

2、在action包下的xml文件进行验证规制(如在UserAction-validation.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
  <validators>
  <!-- 配置校验规则,用户名非空验证 -->
  <validator type="requiredstring">
  <!-- 要验证的字段 -->
  <param name="fieldName">username</param>
  <!-- 不通过是的返回值 -->
  <message>用户名不为空!!</message>
  </validator>
  </validators>
 

3、、在核心文件struts.xml中配置input字符串与视图的映射(input字符串为不通过验证时返回的字符串)


局部验证的步骤只要把全局验证的xml文件的名称按一定的规制修改一下即可。

如把上面的UserAction-validation.xml修改为UserAction-userAction_login-validation.xml。

命名规制:action名称+ -要验证的请求的名称+ -validation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值