javaWeb学习
- 格式:doc
- 大小:30.00 KB
- 文档页数:3
JavaWeb学习笔记___d9.txt
2010-12-14 22:51
Session (会话)
Session对象
1、存在于服务器端
2、依赖于线程
3、Session的生命周期,跟一次浏览器窗口有关,只要窗口不关闭,Session
便存在,所以称会话。
Session
1、技术内核使用cookie:
session参在与服务器端
服务器端为多个session创建不同的session id
把session id以cookie的形式送入到客户端
request.getSession()内涵是:在cookie中查找
session id,若cookie中存在sessionId,则根据
sessionId,将sessionID对应的session找到,
并返回;若cookie中并不存在sessionID,
服务器端创建session,并将sessionID写入到Cookie中。
2、当关掉对话窗口(结束一次会话)时,session并没有被删除,只是关掉对话窗口时,cookie被清空
无法再获得sessionID,无法找到对应的session,但是session还是存在于服务器端。
若想真正删除session,需要调用HttpSession中的invalidate()方法,使得session失效。
3、服务器为了考虑效率,不会让无用的session存在很久,Http协议是无连接协议,服务器端无法判断客户端是否关闭“会话”,
所以服务器设置了失效时间。
若用户在了段时间内,不操作session,则系统删除session。
我们可以设置此时间setMaxInactiveInterval(),但不推荐用户自行设置。
4、session技术在很大程度上,依赖于Cookie,若Cookie被禁用,或浏览器不支持Cookie,则session就无法使用。
5、为了解决第四点所引申的session不可用的问题。
我们使用URL重写,将sessionID通过地址栏提交参数,发给服务器端。
使用response.encodeURL()在地址栏中加载sessionID 通过
request.getParameter(jsessionid)得到sessionID
a、String url encodeURL(String url);通过超链接,重新发出请求,此请求会在地址之后自动加上sessionID及其ID值,
此方法又被子称为URL重写,或重新封装。
b、String url encodeRedirectURL(String url);将地址封装成sendRedirect方法所需要的地址,并在此地址后加入sessionID
Servlet API小结:
HttpServletRequest:接口
1、setAttribute()、getAttribute()、getAttributeNames
getParameter()//只能获得表单中的内容
2、getCharacterEncoding()、setCharacterEncoding()
获得、设置request中的数据编码方式
3、getContentType()得到MIME,即IE文件打开的方式
4、Cookie[] getCookies()
得到当前所有的cookie
5、getSession()
获得或创建session
6、getRequestDispatcher(String path)将目标页面封装,为了forward()进行页面转向。
7、getRequestedSessionId()得到一个session的id
总结:
request对象封装了客户端的请求和相关信息。
包括:
1、cookie
2、封装http协议的报头(请求方式、请求服务器的端口、请求服务器ip 地址、编码方式、
请求的项目用的名字、请求消息的长度、浏览器的信息、客户端信息……)
3、表单数据
HttpServletResponse:接口(响应)
用它跟客户端联系,并且向客户端发送数据
1、getCharacterEncoding()得到向客户端发送数据的默认编码方式。
2、getContentType()得到向客户端发送数据的默认类型(html或者jpeg等等)。
3、getOutputStream()得到与客户端建立的输出字节流,传输二进制。
4、getWriter()得到与客户建立的输出字符流,传输文本文件。
5、setCharacterEncoding()设置的是要发送给客户端的数据的编码方式。
6、setContentType(String type)设置并告知客户端,执行这些二进制时,用何种类型打开(html、jpeg等等)。
7、addCookie(Cookie cookie)将cookie的键和键值成对的送到客户端
8、一些的set方法用来指定客户端运行时的一些属性。
例:缓存、打开方式、消息头的控制等等
9、encodeURL(String url)、encodeRedirectURL(String url)**在地址后追加session的id,用来实现cookie被禁用后,session依然可以使用。
10、sendRedirect(String location)页面的重定向
Cookie:类
1、Cookie(String name,String value)创建Cookie并将键,键值,存入到Cookie中
2、getMaxAge(int)设置Cookie的生命服周期,当参数是负数时:窗口(会话)被关掉时,清空Cookie
3、getName()获得Cookie中的键
4、getValue()获得Cookie中的健值
HttpSession:接口
1、getAttribute(String name)、setAttribute(String name)
2、getId()获得session的唯一标识id
3、getMaxInactiveInterval()、setMaxInactiveInterval()得到和设置session的失效时间
4、invalidate()使得session失效
5、isNew()布尔类型,判断session是否是新创建的
HttpServlet:类
1、doGet(HttpServletRequest req,HttpServletResponse resp)
当用户以get方式发出请求时,servlet调用此方法
2、doPost(HttpServletRequest req,HttpServletResponse resp)
当用户以post方式发出请求时,servlet调用此方法
3、public void init()throws ServletException
用户第一次请求servlet的时候,容器需建立servlet对象,同时调用
init()方法
4、service(ServletRequest req,ServletResponse res)
开辟多线程,并根据用户提交的方式,选择调用doGet()还是doPost()方法
此方法不建议重写。