飞艳小屋
程序--人生--哲学___________________欢迎艳儿的加入
BlogJava
首页
新随笔
联系
聚合
管理
52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(85)
给我留言
查看公开留言
查看私人留言
随笔档案
(52)
2007年7月 (2)
2007年6月 (1)
2007年5月 (1)
2007年4月 (1)
2007年2月 (1)
2007年1月 (1)
2006年10月 (2)
2006年8月 (3)
2006年7月 (1)
2006年6月 (13)
2006年5月 (7)
2006年4月 (2)
2006年3月 (8)
2006年2月 (2)
2005年12月 (2)
2005年11月 (4)
2005年10月 (1)
文章分类
(157)
.net(26)
Eclipse
EJB(1)
hibernate(5)
HTML
java(33)
javaScript(12)
java服务器相关(4)
JDBC
OO设计
Oracle(18)
spring(1)
XML(5)
其它(23)
工具(3)
操作系统相关(1)
数据库相关(2)
程序人生(19)
算法数据结构(3)
设计模式(1)
文章档案
(174)
2007年8月 (1)
2007年7月 (1)
2007年6月 (5)
2007年5月 (4)
2007年4月 (11)
2007年3月 (8)
2007年2月 (10)
2007年1月 (4)
2006年12月 (1)
2006年11月 (1)
2006年10月 (1)
2006年9月 (4)
2006年8月 (22)
2006年7月 (2)
2006年6月 (28)
2006年5月 (3)
2006年4月 (6)
2006年3月 (11)
2006年2月 (7)
2006年1月 (5)
2005年12月 (23)
2005年11月 (14)
2005年10月 (2)
相册
(1)五龙潭之旅
(2)雁荡山之旅
fxgh
klOK
上海
个人照
各地风情
嘉兴西唐
大学生活
妹妹与妹夫
桐庐七里扬帆
艺术图片
视频
.NET方面的网站
我的域名
.NET文章
.net的好网站
.net的学习网站
.NET空间到手了,只有30天的使用期
Homepage URL http://flysky-1.at.vwdhosting.net FTP server name: ftp://flysky-1@ftp6.vwdhosting.net Login: flysky-1 Password: k%x5WY(0zp
CSDN 论坛
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
CSDN中的java 论坛
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
IT探索者
Java 开发者
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
java文章
java爱好者学习网站
java特效
J道
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
oracle教程
VB.NET解说
一个永久的.NET空间
Default Website Address: http://www40.brinkster.com/flyskys Website IP: 65.182.102.102
下载专区
下载书的好地方
中国 UDDI 技术联盟
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
人气很旺
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
免费域名服务
免费域名服务
申请域名::::::.... 您的域名已注册成功:http://beginsky.0033.cn 您的转向地址是:http://songfei.vhosting.cn
免费空间
222.186.200.129 IP地址ftp://222.186.200.129/
免费资料下载
农博会
动网
博客
国外源码下载中心
国外的空间asp
FTP地址ftp39.websamba.com(国外的) 用户名cnbbs1
外挂高手
好的工具下载网站(数据恢复)
小谢
222.186.200.129 IP地址ftp://222.186.200.129/
开放源代码软件开发者
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
我的所有网站
http://cnbbs.tengyi.cn/ http://flysky.zk.cn/ http://flyskys.free.cnwsky.com/ http://skyfly.vhosting.cn/ http://cnbbs.s43.eatj.com/http://www39.websamba.com/cnbbs1
星座
没事看看
湖北省软件公共开发平台
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
源码下载
源码下载,不过可能有病
登陆广告赚钱
第二课堂教学
红色特卫队
网络硬盘
222.186.200.129 IP地址ftp://222.186.200.129/ struts的项目
网页素材
设计模式的资料
? CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; ? Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的; ? Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; ? java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接近一万了,同时在线人数也在一千左右,人气很旺的; ? IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远的蓝色巨人;
较好的.NET站点
常上的网站
163邮箱登陆
http://www.51.com/里申请的主页
java研究网
个人空间用户号1397139(6336259)
中国IT实验实
参照网站
常用软件下载
日语在线翻译
日语视频教程下载
网上打电话
鬼子页面格式网页
建网站用的网站
.net免费空间(可用)
ftp名webmaster@flysky.zk.cn
100M免费空间(可用)
用户名cnbbs 产品类型: 100M 永久个人免费主页 网址:http://cnbbs.tengyi.cn 用户名:cnbbs FTP地址:go1.tengyi.cn
google.com提高访问量
个人主页
222.186.200.129 IP地址ftp://222.186.200.129/ 另一名为cnbbss http://www.abc.ful.cn/index.htm另一个空间
国外的jsp空间
用户名 cnbbs, 我的网址 http://cnbbs.s43.eatj.com/ Your username (AppId): cnbbs Your password: Please click the link to confirm http://s43.eatj.com/confirm.jsp?username=cnbbs Thank you for using eatj.com
待升请的.net空间
用户名flysky
找免费网站的
http://uaca.net/lanmu.php?lid=8&page=1//这个还不错
比较好的asp100M空间(可用)
flybbs 61.152.96.203 flyskys 登陆用户名为flysky 管理地址: http://admin.cnwsky.com(注册会员可以在本系统直接管理) 赠送域名:flyskys.free.cnwsky.com(域名未生效前可用此域名进行上传和访问) 上传地址:61.152.96.203 上传帐号:flyskys
等申请jsp中文网站
有关java的技术网站
java特效网站
java网站
Spring 学习网站
中国BS网
小雨java学习课堂
真正能用得上的网页空间
国外的网站
Your user name is: cnbbs1 Your password is: Kt9019 Your URL to access your site is: http://www39.websamba.com/cnbbs1 Direct your FTP client program to ftp39.websamba.com
腾翼网
cnbbs.tengyi.cn cnbbs 202.104.237.75
搜索
积分与排名
积分 - 286993
排名 - 199
最新评论
1. re: 在.NET中获取一台电脑名,IP地址及当前用户名
大放送
--呜呜呜呜呜
2. re: java中的日期加一个月的计算
非常感谢。。
--陈怡
3. re: 应同学之邀,破解一个软件,学习逆向工程,文章如下
评论内容较长,点击标题查看
--至乐
4. re: 网页上打印方面的资料
das
--ll;lm,l;m
5. re: 设置Tomcat的UTF-8编码
评论内容较长,点击标题查看
--Jessy
阅读排行榜
1. 中国情诗大全(54403)
2. 设置Tomcat的UTF-8编码(9536)
3. 学习3G技术需要哪些基础知识..(2378)
4. java生成动态类实例并调用里面的方法(2183)
5. 日语基本语法(1202)
评论排行榜
1. 中国情诗大全(42)
2. 学习3G技术需要哪些基础知识..(4)
3. 设置Tomcat的UTF-8编码(3)
4. java生成动态类实例并调用里面的方法(3)
5. 一个北大学子的失恋感悟(2)
多重提交处理(二)
多重提交处理(二)
作者:
fpwang
∣来源:
Matrix
∣
原文地址
∣
2003-9-11
表2当然是一种改善,但我们还是需要一些其他方法。仍然有许多情况会导 致错误。如果用户按下了浏览器的后退键或者刷新了整个网页会怎么样?如果用户的浏览器关闭了JavaScript的功能或者浏览器不能处理会如何呢?我们还是可以处理这个问题的,但是为了取代防止多重提交,我们需要在后端通过表单处理的服务端小程序处理它们。
为了理解如何解决多重提交问题,我们必须首先理解服务端小程序会话(sessions)机制。每个人都知道,HTTP协议的固有性质中并不对状态(客户端请求信息的历史记录)进行记录。为了处理状态,我们需要一些方法使浏览器能够将当前请求与其他大量请求联系起来。会话(session)程序提供给我们一个解决这个问题的方案。HttpServlet中的方法doGet()和doPost()使用了两个指定的参数:HttpServletRequest和HttpServletResponse。服务端小程序请求参数使我们能够访问会话(session)。会话为访问和存储状态提供了机制。
什么才是会话(session)呢?会话(session)包括很多内容:
状态集——由web服务器管理并且由特定用户所有请求所共享的详细表示描述。
存储空间——通过HttpSession接口至少将HttpServlets所需状态数据和定义存储起来。
在我们具体了解如何使用服务器端方案解决我们的问题之前,我们还需要了解服务端小程序会话(session)的生命周期。与EJB及其他服务端实体一样,会话在生存期中通过一个定义的状态集运行。下图显示了会话的生命周期。Servlet可在三种特定的状态中转换:不存在(does not exist),新建(new),非新建(not new/或使用中in-use)。
图3:服务端小程序会话(session)生命周期
a) 会话在开始时处于不存在状态。会话从这一状态开始或者由于许多原因而返回到此状态。最主要的原因就是用户以前没有访问过这些状态或者是由于用户脱离(超时)站点或退出使会话被设置为无效。
b) 当会话被建立时便会从“不存在”状态进入“新建”状态。新建与非新建状态的区分是非常重要的,因为HTTP协议不记录状态信息。根据servlet详细说明书描述,在客户端返回会话给服务端之前会话不能够进入非新建状态(即从预期会话转变为当前会话)。这样在客户端不知道或者还没有决定加入会话时会话处于新建状态。
c) 当会话通过cookie或是重写URL()返回到服务器时,会话就变为“使用中”或“非新建”状态。
d) 通过各种get与set方法继续使用会话会使其维持在“使用中”状态。
e) 当会话由于长时间没有被使用而超时或显式的被设为无效则会发生图中所示的5以及6所标识的转移。不同应用服务器用不同方式处理超时。BEA公司的WebLogic使应用部署者能够通过与web应用一起打包的特殊部署描述脚本(weblogic.xml)设置会话超时的时限。
现在我们了解了会话的生命周期,那么如何获得一个会话并有效的使用它呢?接口HttpServletRequest提供了两个关于会话的方法:
public HttpSession getSession()返回一个新的会话或一个已存在的会话。
如果提供一个有效的会话ID(可能是通过cookie)则返回一个存在的会话。返回新的会话可能会有许多原因:用户最初的会话(无法提供有效会话ID);会话超过有效时间(提供了会话ID);一个无效的会话(提供了会话ID);或者是明确指出会话无效(提供了会话ID)。
public HttpSession getSession(boolean)可能返回新会话、存在的会话或者空。getSession(true)尽可能返回一个存在的会话。否则创建一个新会话。getSession(false) 尽可能返回一个存在的会话否则返回空。
我们还是只解决了手边一半的问题。我们希望能够跳过会话“新建”状态并自动的转换到会话“使用中”状态。我们能够通过重定向浏览器到处理服务端小程序自动的实现这些。表3把服务端小程序会话逻辑和重定向用户端与有效会话到处理服务端小程序的能力结合在一起。
表3:RedirectServlet.java
01: package multiplesubmits;
02:
03: import java.io.*;
04: import java.util.Date;
05: import javax.servlet.*;
06: import javax.servlet.http.*;
07:
08: public class RedirectServlet extends HttpServlet{
09: public void doGet (HttpServletRequest req, HttpServletResponse res)
10: throws ServletException, IOException {
11: HttpSession session = req.getSession(false);
12: System.out.println("");
13: System.out.println("-------------------------------------");
14: System.out.println("SessionServlet::doGet");
15: System.out.println("Session requested ID in Request:" +
16: req.getRequestedSessionId());
17: if ( null == req.getRequestedSessionId() ) {
18: System.out.println("No session ID, first call,
creating new session and forwarding");
19: session = req.getSession(true);
20: System.out.println("Generated session ID in Request: " +
21: session.getId());
22: String encodedURL = res.encodeURL("/RedirectServlet");
23: System.out.println("res.encodeURL(\"/RedirectServlet\");="
+encodedURL);
24: res.sendRedirect(encodedURL);
25: //
26: // RequestDispatcher rd = getServletContext().getRequestDispatcher(encodedURL);
27: // rd.forward(req,res);
28: //
29: return;
30: }
31: else {
32: System.out.println("Session id = " +
req.getRequestedSessionId() );
33: System.out.println("No redirect required");
34: }
35:
36: HandleRequest(req,res);
37: System.out.println("SessionServlet::doGet returning");
38: System.out.println("------------------------------------");
39: return;
40: }
41:
42: void HandleRequest(HttpServletRequest req, HttpServletResponse res)
43: throws IOException {
44: System.out.println("SessionServlet::HandleRequest called");
45: res.setContentType("text/html");
46: PrintWriter out = res.getWriter();
47: Date date = new Date();
48: out.println("<html>");
49: out.println("<head><title>Ticket Confirmation</title></head>");
50: out.println("<body>");
51: out.println("<h1>The Current Date And Time Is:</h1><br>");
52: out.println("<h3>" + date.toString() + "</h3>");
53: out.println("</body>");
54: out.println("</html>");
55: System.out.println("SessionServlet::HandleRequest returning");
56: return;
57: }
58: }
这如何解决我们的问题的呢?测试上面这段代码显示出在11行我们尝试获得一个会话的句柄。在17行我们通过检测为空的会话ID或检测有效会话ID来确定存在一个有效的会话。如果不存在会话就执行18-29行程序。通过下述方法我们处理多重提交的问题,在19行首先建立一个会话,在22行使用URL编码添加新会话ID,并且在24行重定向我们的服务端小程序到新的URL编码。
不熟悉重写URL的读者可参考15行到23行。一个HttpServlet对象可以重写URL。这个过程将一个会话ID插入到URL。底层的应用服务器能够自动的用编码URL提供给服务端小程序或JSP一个存在的会话。由于这依赖于应用服务器,为了使上面的例子可以运行,你可能需要设置环境使URL能够重写!
总结
在这篇文章中,我们讨论了多重提交问题的许多解决方案。每一个方案都有优点和缺陷。在处理问题时,要清晰的理解和权衡解决方案多方面的优点和缺陷。我们最后的例子有利于解决客户端额外重复的访问和浏览的问题。JavaScript脚本的方法是最好的,但是需要客户端支持才能够运行。和其他任何问题一样,会有一大堆解决方案,每个方案都会有其自己的优缺点。掌握每个方案的优缺点,有利于我们为解决问题作出最好的选择。
matrix开源技术
经
onjava
授权翻译并发布.
如果你对此文章有任何看法或建议,请到
Matrix论坛
发表您的意见.
注明: 如果对matrix的翻译文章系列感兴趣,请点击
oreilly和javaworld文章翻译计划
查看详细情况
您也可以点击-
fpwang
查看翻译作者的详细信息
posted on 2006-03-20 19:31
天外飞仙
阅读(247)
评论(0)
编辑
收藏
所属分类:
java
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Java中的回调函数实例说明
关于weblogic下静态页面下载文件(配置mime类型)的疑问!!!
Java1.5泛型指南中文版(Java1.5 Generic Tutorial)
日期操作java转载
AJAX实践DWR篇
JSP标签库参考文章
(转载)Java中的类反射机制
抽象类的用途
深入理解abstract class和interface
java的30个学习目标
Powered by:
BlogJava
Copyright © 天外飞仙