Request 详解 第六更

一   什么是 Request 对象 全称为 (HttpRervletRequset)

        客户端向服务器发出的请求,所有客户端信息和客户端提交的数据均封装在 Request 对象中,
            服务器要拿到这些数据,必须使用 Request 的API

二  Request 常用的API

        getRequestURL() 方法返回客户端发出请求时的完整 URL

        getRequestURI() 方法返回请求行中的资源名部分

        getQueryString() 方法返回请求行中的参数部分

        getRemoteAddr() 方法返回发出请求客户机的 IP 地址

        getLocalAddr()  方法返回 Web 服务器的 IP 地址

        getMethod()     方法返回客户机请求方式 GET 和 POST  (返回的是大写字母)

        getContextPath() 方法返回的是房前 Web 应用根目录

        getServletPath() 方法返回 Servlet 映射路径

获取请求头的信息

        getHender(User-Agent)  方法返回请求头的值

获取请求体的信息

        getParameter() 方法通过 name 获取值

        getParameterValue() 方法通过 name 获取多个值

        getParameterNames() 方法得到所有的 name


三   表单提交中文乱码的原因和解决方案

    原因:
        客户端以 UTF-8 将中文编码,而 Tomcat 却用的是 ISO8859-1 解码,违背了编码和解决字
            符集相同的原则,所有客户端收到会乱码...
    解决:
        适合于 GET 和 POST
        // 还原
            byte[] buf = username.getBytes("ISO8859-1");
        // 解码
            username = new String(buf,"UTF-8");

    专用方式:
        只适合 POST 请求
            1 . Resposet.setCharacterEncoding("字符集")  针对请求体内容按"字符集"编码




四    什么是域对象

     域对象可以理解为一个容器,可以暂存 String-Object 这种 key-value 形式的数据

     域对象保存时间是不同的,有的域对象保存时间在一次请求中;有的域对象保存时间在一次会话中;

     有的域对象保存时间在整个应用中。其中Request域对象保存时间只在一次请求中,也就是说

     一次请求完毕后,Request域对象就销毁了,一旦Request域对象销毁,那么存在其中的数据也

    就不存在了。

为什么需要域对象 ?

    有时我们的业务,一个Servlet完成不了,需要另一个Servlet帮忙,这就是说,

    我们需要在二个或多个Servlet之间传递数据,域对象就负责完成这项任务

 Request 对象有二层含义:

        01——代表客户端向服务器的请求对象,如getParameter(“username”)

        02——代表可以暂存数据的域对象,如下如示API

 Request 作为域对象常用的 API

        setAttribute():向域对象中绑定key=value形式的数据

        getAttribute():从域对象中根据key找value,如果取到不到,返回NULL  

        removeAttribute():从域对象中删除key对应的value


                (生命周期比较短)

                    Request  何时创建    

                    一次请求来到 Servlet 就创建.

                    Request  何时销毁

                    服务器将内容响应到客户端后, Request 就销毁

五   Request 转发


    多个Servlet配合工作

           有些时候,一个Servlet不能很好的完成业务工作,需要另一

             个Servlet来配合。这就是说,很有可能一个Servlet需要将

             流程交由另一个Servlet,此时就要用转发或重定向这二个

             技术了,这里我们谈Request转发。

        方法 :    Request. getRequestDispatcher("路径").forward(请求,响应)

            浏览器地址栏不变,但后台经过了两个 Servlet

            在转发情况下: 两个 Servlet 共享 Request 对象, 所以 前者能取出后者

            以 POST 当时转发前者,会以同样的 POST 访问后者

            客户端完全不知服务器内部的多个 Servlet 之间的交互过程             



        浏览器输出中文乱码的原因和解决方案(中文乱码一定要在获取流对象之前)

        字节方式输出中问的原因             两个不同的字符编码.解码

        字节方式输出中问解决方案            设置客户端的响应头
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值