JSP四大域对象之Request对象

什么request对象?

  • 就是请求对象,这个对象不是我们自己创建的,而是tomcat服务器帮助我们创建一个对象,我们直接拿来使用即可。
    request对象中封装了所有的请求消息格式中的数据。

request的体系结构?

	javax.servlet.ServletRequest 接口
		--javax.servlet.http.HttpServletRequest 接口
			--org.apache.catalina.connector.RequestFacade 实现类 

request对象原理?

  1. 当我们使用浏览器向服务器发送请求的时候,tomcat服务器会创建一个request对象
  2. request对象被各种传递,直到传递到doGet()/doPost()中

request对象常见的方法?

1. 获取请求消息的方法
  • a. 获取请求行的方法
	String getMethod()//获取请求方式
	String getContextPath()//获取项目的虚拟路径
	String getServletPath()//获取访问的servlet的虚拟路径
	String getRequestURI()//获取请求的URI
	StringBuffer getRequestURL()//获取请求的URL
	String getQueryString()//获取请求参数
//    注意:只有get请求,请求参数才会放在请求行中,才能使用这个方法
	String getProtocol()//获取协议版本号
	String getRemoteAddr()//获取IP地址
  • b.获取请求头的方法
	String getHeader(String name)//根据请求头获取对应的值
	Enumeration<String> getHeaderNames()//获取所有的请求头
	Enumeration<String> getHeaders(String name)//根据请求头获取对应的所有的值
		//username:tom
		//username:jerry
	int getIntHeader(String name)//根据请求头获取对应的值,但是值只能是int类型
  • c.获取请求体的方法
    注意:只有post请求,才有请求体内容,才可以使用以下的方法
	ServletInputStream getInputStream()
	BufferedReader getReader()
*2.其他功能的方法
  • a. 获取请求参数的通用方法

      *String getParameter(String name)//根据表单项的name属性值获取value属性值
      Enumeration<String> getParameterNames()//获取所有的表单项的name属性值
      String[] getParameterValues(String name)//根据表单项的name属性值获取所有的value属性值
      *Map<String,String[]> getParameterMap()//将所有的表单项的name属性值和value属性值都封装到了map中
    
    • 获取请求参数中文乱码问题?
      • get请求:
        tomcat8之前:中文会出现乱码
        tomcat8之后:中文不会出现乱码

      • post请求:
        中文会出现乱码
        为什么会出现中文乱码?
        两边编码方式不一致才会出现中文乱码
        tomcat服务器默认编码为ISO-8859-1

      • 怎么解决中文乱码?
        只需要修改服务器默认编码即可
        request.setCharacterEncoding(“utf-8”);

  • b. 请求转发相关方法
    请求转发可以帮助实现servlet到其他的servlet或者是页面

    • Request对象:
      public RequestDispatcher getRequestDispatcher(String path)

    • RequestDispatcher:
      public void forward(ServletRequest request, ServletResponse response)

    • 请求转发的特点?

    1. 请求转发只能进行内部跳转
    2. 请求转发地址值是不会发生改变的
    3. 请求转发只包含一次请求和一次响应
  • c. 共享相关方法

    • 在web核心中有四大域对象,每个域对象管理自己所管辖的域范围
    • request不是一般的对象,是一个域对象,它所管辖的范围是一次请求和一次响应之间的范围
    • 凡是域对象,都具备的三个方法:
      • setAttribute(String key, Object value)
      • getAttribute(String key)
      • removeAttriubte(String key)
        注意:只能使用转发来实现资源的共享
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何呵呵是大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值