【strut2笔记】Strut2数据验证

Strut2数据验证



※  首先是strut.xml 中的action配置:

 

  •  <package name="default" namespace="/" extends="struts-default">
  •         <action name="login" class="login" method="login">
  •          <result name="login_result">
  •          /login.jsp
  •          </result>
  •         </action>
  • </package>

 

※  然后是创建个jsp页面 login.jsp

 

※  接着是建立account类,也就是model。其中有setget方法

 

※  再接着是login.java类 其中login方法中进行验证

 

 

三种方式验证,一种比一种稍稍复杂

 

1.直接在login方法中创建对应变量 来接受表单提交的数据

2.使用上面建立的account 类 创建个对象 用对象来接受 账号和密码信息、表单中的属性名字要写全,如:account.account

3.使用接口,实现ModelDriven 接口中的方法 getModel() ,可以直接传递,不必像上面一样,要写全,可以直接使用简单的表单属性提交数据。

 

第一种:

 

  • strut2调用的类中:
  • private String account="";
  • private String password="";
  • public String getAccount() {
  • return account;
  • }
  •  
  • public void setAccount(String account) {
  • this.account account;
  • }
  •  
  • public String getPassword() {
  • return password;
  • }
  •  
  • public void setPassword(String password) {
  • this.password password;
  • }

 

 

这样,当表单提交后,strut2会自动的赋值。注意strut2寻找的名字是get和set后的名字。

 

 

第二种:

 

定义一个model类:

 

  •  
  • public class Account {
  •  
  • private String  account="";
  • private String  password="";
  • public String getAccount() {
  • return account;
  • }
  • public void setAccount(String account) {
  • this.account account;
  • }
  • public String getPassword() {
  • return password;
  • }
  • public void setPassword(String password) {
  • this.password password;
  • }
  • }

 

 

strut2调用的类中:

 

  •  private Account account;
  •  
  • public account getAccount1() {
  • return account1;
  • }
  •  
  • public void setAccount1(account account1) {
  • this.account1 account1;
  • }

 

 

这样,当表单提交后,strut2会自动给对象中的属性赋值。 

值得注意的是,表单提交的属性name中,使用这样的写法:account.account和account.password

前面是对象名字,后面是属性。

 

 

 

第三种

 

首先是对象,和第二种一样,先创建个model,不提。

 

 

然后是被strut2调用的类中:

类要继承ModelDriven接口

 

 

  • public class login extends ActionSupport implements ModelDriven{ 
  •  
  • private Account accountnew Account(); //对象赋值的方法
  •  
  • @Override
  • public Account getModel() {
  • // TODO Auto-generated method stub
  • return account;
  • }
  • .....
  • }

 

 

这样需要先继承ModelDriven接口,并说明接口实现的model,然后再在其中实现getModel()的方法。

就可以在下面验证了。

例如:

 

  • public String login(){
  • System.out.println("用户 "+account.getAccount()+请求登陆"); 
  • if(account.getAccount().equals("我")&&account.getPassword().equals("1")){
  • System.out.println("登陆成功");
  • System.out.println("账号:"+account.getAccount());
  • System.out.println("密码:"+account.getPassword());
  • return "login_result";
  • }
  • else{
  • System.out.println("登陆失败");
  • //将错误信息加入 错误堆栈中:
  • this.addFieldError("account""密码错误,登陆失败"); 
  • return "login_result";
  • }
  • } 

 

这里直接验证了,没有查询数据库,方便操作。

 

 

最后,是错误信息反馈

 

在上面第三种后面的验证中,用了:

 

this.addFieldError("account""密码错误,登陆失败");  //可以添加多条

 

来将验证错误的信息加入到错误反馈堆栈中。

那么加进去了后怎么将它输出来呢

看下面:-------------------------------------------------

 

 

*在需要反馈错误信息的JSP页面中:

 

在最前面的配置引用中添加:<%@taglib uri="/struts-tags" prefix="s" %>

//taglib 库中  struts-tags文件  s类型    。。。URL是URI命名机制的一个子集

 

意思是要导入taglib,这个库的tld文件路径是uri="/struts-tags"  要使用的类型是prefix="s" 

 

*然后再在下面要显示的地方显示错误信息,有两种提取方式: 注意errors 要加 fieldName中的N要大写

1.strut2规定的方式,错误标签显示:

<s:fielderror fieldName="account" theme="simple"/> theme可以不写,默认就是simple

【strut2笔记】Strut2数据验证 

2.自定义的提取字符串方式,直接JSP中:

<s:property value="errors.account[0]"/>

输出测试:

<s:property value="errors"/> 得到:

【strut2笔记】Strut2数据验证 

<s:property value="errors.account"/>得到:

【strut2笔记】Strut2数据验证 

 

<s:property value="errors.account[0]"/>得到:

【strut2笔记】Strut2数据验证 

 

 

3.可以使用<s:debug></s:debug>标签来显示详细的错误堆栈信息。

当使用debug标签的时候,jsp页面会出现:

【strut2笔记】Strut2数据验证 

这个连接,点击后出现堆栈错误信息的详细内容:

【strut2笔记】Strut2数据验证 

同样的,信息传递反馈(普通信息反馈,比如成功)

 

同错误信息反馈原理一样,使用堆栈传递信息,这个。。。是我自己琢磨的。同样的可以添加多条

this.addActionMessage("登陆成功1 ");

this.addActionMessage("登陆成功2 ");

在成功验证后把信息添加到反馈的堆栈,其实当我们敲下this.add的时候会出现三个方法:

【strut2笔记】Strut2数据验证 

 

第一个方法是action错误信息

第二个是action用户自定义信息

第三个是field错误信息

 

其实三个方法都可以自己随便用,不过正规点的话就哪个用哪个了、、、。、

==========================================================================

this.addActionMessage("登陆成功1 "); 添加我的自定义信息后:

 

Jsp页面:

和上面的errors信息调取一样有两种方法:

1.<s:actionmessage />

2.<h1><s:property value="actionMessages[1]"/></h1>

 

第一种方法,直接拉取所有的信息固定方式显示,因为actionMessages是整个数组对象,没法选取单个

 

第二种方法,选择某个信息拉取,并可以得到字符串,之后想怎么弄怎么弄。。。呵呵。。

效果:

【strut2笔记】Strut2数据验证 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值