您的位置:首页 > 理论基础 > 计算机网络

细说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请求时序图




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: