- 浏览: 886375 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
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
发表评论
-
ognl表达式
2011-07-07 00:36 1293OGNL是Object Graphic Navigation ... -
在Struts 2_0中实现表单数据校验
2011-07-07 00:02 1137转换与校验(Conversion & Validati ... -
struts2在学习(十二)--表单验证的两种方式
2011-05-13 23:13 957第四个示例:注解方式校验器---用户注册页面user2_reg ... -
struts2在学习(十一)--表单验证的两种方式
2011-05-13 23:09 902第二个示例:XML配置式校验器---登录和注册页面user_l ... -
struts2在学习(十)--表单验证的两种方式
2011-05-13 22:56 11561. Struts2中的输入校验2. 编码方式校验 1) A ... -
struts2采用convention-plugin实现零配置
2011-05-13 21:58 1111最近开始关注struts2的新特性,从这个版本开始,Strut ... -
基于SSH2框架Struts2拦截器的登录验证实现
2011-04-01 22:00 2288通过之前的Struts2.1.6+Spring2.5.6+H ... -
通过ActionContext类访问Servlet对象
2011-04-01 21:40 1914ActionContext类位于com.opensympho ... -
webwork 之销毁session
2011-04-01 17:35 1761销毁的意思?不是清空 ... -
Struts2 Convention Plugin(三)
2011-03-18 01:26 1196Annotation 参考Convention使用某些注解语句 ... -
Struts2 Convention Plugin(二)
2011-03-18 01:25 1147Results and result codesStruts ... -
Struts2 Convention Plugin(一)
2011-03-18 01:25 1094Introduction从struts2.1版本开始,Conv ... -
struts2页面中的标签调用类的方法
2011-03-15 16:33 1613<s:set name="str" ... -
Apache Struts 2.2.1 GA版发布
2011-03-14 17:14 1334昨日,Apache软件基金会发布了Struts 2.2.1 G ... -
spring2 +hibernate 3 + struts 配置
2011-03-14 15:15 12081. web.xml 1. <?xml versi ... -
Struts2 中action之间的跳转
2011-03-14 12:32 1250转载于http://zhou568xiao.iteye.com ... -
Struts2 的Result Type
2011-03-13 16:35 1041http://www.blogjava.net/duanzhi ... -
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
2011-03-13 16:32 1619dispatcher 为默认跳转类型,用于返回一个视图资源(如 ... -
struts2防止重复提交
2011-03-10 23:07 1289struts2的防止重复提交 也使用到了 token (令牌机 ... -
Struts2 数据输入校验(1) —— 函数验证
2011-02-20 20:47 906用struts2标签库来实现上述目的的基本原理: 错误消息分为 ...
相关推荐
综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。
Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行...
Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...
Struts2提供了内置的验证框架,允许开发者自定义校验规则,以满足特定业务需求。下面将详细介绍Struts2自定义校验框架的相关知识点。 1. **Struts2验证框架概述** Struts2的验证框架主要负责处理用户提交的数据,...
总的来说,Struts2的校验框架通过提供灵活的配置和易于扩展的机制,使得Web应用的输入验证变得简单而有效。它可以帮助开发者避免因用户输入不合法而导致的程序错误,提升应用的用户体验,同时增强系统的稳定性和安全...
Struts2提供了强大的验证框架,支持多种验证方式,包括基于注解的验证、XML配置的验证以及编程式验证。这些验证规则可以定义在Action类中,或者单独的验证配置文件里。 1. **基于注解的验证** 使用注解是Struts2中...
在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别...
Struts2提供了内置的验证框架,基于XML配置或者注解实现。这个框架允许开发者定义一组规则来检查用户提交的数据,这些规则可以在Action类中应用。 2. **XML输入校验**: - **创建校验文件**:首先,你需要创建一...
在Struts2框架中,验证框架是其一个重要组成部分,用于确保输入数据的准确性和完整性,从而防止因无效数据导致的程序异常或错误。本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决...
8. **整合其他验证框架**:除了内置的验证功能,Struts2还可以与Hibernate Validator、JSR 303/JSR 349等Java Bean Validation标准进行集成,以利用更丰富的验证约束。 总之,Struts2的校验器是其强大功能的一部分...
在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...
本讲主要探讨Struts2的校验框架,它提供了对用户输入数据进行验证的功能,确保数据的有效性和安全性。 在传统的MVC模式中,数据验证通常在控制器或模型层进行,但在Struts2中,校验逻辑被移到了专门的校验框架中,...
总结来说,Struts2提供了灵活的输入校验机制,允许开发者通过Action的`validate()`方法或者XML配置文件来定义验证规则。无论选择哪种方式,都能有效地确保从客户端接收的数据符合预期,从而提高了应用的安全性和用户...
Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...
总的来说,Struts2的验证框架为开发者提供了灵活且强大的数据校验机制,能够有效地保证应用程序数据的正确性和一致性。通过合理利用XML配置、注解、拦截器和自定义验证,可以构建出健壮的Web应用程序。对于Java Web...