2020-10-20 JavaWeb

it2023-03-16  82

会话技术

概念

request:保存请求的信息 response:保存响应的信息

每次请求响应后request和response的生命周期结束。第二次请求,又生成新的request\response对象,响应后,第二次生成的request\response又结束了,如果在这个过程中(例如上购物网站的过程中,多次选择的商品存到购物车,这些商品的信息如何保存呢?又或者用户登陆后,多次浏览(请求响应后)后如何知道用户是已经登陆过呢?),用request/response对象是无法保存相关信息,因为它们的生成周期只存在一次请求、响应过程。

怎么在浏览器与服务器之间的多次请求、响应过程中保存信息?这里就要用到会话技术。一个会话就是服务器与浏览器之间的一次通话,会包含浏览器与服务器之间的多次请求、响应信息,一直到浏览器退出(会话借结束的一种方式),会话结束。

跟踪机制: 使用会话跟踪机制,可以维护每个用户的会话信息,也就是为不同的用户保存不同的数据。

常用的会话跟踪机制: session技术,cookie技术,url重写,隐藏表单域。

JSP内置对象session

session对象用来存储有关用户会话的所有信息。每个session对象都与一个浏览器一一对应。

使用: jsp:<% session.xxx %> servlet:HttpSession session=request.getSession(); session.xxx;

session常用方法: setAttribute(String key,Object value) 以key/value的形式保存对象值 getAttribute(String key) 通过key获取对象值 getMaxInactiveInterval() 获取session的有效非活动时间,以秒为单位 getId() 获取session对象的编号 invalidate() 设置session对象失效 removeAttribute(String key) 删除session保存的对象值

session实现访问控制

<% User user = (User) session.getAttribute("user"); if (user == null) { response.sendRedirect("login.html"); //不存在则重定向到登录页面 } %>

include指令

可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件,从而降低代码的冗余问题,也便于修改共性内容。

//引入一个文件,可以将上面session实现访问控制的代码写入这个文件 //然后需要进行登录验证的页面引入,就可以实现访问控制,实现页面没有登录无法访问 <%@ include file = "checkuser.jsp" %>

JSP内置对象cookie

cookie与session的区别 1>session是在服务器端保存信息,Cookie是在客户端保存信息 2>session中保存的是对象,Cookie保存的是字符串 3>session随会话结束而关闭,Cookie可以长期保存在客户端 4>Cookie通常用于保存不重要的信息,重要的信息使用session保存

使用

Cookie newCookie=new Cookie("parameter", "value");//创建cookie对象 response.addCookie(newCookie);//把对象存放于response,返回客户端 //获取浏览器的cookie Cookie cs[]=request.getCookies(); for(Cookie cookie : cs){ String cName = cookie.getName(); if(null!=cName){ if("user".equals(cName)){ String val=cookie.getValue(); sysout(val); } } }

cookie常用方法

setMaxAge(int expiry) 设置Cookie的有效期,以秒为单位 setValue(String value) 在Cookie创建后,对Cookie进行赋值 getName() 获取Cookie的名称 getValue() 获取Cookie的值 getMaxAge() 获取Cookie的有效时间,以秒为单位

JSP内置对象application

application:类似于系统的全局变量,在服务中存在一个对象实例,用于实现用户之间的数据共享。

获取application对象

//servlet中获取application对象 ServletContext application=this.getServletContext();

常用方法

setAttribute(String key,Object value) 以key/value的形式保存对象值 getAttribute(String key) 通过key获取对象值 getRealPath(String path) 返回相对路径的真实路径

内置对象的作用范围

page在一个页面范围内有效,通过pageContext对象访问该范围内的对象request在一个服务器请求范围内有效,与客户端请求绑定一起session在一次会话范围内容有效,在会话期间与session绑定的对象皆属于该范围application在一个应用服务器范围内有效,当应用服务启动后即创建该对象,并向所有用户所共享
最新回复(0)