Servlet请求转发与重定向的区别 Session&Application 总结笔记

HttpServletRequest


# 主要的方法
@ getParameter() //获取请求的参数(单个)
@ getParameterValues() //获取请求的参数(多个)
@ getContextPath() //获取项目的根目录
@ setAttribute(key,value)//设置request属性
@ getAttribute(key)//获取request属性
@ getRequestDispatcher("URL")//获取URL参数形式的Dispatcher对象。这个对象中调用forward(req,res)进行跳转
@ getSession() //获取session
...

# 请求转发(request)与重新定向(response)的区别
@ 请求转发的url不会发生变化(request)
因为请求转发,说明了一个请求没有结束。而是转发到另外的一个资源对这个请求继续处理,直到这个请求结束。如果
在这个期间有多次请求转发,那么这些处理这个请求的程序,都会共享一个reuqest

@ 重新定向的url会发生变化(response)
因为请求的资源得到了服务器的响应,说明了这个请求道这里就终止了。

@ 请求转发request是共享的
@ 重新定向request不是共享的

例如:
请求转发:request.getReuqestDispatcher("url").forward(request,response) ;
重新定向:response.sendredirect("url") ;

request:一次请求
response:一次响应


# HttpSession
@ 一次会话对象,只要用户登录了站点,这个站点的服务器就会分配一个session为当前用户服务,直到用户离开本站或者关闭浏览器或者
session超时。都会导致session销毁,再次访问就重新分配一个session

@ 每一个session都具有自己的一个id。这些id不会重复,服务器根据session中的id来区分这些session

@ 每一个用都具有一个session对象

@ 一次会话是包含多次请求,作用于范围大于一次请求。所以我们会将一些与用户有关的数据保存在session中。

@ 一些主要的方法:
* void setAttribute(key,value) ;//设置session属性
* Object getAttribute(key) ;//获取session属性
* void removeAttribute(key) ;//删除session中的某一个属性
* String getId() ;//获取session中的id
* void invalidate() ;//销毁session
* boolean isNew() ;//判断这个session是否是一个新的session,由此可以判断用户是否第一次登陆
* void setMaxInactiveInterval() ;//设置session的最大间隔时间
* int getMaxInactiveInterval() ;//获取session的最大间隔时间
* int getCreateTime() ;//session的创建时间

@ session的作用域是一次会话

# ServletContext application(了解)


@ application的作用域是一次服务,也就是说当服务器启动的时候会初始化ServletContext对象(容器)。只有
服务器关闭或者异常关闭,ServletContext对象同时被释放。

@ set/getAttribute方法,设置与获取属性
@ 获取Application
第一种方式:
ServletContext application = this.getServletConfig().getServletContext() ;
第二种方式:
ServletContext application = request.getSession().getServletContext() ;

































































你可能感兴趣的:(session,application)