JavaWeb:HttpSession(二)

早上花时间补完最后一点小总结:

1、关于 /:可以代表当前WEB 应用的根目录,也可以代表WEB 站点的根目录。

1)、/ 如果交给浏览器解析,则代表WEB 站点的根目录;如果交给WEB 服务器解析,代表当前WEB 应用的根目录。

2)、代表当前WEB 应用的根目录:在web.xml 文件中,映射路径;请求的转发

   代表当前WEB 站点的根目录:超链接的 href 属性;请求的重定向中的 /

2、关于绝对路径:

1)、写绝对路径肯定不会有问题,写相对路径可能会发生问题。

2)、绝对路径:相对于当前WEB 应用的路径。在/ 代表站点根目录的时候需要在前面加上 contextPath

  例如:<form action="<%= request.getContextPath() %>/processStep1" method="post">

  例如:response.sendRedirect(request.getContextPath() + "/shoppingcart/step2.jsp");

3、表单的重复提交:

1)、重复提交的情况:

①、在表单提交到Servlet 而Servlet又通过请求转发的方式响应了一个 JSP 或HTML 页面,此时地址栏里还保留着Servlet 的那个路径,在响应页面点击“刷新”。

②、在响应页面没有到达时,重复点击“提交按钮”。

③、点击“返回”,再点击“提交”。

2)、不是重复提交的情况:

①、点击“返回”,“刷新”原表单页面,再“提交”。

3)、如何避免表单重复提交

在表单中做一个标记,提交到Servlet 时,检查标记是否存在且是否和预定的标记一样。若一致,则受理请求,并销毁标记;若不一致或没有标记,则直接响应提示信息:“重复提交”。

标记,仅提供一个隐藏域?行不通。因为 清除标记:没有方法清除固定的请求参数。

把标记放在 request 中?行不通。因为 表单页面刷新后,request 已经被销毁,再提交表单是一个新的 request。

把标记放在 session 中?可以!思路:

  >在原表单页面,生成一个随机值token,

  >在原表单页面把token 值放入 session 属性中

  > 在原表单页面,把token 值放入隐藏域中

  >在目标的Servlet 中,获取session 和隐藏域中的token 值

  > 比较两个值是否一致,若一致,受理请求且把session 域中的token 属性清除,若不一致,则响应提示页面:重复提交。

over。

时间: 2024-12-16 17:57:46

JavaWeb:HttpSession(二)的相关文章

JavaWeb 后端 &lt;二&gt; 之 Servlet 学习笔记

JavaWeb 后端 <二> 之 Servlet 学习笔记 一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException ServletRequest req:代表着请

JavaWeb学习 (二十五)————监听器(Listener)

一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行. 1.2.监听器案例--监听window窗口的事件监听器 1 package me.gacl.listener.demo; 2 3 import java.awt.Fram

JavaWeb学习 (二十七)————监听器(Listener)在开发中的应用

监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听器技术来实现这个功能了. 1 package me.gacl.web.listener; 2 3 import javax.servlet.ServletContext; 4 import javax.servlet.http.HttpSessionEvent; 5 import javax.ser

Servlet之javaweb应用(二)

一. 使用 JavaEE 版的 Eclipse 开发动态的 WEB 工程(JavaWEB 项目) 1). 把开发选项切换到 JavaEE 2). 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边 3). 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录 4). 新建一个 Dynamic Web Project(如果没有,下载Eclipse组件.或者去Eclipse官网下载Eclip

JavaWeb学习(二)---Tomcat服务器学习和使用(一)

本文整理自孤傲苍狼大大的博客,,, 一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 1 <Connector port="8080" protocol="HTTP/1

JavaWeb学习 (二十四)————Filter(过滤器)常见应用

一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.Serv

JavaWeb(二)

三.搭建JavaWeb应用开发环境--Tomcat服务器 3.1.疑问:学习web开发,为什么必须要先装一个WEB服务器? 在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了.这说明什么问题? 1.不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者. 2.WEB服务器就是这样一个程序,它用于完成底层网络通迅

JavaWeb——HttpSession常用方法示例

HttpSession接口中方法 getId() getCreationTime() getLastAccessedTime() setMaxInactiveInterval() getMaxInactiveInterval() isNew():如果客户端请求消息中返回了一个与Servlet程序当前获得的HttpSession对象的会话标识号相同,则认为这个HttpSession对象不是新建的 invalidate() getServletContext() setAttribute() get

JavaWeb(二)Tomcat

1.Tomcat 简介 Tomcat 是一个免费的开放源代码的 Servlet 容器,它是 Apache 软件基金会的一个顶级项目,由 Apache,Sun和其他一些公司及个人共同开发而成.由于有了 Sun 的参与与支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中的到体现.(目前Sun已被Oracle收购) 2.Tomcat 的目录结构 bin:存放启动和关闭 Tomcat 的脚本文件 conf:存放 Tomcat 服务器的各种配置文件 lib:存放 Tomcat 服务器

JavaWeb学习(二)

Servlet 1.Servlet简介 Servlet就是sun公司开发动态web的一门技术 sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤: 编写一个类,实现Servlet接口, 把开发好的Java类部署到web服务器中: 把实现了Servlet接口的Java程序叫做:Servlet 2.HelloServlet 新建一个普通的maven项目,删掉里面的src目录,在这个项目里面建立Module:这个空的工程就是Maven主工程