java httpservelet_[Java教程]HttpServeletRequest

[Java教程]HttpServeletRequest

0 2017-07-27 00:00:16

一.HttpServeletRequest 接口(javax.servlet.http)

定义:public interface HttpServletRequestextends ServletRequest

Request简介:

原理:

当服务器获取到客户端的HTTP协议的请求部分之后,将HTTP协议的请求部分进行解析后封装为HTTPServletRequest对象,tomcat同时创建好response对象,当调用当前的Servlet时,Tomcat就将创建好的request/response传递到被调用的Servlet下的doget/dopost方法中,当本次响应完毕,request/response结束.

生命周期:

请求一次创建一次,请求结束,对象被回收

作用:

1)获取到请求部分三大块(请求行,请求头,请求体),客户端的部分信息IP;

2)request当做域对象使用;

3)利用request实现请求转发;

Request内置几种MAP

1)获取消息头

2)表单参数

3)空MAP(程序中产生键值对的数据)

常用方法:

1)获取请求行

request.getMethod():本次请求方式;

request.getContextPath():当前web应用路径;

request.getRomteAddr():远程客户端的ip;

2)获取请求头

request.getHeader(name):

request.getHeaderNames():

3)获取请求体

request.getParameter(name);

request.getParameterNames();

request.getParameterMap();

request.getParameterValues();

二.请求转发

1.何谓请求转发:

当我们从客户端向服务端AAServlet发起请求的时候,在AAServlet中没有立即进行响应,而是将request/response继续向后传递,传递到BBServlet,在BBServlet

中完成了本次响应.

2.为何会有请求转发

因为本次请求到服务端希望做一些事情,但是在AAServlet做这件事情不方便,将要做的事情分为2步来实现,一部分事情在AAServlet实现,剩余部分在BBServlet实现.

3.请求转发的本质

其实服务端有2段代码,AA,BB,AA执行完毕之后,执行BB,AA和BB共享同一对request/response

三.容易混淆API总结

1.获取操作数据WEB.     *.getInitParameterNames();

*.getInitParamete(name);

*: getServletContext() / getServletConfig()

2.控制ServletContext/Request空MAP(共享数据) (向其中放数据,获取数据,移除数据)

*.setAttribute(name,obj);

*.getAttributeNames();

*.getAttribute(name);

*.removeAttribute(name);

*:ServletContext /Request

3.获取表单参数

request.getParameterValues(name)

request.getParameter(name)

request.getParameterMap()

request.getParameterNames()

4.获取请求头

request.getHeader(name);

request.getHeaderNames();

四.提问: ServletContext中的空MAP和request中的空MAP的区别和联系?

都可以存放用户自定义的数据,但是这些数据存在的时间范围不同:

1)ServletContext中的数据在任意的Servlet中都可以获取到;

2)Request中的数据只能在本次请求内可以获取到.

五.乱码问题:

1)服务端向客户端响应内容中有中文乱码(Tomcat8.5无需手动转码,服务器已自动处理)

response.setContentType(“text/html;chaset=utf-8”)

2)浏览器乱码问题(会调用即可)

DownLoadUtils.setConentType();

Response.setContentDosposition(“  ;;file=哈哈.txt”);

3)以GET方式传递中文

哈哈.txt

手动转码

4)以POST方式传递中文

//告诉tomcat请求体部分采用的编码格式

Request.setCharacterEncoding(“utf-8”);

六.重定向/转发区别?

1)重定向2次请求响应;转发1次请求响应;

2)开发中,优先使用转发(效率,性能);

3)浏览器地址栏路径变化情况;

4)重定向实现代码格式:

response.sendRedirect(“/项目名称/路径”);

转发实现代码格式:

/当前项目路径

request.getRequestDispather(“/路径”).forWard(request,reponse);

本文网址:http://www.shaoqun.com/a/318074.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

https

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值