1.会话管理技术
(1)隐藏表单
将表单内的html元素设置为hidden,不在页面上显示,然后提交
(2)URL重写
在将参数放到URL上,最后传递给服务器
格式为:http://localhost:8080/servlet?uname="string" 不能有空格
(3)Cookie
客户机在本地硬盘中保存Cookie,并和HTTP请求标头一起发送给服务器。
public String getName() 返回Cookie的名称
public void setMaxAge(int expiry) 设置客户机浏览器保留Cookie值得最大时间
public int getMaxAge() 以秒为单位返回Cookie的最长寿命
public void setValues(String values) 为Cookie 为Cookie设置新值
public String getValues() 返回Cookie的值
Cookie 是作为响应返回给客户端存储的,response.addCookie(cookie)
在使用时从,请求中取出cookie,Cookie ck[] = req.getCookies()
(4)Session
使session失效的三种方式
c1:通过提供setMaxInactiveInterval(int interval) 方法设置最大非活动时间
c2: 直接调用session.invaludate();
c3: 在部署描述符即web.xml中,部署session的生命时长
30(以分钟为单位)
2.setSatus()
setStatus()方法在HttpServletRequest 接口中定义
使用实例:response.setStatus(HttpServletResponse.SC_GONE);
3.请求转发
javax.servlet.RequestDispatcher接口的对象可以实现请求转发
ServletContext接口提供了getRequestDispathcer(String Path) 方法返回RequestDispather 对象
(1)RequestDispacher 提供了include()方法,可以使用此方法将内容纳入其他servlet。
用法:RequestDispather rd = getServletContext().getRequestDispather("path");
rd.include(request,response);必须以request和response作为参数
(2)forward(res,req)方法用于请求转发
4.开发线程安全的servlet
(1)init(),destroy()方法线程安全
(2)局部变量线程安全,局部变量每次调用都会有一个单独的实例
(3)请求属性线程安全
(4)只有上下文属性和会话属性线程不安全,因为随时会被修改
5.过滤器
过滤器是截取客户机和服务器之间的请求和响应的对象
javax.servlet 包的Filter接口和FilterConfig接口和FilterChain接口,用于开发过滤器,要开发过滤器需要在过滤器类中实现Filter接口,下面定义了需要重写的javax.servlet.Filter接口的各种方法
(1)public void init(FilterConfig filt_confg) throws ServletException 初始化过滤器
(2)public void doFilter(ServletRequest req,ServletResponse res,Filterchain filter_chain) 对过滤器进行逻辑操作
(3)public void destroy() 释放过滤器的资源
6.错误状态代码:
(1)信息:信息代码组表示关于收到请求且应用服务器正在处理该请求的消息
SC_SWITCHING_PROTOCOLS:101 表示应用服务器切换了协议
SC_CONTINUE:100 表示客户机可继续与服务器交互
(2)成功:
SC_OK:200 表示成功接收请求
SC_ACCEPTED:202 表示服务器已成功接收请求,并正在处理
(3)重定向:
SC_MOVED_PERMANENTLY: 301 表明资源已永久移动
SC_MOVED_TEMPORARY: 302 表明资源暂时移动
(4)客户端错误
SC_BAD_REQUEST:400 客户端有语法错误
SC_NOT_FOUND: 404 客户机请求的资源不可用
SC_GONE:410 表明资源已不再可用
(5)服务器错误
500 服务器端有阻止其实现请求的错误
501 服务器没有实现请求的功能