request对象
request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
request对象提供了很多方法,可以通过这个对象获取用户提交的数据,客户的请求参数;
例如:获取客户机信息:String getRemoteAddr() 方法返回发出请求的客户机的IP地址、String getMethod ()得到客户机请求方式、String getContextPath() 获得工程虚拟目录名称;
获取请求头信息:String getHeader(String name)以 String
的形式返回指定请求头的值、long getDateHeader(String name)以表示 Date
对象的 long
值的形式返回指定请求头的值,值是毫秒数 、Int getIntHeader (String name)以 int
的形式返回指定请求头的值。
获取请求参数:String getParameter(String name) 获取指定参数的值、Enumeration getParameterNames()以枚举的形式返回所有参数值、Map getParameterMap()以Map形式返回参数的映射中的键的类型为 String。参数映射中的值的类型为 String 数组、String[] getParameterValues(String name)返回包含给定请求参数拥有的所有值的 String
对象数组
应用:可以通过request对象实现转发(在服务器端进行转发):
void setAttribute(String name,Object o) 存储数据到request域中 *Object getAttribute(String name) 获取request域中的数据
void removeAttribute(String name)移除request域中的数据
request.getRequestDispatcher("服务器端的路径").forward(request, response);
response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。即对象用户的请求作出响应的对象;
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
应用:通过response对象进行重定向(页面登录):
先设置302状态码:response.setStatus(302); 设置地址response.setHeader("location","客户端路径");
或者 使用重定向方法 response.sendRedirect("客户端路径");
页面定时刷新(页面读秒操作)设置响应头 refresh response.setHead("refresh","5,url=客户端路径"); 5代表5秒
实现文件下载(初级下载):设置头信息:*Content-Disposition attachment;filename=文件名称 *以附件的形式打开
输出验证码:
会话的定义:
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
*会话过程中要解决的一些问题?
每个用户与服务器进行交互的过程中,各自会有一些数据,程序要想办法保存每个用户的数据。
保存会话数据的两种技术:
*Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
*Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
*Session和Cookie的原理图:
*cookie的主要方法:
public Cookie(String name,String value) Cookie的构造方法
String setValue()与getValue()方法 设置值,获取值
Void setMaxAge()与getMaxAge()方法 设置有效时间,获取有效路径
*失效cookie setMaxAge(0); 前提条件:设置有效路径(和之间设置过相同)
Void setPath()与getPath()方法 设置有效路径,获取有效路径
*设置默认的有效路径
*配置/last /day11
*设置/last /day11/servlet
Void setDomain()与getDomain()方法 设置有效域名,获取有效域名
*www.sina.com.cn
*sports.sina.com.cn
*设置有效域名 setDmain(“.sina.com.cn);
*xxx.sina.com.cn
String getName()方法 获取cookie的名称
*会话级别的cookie: 默认保存到浏览器的内存中
*持久的cookie: 把cookie保存到磁盘上。通过setMaxAge()进行设置
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中(服务器端)。
session的创建和销毁
*第一次访问资源,调用那个request.getSession(),创建session
*销毁
*非正常关闭服务器()
*session的过期,默认是30分钟。
*可以在web.xml中修改值,单位是分钟;
<session-config>
<session-timeout>30</session-timeout>
</session-config>
*调用session.invalidate() 手动销毁session
Servlet的域对象:
ServletContext :代表整个web应用
Session :一次会话,存放个人信息
Request :一次请求,存放错误处理
参考:传智播客 www.itcast.cn