`

简单的struts2输入校验框架

阅读更多

1.输入页面login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
     <title>My JSP 'login.jsp' starting page</title>

    </head>

<body>
<!--
   <table align = "center">
    <tr>
     <td>
      <s:fielderror cssStyle="color:red" />
     </td>
    </tr>
   </table>
-->   
<!-- 表单重复提交的错误信息放在了actionerror中 -->
<s:actionerror/>
   <s:form action="login" method = "post" theme = "simple" >
   <s:token></s:token><!--防止表单重复提交-->
    <table align="center" border="1" width="60%">
     <tr>
      <td >
       username
      </td>
      <td>
       <s:textfield name="username" cssStyle="Color:red"></s:textfield>
      </td>
      <td style="color:red">
       <s:fielderror>
        <s:param>username</s:param>
       </s:fielderror>
      </td>
     </tr>
     <tr>
      <td>
       password
      </td>
      <td>
       <s:password name="password"></s:password>
      </td>
      <td style="color:red">
       <s:fielderror>
        <s:param>password</s:param>
       </s:fielderror>
      </td>
     </tr>
     <tr>
      <td>
       repassword
      </td>
      <td>
       <s:password name="repassword" label="repassword"></s:password>
      </td>
      <td style="color:red">
       <s:fielderror>
        <s:param>repassword</s:param>
       </s:fielderror>
      </td>
     </tr>
     <tr>
      <td>
       age
      </td>
      <td>
       <s:textfield name="age" label="age"></s:textfield>
      </td>
      <td style="color:red">
       <s:fielderror>
        <s:param>age</s:param>
       </s:fielderror>
     <tr>
      <td>
       birthday
      </td>
      <td>
       <s:textfield name="birthday" label="birthday"></s:textfield>
      <td style="color:red">
       <s:fielderror>
        <s:param>birthday</s:param>
       </s:fielderror>
     <tr>
      <td>
       graduation
      </td>
      <td>
       <s:textfield name="graduation" label="graduation"></s:textfield>
      </td>
      <td style="color:red">
       <s:fielderror>
        <s:param>graduation</s:param>
       </s:fielderror>
     <tr>
      <td>
       <s:submit label="submit"></s:submit>
      </td>
      <td>
       <s:reset label="reset" />
      </td>
     </tr>
    </table>
   </s:form>
</body>
</html>

2.struts.xml配置文件:

<constant name="struts.custom.i18n.resources" value="message"></constant>

<action name="login" class="com.struct2.test.LoginAction">
     <result name = "input">/login.jsp</result>
     <result name = "login" type ="redirect">/login.jsp</result>
     <result name = "success">/result.jsp</result>
     <result name = "invalid.token">/login.jsp</result>
     <!-- 防止表单重复提交的拦截器 -->
     <interceptor-ref name="token"></interceptor-ref>
    
      <!-- 指定/排除某些方法的拦截器,指定和排除同时存在时,指定的优先级高-->
      <!-- myInterceptor3为自定义的一个拦截器,这里不再贴出来了-->
     <interceptor-ref name="myInterceptor3">
      <param name="includeMethods">execute,test</param>   <!-- 指定-->
      <param name="excludeMethods">execute,test</param><!-- 排除-->
     </interceptor-ref>
   
      <!-- 当提供自定义的拦截器后,默认拦截器失效,所以要手动包含进来-->
    
     <interceptor-ref name="defaultStack"></interceptor-ref>
     </action>

3.LoginAciton.java:

package com.struct2.test;

import java.util.Date;
import java.util.Map;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

private String username;
private String password;
private String repassword;
private int age;
private Date birthday;
private Date graduation;

//get和set方法省略
@SuppressWarnings("unchecked")
public String execute(){
//   if("hahadao".equals(this.getUsername().trim())&&"123456".equals(this.getPassword().trim())){
//    return SUCCESS;
//   }else{
//  this.addFieldError("username", "username or password error"); //fielderror是map。key-value对
//   return INPUT;
//   }
   Map map = ActionContext.getContext().getSession();//session也为map。
   map.put("password", this.getPassword());
   //ServletActionContext比ActionContext能多拿到一个response,其他两者一样。
   HttpServletResponse response = ServletActionContext.getResponse();
   HttpServletRequest request = ServletActionContext.getRequest();
   System.out.println("------u-------"+username);
   Cookie cookie = new Cookie("username",this.getUsername());
   cookie.setMaxAge(1000);
   response.addCookie(cookie);
   System.out.println(password + "-----密码确认是:"+repassword);
  
   return SUCCESS;
}


public void test(){
  
}


// @Override
// public void validate() {//采用struts校验框架验证,不需要validate方法。
//  
//   if(null==this.getUsername()||"".equals(this.getUsername().trim())){
//    this.addFieldError("username", "username required");
//   }
//  
//   if(null==this.getPassword()||"".equals(this.getPassword().trim())){
//    this.addFieldError("password", "password required");
//   }
// }
}

4.LoginAction-validation.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
   <field name="username">
    <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>名字不能为空</message>
    </field-validator>
    <field-validator type="stringlength">
     <param name="minLength">6</param>
     <param name="maxLength">10</param>
     <message>名字长度在${minLength}到${maxLength}之间</message>
    </field-validator>
    </field>
   
    <field name="password">
    <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>密码不能为空</message>
    </field-validator>
    <field-validator type="stringlength">
     <param name="minLength">6</param>
     <param name="maxLength">10</param>
     <message>密码长度在${minLength}到${maxLength}之间</message>
    </field-validator>
   </field>
  
   <field name="repassword">
    <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>密码确认不能为空</message>
    </field-validator>
    <field-validator type="stringlength">
     <param name="minLength">6</param>
     <param name="maxLength">10</param>
     <message>密码确认长度在${minLength}到${maxLength}之间</message>
    </field-validator>
   </field>
  
   <field name="repassword">
    <field-validator type="fieldexpression">
    <param name="expression">
      <![CDATA[repassword==password]]>
     </param>
     <message>密码确认要和密码一致</message>
    </field-validator>
   </field>
  
   <field name="age">
    <field-validator type="int">
     <param name="min">1</param>
     <param name="max">150</param>
     <message>年龄应该在${min}到${max}之间</message>
    </field-validator>
   </field>
  
   <field name="birthday">
    <field-validator type="required">
       <message>生日不能为空</message>
    </field-validator>
    <field-validator type="date">
     <param name="min">1900-01-01</param>
     <param name="max">2001-01-01</param>
     <message>生日必须在${min}和${max}之间</message>
    </field-validator>
   </field>
  
   <field name="graduation">
    <field-validator type="required">
       <message>毕业时间不能为空</message>
    </field-validator>
    <field-validator type="date">
     <param name="min">1990-01-01</param>
     <param name="max">2010-01-01</param>
     <message>毕业时间必须在${min}和${max}之间</message>
    </field-validator>
   </field>
</validators>

5.result.jsp

<body>
    username:${request.username }<br>
    password:${requestScope.password }<br>
    age:${requestScope.age }<br>
    birthday:${request.birthday }<br>
    request:<%=request.getAttribute("birthday") %><br>
    cookie:${cookie.username.value}
</body>

6.国际化资源文件message.properties配置:

当表单重复提交时防止struts2在页面自动输出英文提示信息,而是自定义输出中文信息如下为(“不能重复提交表单!

struts.messages.invalid.token=\u4e0d\u80fd\u91cd\u590d\u63d0\u4ea4\u8868\u5355\uff01

 

分享到:
评论

相关推荐

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    struts2验证框架

    Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行...

    Struts2校验框架应用

    Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...

    Struts2自定义校验框架

    Struts2提供了内置的验证框架,允许开发者自定义校验规则,以满足特定业务需求。下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,...

    Struts2的校验框架

    总的来说,Struts2的校验框架通过提供灵活的配置和易于扩展的机制,使得Web应用的输入验证变得简单而有效。它可以帮助开发者避免因用户输入不合法而导致的程序错误,提升应用的用户体验,同时增强系统的稳定性和安全...

    Struts2的输入校验

    Struts2提供了强大的验证框架,支持多种验证方式,包括基于注解的验证、XML配置的验证以及编程式验证。这些验证规则可以定义在Action类中,或者单独的验证配置文件里。 1. **基于注解的验证** 使用注解是Struts2中...

    struts2输入校验深入总结

    在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别...

    struts2输入校验

    Struts2提供了内置的验证框架,基于XML配置或者注解实现。这个框架允许开发者定义一组规则来检查用户提交的数据,这些规则可以在Action类中应用。 2. **XML输入校验**: - **创建校验文件**:首先,你需要创建一...

    struts2验证框架简单实例

    在Struts2框架中,验证框架是其一个重要组成部分,用于确保输入数据的准确性和完整性,从而防止因无效数据导致的程序异常或错误。本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决...

    Struts2 校验器

    8. **整合其他验证框架**:除了内置的验证功能,Struts2还可以与Hibernate Validator、JSR 303/JSR 349等Java Bean Validation标准进行集成,以利用更丰富的验证约束。 总之,Struts2的校验器是其强大功能的一部分...

    struts2验证框架示例

    在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts2学习笔记八(第8讲.Struts2的校验框架)

    本讲主要探讨Struts2的校验框架,它提供了对用户输入数据进行验证的功能,确保数据的有效性和安全性。 在传统的MVC模式中,数据验证通常在控制器或模型层进行,但在Struts2中,校验逻辑被移到了专门的校验框架中,...

    使用struts2进行输入校验

    总结来说,Struts2提供了灵活的输入校验机制,允许开发者通过Action的`validate()`方法或者XML配置文件来定义验证规则。无论选择哪种方式,都能有效地确保从客户端接收的数据符合预期,从而提高了应用的安全性和用户...

    Struts2 输入校验

    Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...

    struts2 校验框架

    总的来说,Struts2的验证框架为开发者提供了灵活且强大的数据校验机制,能够有效地保证应用程序数据的正确性和一致性。通过合理利用XML配置、注解、拦截器和自定义验证,可以构建出健壮的Web应用程序。对于Java Web...

Global site tag (gtag.js) - Google Analytics