细说Servlet之 详解HttpServletRequest对象
2013-10-29 01:32
543 查看
HttpServletRequest对象代表客户端的请求,当客户端通过http协议访问服务器时,http请求头中的所有信息都封装在这个对象中,可以通过HttpServletRequest的方法获得信息。
获得客户机信息常用方法
补充:服务器端口号不变,而客户机的端口号随机,过了长连接的30秒后随机产生。
HttpServletRequest常用方法:
1.获得客户机请求头:
getHeader() 通过消息头获取信息
getHeaders()
getHeaderNames() 返回所有消息头的名字,返回Enumeration<String>
2.获得客户机请求参数:
getParameter() 根据名字获取值
getParameterValues() 得到根据名字返回多个值,返回String数组,常用于复选框
getParameterNames() 得到所有请求参数的名字
3.请求转发:指一个web资源受到客户端请求后,通知服务器去调用另一个web资源进行处理。
request对象同时也是一个域对象,开发人员通过request对象带给其它web资源处理。
forward(request,response)详解:把request和response对象传递给下一个Servlet,因为两个Servlet用的是同一个 请求和响应对象,所以能共享数据。
setAttribute()存放一个属性到请求对象里,request的attribute在一次http请求中有效,只要没回到浏览 器就算一次请求。
注意:
1.转向是在web服务器发生的,使用forward()不能转发到该web应用外的url。
2.因为forward()是发生在web服务器,所以两个Servlet使用同一个request和response对象。
3.使用sendRedirect()方法不能通过setAttribute()把属性传递给下一个Servlet,因为重定向后就不在一次请求中。
面试题:
sendRedirect()和forward()的区别是什么?
答:1.实际发生的位置不一样。
sendRedirect()发生在浏览器
forward()发生在web服务器
2.用法不一样
request.getRequestDispatcher("/资源url").forward(request,response)
response.sendRedirect("/web应用/资源url") 需要加上应用名,因为是在浏览器端进行定位
3.能够去的url范围不一样
sendRedirect()能够去任何url
forward()只能去当web应用的资源
什么是一次http请求?
答:只要没有停止,也没有回到浏览器重定向,就算走了100个Servlet,只要没有回到浏览器(重定向会回到浏览器再次请求),就还算一次http请求。
http请求时序图
获得客户机信息常用方法
补充:服务器端口号不变,而客户机的端口号随机,过了长连接的30秒后随机产生。
HttpServletRequest常用方法:
1.获得客户机请求头:
getHeader() 通过消息头获取信息
getHeaders()
getHeaderNames() 返回所有消息头的名字,返回Enumeration<String>
2.获得客户机请求参数:
getParameter() 根据名字获取值
getParameterValues() 得到根据名字返回多个值,返回String数组,常用于复选框
getParameterNames() 得到所有请求参数的名字
3.请求转发:指一个web资源受到客户端请求后,通知服务器去调用另一个web资源进行处理。
request对象同时也是一个域对象,开发人员通过request对象带给其它web资源处理。
forward(request,response)详解:把request和response对象传递给下一个Servlet,因为两个Servlet用的是同一个 请求和响应对象,所以能共享数据。
setAttribute()存放一个属性到请求对象里,request的attribute在一次http请求中有效,只要没回到浏览 器就算一次请求。
注意:
1.转向是在web服务器发生的,使用forward()不能转发到该web应用外的url。
2.因为forward()是发生在web服务器,所以两个Servlet使用同一个request和response对象。
3.使用sendRedirect()方法不能通过setAttribute()把属性传递给下一个Servlet,因为重定向后就不在一次请求中。
面试题:
sendRedirect()和forward()的区别是什么?
答:1.实际发生的位置不一样。
sendRedirect()发生在浏览器
forward()发生在web服务器
2.用法不一样
request.getRequestDispatcher("/资源url").forward(request,response)
response.sendRedirect("/web应用/资源url") 需要加上应用名,因为是在浏览器端进行定位
3.能够去的url范围不一样
sendRedirect()能够去任何url
forward()只能去当web应用的资源
什么是一次http请求?
答:只要没有停止,也没有回到浏览器重定向,就算走了100个Servlet,只要没有回到浏览器(重定向会回到浏览器再次请求),就还算一次http请求。
http请求时序图
相关文章推荐
- JavaWeb(一)之细说Servlet
- 韩顺平2011细说Servlet笔记1
- [Servlet] 配置listener监听器(HttpSessionListener和HttpSessionBindingListener)细说
- [Servlet] 配置listener监听器(HttpSessionListener和HttpSessionBindingListener)细说
- 细说部分servlet知识点(会陆续补充)
- 细说servlet之 深度剖析http协议
- 生成验证码(摘自韩顺平细说servlet)
- 细说Servlet 保存会话的技术 Session
- 细说Servlet-- Cookie
- 细说servlet之 深度剖析http协议
- 细说servlet--会话技术
- 细说Servlet Cookie
- 细说Servlet 什么是Servlet以及Servlet的三种开发方式
- 细说servlet--开发servlet
- 细说Servlet 保存会话的技术 Session
- 细说Servlet
- 细说Servlet Servlet细节
- 细说SCA V1.0规范(3) -- Domain与业务
- 严重: Servlet.service() for servlet [default] in context with path [/a] threw exception [edu.yale.its.
- 修改servlet无需重启tomcat