应用程序状态管理①隐藏表单字段②cookie③session④URL重写

应用程序状态管理:
服务器连接时无状态的,每次发送的请求对于服务器都是新的,而不知道两次是否是同一人发送的,为了解决应用程序状态,有4个常用方法:
表单隐藏字段:动态生成的才有效
cookie:记录在浏览器端,键值对,可见,不安全
session:记录在服务器端,也是键值对,服务器维护需要大量资源,可以设定有效时限
URL重写:在用户禁用cookie时,发送地址包含有会话ID

Cookie
是web服务器发送到客户端浏览器的简短文本信息,在第一次访问服务器后就由服务器向客户端浏览器发送,以后再访问同一个站点或域时浏览器就会毫无更改的返回该文本信息

存储的是键值对字符串数组
Cookie cookie=new Cookie("","")构造cookie对象,指定名称和值

cookie.setPath("/")设置cookie有效路径;如果不设置,默认同一个文件夹下才有效
cookie.setMaxAge()设置cookie存活时间,单位是:秒;如果不设置,默认cookie将会随着浏览器的关闭而消失
cookie.getMaxAge()得到cookie存活时间,单位是:秒
cookie.setName("")设置cookie的名称
cookie.getName()得到cookie的名称
cookie.setValue()设置cookie的值
cookie.getValue()得到cookie的值
使用HttpServletResponse对象的addCookie()方法将Cookie添加到响应头中
使用HttpServletRequest对象的getCookies()方法返回一个Cookie对象数组

Session
是一种客户端与服务器端保持状态的解决方案
Session对象是客户端与服务器端之间建立的互动信息状态对象,不同的用户连接将得到不同的Session

分为:1、HttpSession:记录会话
2、SQLSession:记录持久层连接数据库

创建Session对象:调用HttpServletRequest.getSession()、HttpServletRequest.getSession(true)得到一个已经有的Session,如果没有回创建一个新的Session
HttpServletRequest.getSession(false)得到一个已经有的Session,如果没有返回null

setAttribute("String","Object")在Session对象中用一个名字绑定一个对象
getAttribute("String")通过名字获得Session对象中的对象
removeAttribute("String")通过名字删除Session中的对应的对象
invalidate()会话结束
setMaxInactiveInterval()设置请求的最大间隔时间,单位:秒

<Session-config>
<Session-timeout>15</Session-timeout> 设置会话超时,单位:分钟
</Session-config>

销毁会话方式:
1、设置会话超时
2、在Session对象上调用invalidate()
3、应用结束

在超时时间内再次发送请求,http请求将发送保存SessionID的Cookie,响应不会产生新的SessionID值;一旦Session对象被销毁,所有绑定到该对象中的属性也会被销毁

Application(web应用上下文)域范围和Session域范围
Application(web应用上下文)中的对象在整个web应用程序运行过程中都被维护
Session范围内的对象仅仅在一个持续的会话期间被维护

时间: 2024-08-21 12:57:41

应用程序状态管理①隐藏表单字段②cookie③session④URL重写的相关文章

cookie session URL重写 与考试

状态管理.Cookie.Session.URL重写 HTTP协议:无状态的连接(每次连接都是新的请求)1.隐藏字段 <input type="hidden" name="session" value=""/> 在响应中进行操作2.Cookie 保存到客户端3.Session 保存到服务器4.用户禁用Cookie:使用URL重写 在URL后加上jsessionid=123; Cookie原理1.数据以"键-值"对的形

Cookie / Session / URL重写

Cookie //创建一个Cookie对象 Cookie cookie = new Cookie("username","JACK"); //在客户端存储的时间(生命周期)单位是秒 7天 7*24*60*60 //如果这里设置为0 就表示客户端不保存该cookie 即临时cookie //如果设置为-1 就表示客户端关闭之后就删除该cookie 也可以称之为临时cookie cookie.setMaxAge(-1); //设置cookie在客户端存放的路径 如果不设

隐藏表单域、URL重写、cookie、session

隐藏表单域: 隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式:<input type="hidden" name="..." value="..."> 属性解释:type="hidden"定义隐藏域:name属性定义隐藏域的名称,要保证数据的准确采集,必须定义一个独一无二的名称:value属性定义隐藏

RookeyFrame Bug 表单管理 -&gt; 查看表单 -&gt;编辑字段页面

表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: 位置:Rookey.Frame.UIOperate\EasyUI\UIFrameFactory.cs 里面的这个GetFormFieldInputHTML方法 以前是这样: string onchangeStr = "onchange=\"function(){if(typeof(OnF

深入理解表单脚本系列第二篇——表单字段

× 目录 [1]访问 [2]属性 [3]方法[4]事件 前面的话 表单字段又叫表单元素,表示表单所包含控件,如<input>.<select>等.本文将详细介绍表单字段的内容 访问 每个表单都有elements属性,该属性是表单中所有元素的集合.这个elements集合是一个有序列表,其中包含着表单中的所有字段,如<input>.<textarea>.<button>和<fieldset> 每个表单字段在elements集合中的顺序,

servlet中同一用户不同页面共享数据(sendRedirect、session、隐藏表单)

SendRedirect(“url?parameter=value”); 通过SendRedirect()我们可以将一个页面的信息传递给另外的页面. 注意:1.url表示要跳转到的servlet的url 2.servlet url名和变量之间有?号 3.如果要传递两个以上的值,他们之间要用&号分开,比如: sendRedirect(“url?parameter1=”+val1+”&parameter2=”+val2); 4.传递中文:res.setContentType("tex

所需的防伪表单字段“__RequestVerificationToken”不存在

错误提示为:所需的防伪表单字段"__RequestVerificationToken"不存在. <%:Html.AntiForgeryToken()%> 在mvc4中的写法 @Html.AntiForgeryToken(); 当在view中没有写而action上有写时也报上述错误. 当请求为get时也报上述错误. 只是在view中有写而action上没有写  [ValidateAntiForgeryToken]时不报错误 @Html.Raw(value)//输出带有html

★★★【卡法 常用js库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度

[卡法 常用js库]: js汇合 表单验证  cookie设置  日期格式  电话手机号码  email  整数  小数  金额   检查参数长度 // +---------------------------------------------------------------------- // | sunqiang // +---------------------------------------------------------------------- // | Copyrig

Ajax的post表单,不在url后接一大串参数键值对的方法

$('#loginForm').on('submit',function (ev) { //阻止表单参数附在url后面 ev.stopPropagation(); ev.preventDefault(); 再在下面写上Ajax方法 即可阻止url后接一大串键值对参数 stopPropagation()方法 该方法将停止事件的传播,阻止它被分派到其他 Document 节点.在事件传播的任何阶段都可以调用它.注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻