java struts2入门学习--防止表单重复提交.OGNL语言学习
2014-02-17 01:38
676 查看
一.知识点回顾
防止表单重复提交核心思想:客户端和服务器端和写一个token,比较两个token的值相同,则非重复提交;不同,则是重复提交.
1.getSession三种方式比较:
request.getSession()
request.getSession(true);//无论如何都要得到新的Session
request.getSession(false);//只能得到旧有的Session
2.>>struts2框架提供了token拦截器,主要用于防止表单重复提交
>>默认栈中无token拦截器,所以在<action>标签中要显示引用token拦截器
3.开发步骤:
1)在jsp页面中使用<s:token/>,自动产生hidden框,同时在服务端的session中放置一份id值
2)在<action>中,显示引用token拦截器
3)token的实现源码org.apache.struts2.interceptor.TokenInterceptor
二.需求
针对上一篇文章中实现的验证,实现防止表单重复提交,一旦出现重复提交,应当给予提示.1.填写所必需的内容
2.提交成功后
3.刷新提交后的页面,提示页面已经重复提交
三.实现
1.实现代码
validator.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>validator</title> </head> <body> <s:form action="ValidatorAction" type="POST"> <s:token/> <s:textfield label="用户名" name="username" /> <s:password label="密码" name="password" showPassword="true"/> <s:textfield label="薪水" name="salary" /> <s:textfield label="生日" name="birthday"/> <s:submit name="submit"/> </s:form> </body> </html>
validator_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="validator" extends="struts-default"> <action name="ValidatorAction" class="validator.ValidatorAction" method="execute"> <result name="success" type="dispatcher"> /WEB-INF/validator_success.jsp </result> <result name="input" type="dispatcher"> /validator.jsp </result> <result name="invalid.token" type="dispatcher"> /error.jsp </result> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="token"></interceptor-ref> </action> </package> </struts>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <font size="36" color="red"> 表单重复提交了 </font> </body> </html>
2.代码分析
在validator.jsp中添加token标签,将token分别写入客户端和服务器端.validator_struts.xml,配置出错页面,以及引用默认拦截器和token拦截器.
error.jsp,提示重复提交了.
3.本文源码
防止表单重复提交
四.OGNL语言
1.简介:
OGNL是Object-Graph Navigation Language的缩写(对象图导航语言),它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。2.作用:
1)访问OGNL上下文(OGNL context)和ActionContext;2)操作集合对象。
3.理解OGNL
1)OGNL通常与Struts2的标签一起使用,不能独立使用.2) Action一旦产生,值栈就产生了,位于request域中
Action一旦销毁,值栈就销毁了.
3)值栈分数两部分:
List区域:
>>Action实例本身
>>Action中所有的属性,例如:username/password ..
Map区域:
>>在Action中,能够取得的一切Map对象,都放置在Map区域.
如下图所示:
相关文章推荐
- JAVAWEB开发之Struts2详解(四)——ognl与valueStack(重点)、Struts常用标签、防止表单重复提交、Struts2中内置json插件
- struts_05 各种验证器,ognl表达式,struts2常用标签,防止表单重复提交,jfreeChart插件的运用
- java web 学习十三(使用session防止表单重复提交)
- 7、struts2 案例( 模型驱动、 防止表单重复提交--拦截器 、数据回显 、值栈 、 OGNL表达式综合运用)
- Struts2学习笔记之<s:token/>防止表单重复提交
- Struts2学习笔记之<s:token/>防止表单重复提交
- Struts2学习之3(文件的上传下载,OGNL表达式,常用标签,表单重复提交)
- Struts2学习10--防止表单的重复提交token标签和tokenSession
- JAVA-Struts2防止表单重复提交
- Struts2学习10--防止表单的重复提交token标签和tokenSession
- java struts2入门学习--OGNL语言基本用法
- Struts2基础学习(八)—Struts2防止表单重复提交
- [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
- struts2之防止表单重复提交
- JavaWeb学习记录(十六)——防止表单重复提交
- Struts2防止表单重复提交
- Java防止表单重复提交
- java 防止表单重复提交(使用Session)
- struts2防止表单重复提交的解决方案
- struts2 结果类型的作用 type & 防止表单重复提交