JAVA基础WEB阶段第 十二天——request + response

一.ServletContext 

1.概念:

        ServletContext 是一个web项目中上下文对象. 他可以对Servlet之前和之后的一些信息进行管理.是一个容器对象.

2.对象如何获取
        //1.获取方式1:
        ServletContext contecontext = getServletContext();
        //2.获取方式2:
        ServletContext servletContext = this.getServletContext();
        //3.方式3:
        ServletContext servletContext1 = req.getServletContext();
    
      特点:一个web容器(就是一个web项目)只有一个ServletContext对象,被所有web资源共享.

3.常用的方法
        1)获取web信息的方法
            getContextPath()  String   获取web项目请求工程名(获取的是虚拟路径)
            getInitParameter(String name)  String 获取web项目的初始化参数
            getInitParameterNames()     Enumeration<E>  获取web项目的初始化参数

        2)读取web项目下的文件
            getResourceAsStream(String path) InputStream  读取指定文件到流中

            getRealPath(String path)  String返回一个指真实路径

        3)作为域对象存储数据
            ServletContext容器,存数据,取数据,删除数据.
            特点:ServletContext在web容器中是一个共享对象.
            Servlet01 存一个数据;  Servlet02 获取存数据  ; Servlet03删除设置数据.
            
            setAttribute(String name, Object obj)   void  存入数据的方法
            getAttribute(String name)    Object   获取数据的方法
            removeAttribute(String name)   void  移除数据的方法

二.Response 响应对象

1.ServletResponse  代表的是服务器响应给用户数据的对象.

2.都是由tomcat容器对象来创建,创建完毕之后,把该对象传递到了service方法的形式参数上.

3. ServletResponse Servlet中service方法中的参数
           HttpServletResponse 他是ServletResponse的子接口

4.该对象的常用方法:(ServletResponse和HttpServletResponse)

1)关于响应行的方法
        setStatus(int sc)  void  设置响应的状态码  (200  302[重定向]  304  404  405  500)
            - 200 正确
            - 302 重定向
            - 304 查找本地缓存
            - 404 请求资源部存在
            - 500 服务器内部错误
        
        2)setHeader(String name, String value)  void  设置响应头
            常用的响应头信息:  
                Location 结合 状态码  完成重定向
                Refresh  可以完成指定多少时间后页面跳转.
        
        重定向: 页面返回到浏览器,重新发送请求跳转到新页面(2次请求)    

3)设置响应体信息
        
        Response,底层是流的方式(内置有一个缓冲区)
        流是有方向:输出地址浏览器
        
        getOutputStream()  ServletOutputStream  返回一个字节流,用于向浏览器发送数据

        getWriter()   PrintWriter  放回一个字符流,用于向浏览器发送数据

4)response的其他方法
        sendRedirect(String location)  void 重定向方法

        setContextType(String type) void  设置浏览器打开页面时采用的字符集

        setCharacterEncoding(String charset) void  设置响应字符流的缓冲区字符集

注意:在一个Servlet的方法中:getOutputStream()  和getWriter() 不能同时存在

三.Request对象
        1.ServletRequest对象本质是一个接口.
        用户第一次请求的时候创建该对象,并把该对象传递给Servlet中的service的形式参数上.
        主要作用用户接受用户的请求信息,把数据带到servlet中.

2.ServletRequest --- 子接口 HttpServletRequest

3.常用方法
        1)获取客户端的信息
        getMethod()  String 获取请求的方法 (GET / POST)
        getQueryString() String    获取请求路径后的提交参数的字符串
        getRequestURI()    String 获取请求路径的URI
        getRequestURL() StringBuffer 获取请求路径的URL
        getRemoteAddr()    String    获取客户端的IP地址

总结:
            get 请求的方式:   1.浏览器地址栏直接输入网址请求;  2.点击超链接,完成跳转  3.表单提交 method="get"
                             4.js ===  location.href="地址"  也是get
            post请求的方式:  1.表单提交  method="post"

            get/post提交的方式的区别:
            1)get提交的数据量小; post提交的数据量大
            2)get请求参数会在浏览器地址栏上展示; post不会展示在地址栏(参数在请求体中)
            3)get方式以后不能上传附件; post方式可以上传附件.

2)Request获取请求头信息
        getHeader(String name)  String  获得一个key对应一个value的请求头
        
        请求头写头信息: Host 主机 , User-Agent 浏览器信息

3) 获得请求参数的方法  (重点!!!)                      
          getParameter(String name)          String      获得提交的参数(一个name对应一个value)
          获取参数: get请求还是post请求
          
          getParameterValues(String name)    String[]    获得提交的参数(一个name对应多个value) 
              表单
              <input type="checkbox" name="hobby" value="lanqiu"/>
              <input type="checkbox" name="hobby" value="zuqiu"/>
              <input type="checkbox" name="hobby" value="paiqiu"/>
          
          getParameterMap()                  Map         获得提交的参数,将提交的参数名称和对应值存入到一个Map集合中

4)Request传递参数的乱码问题
            tomcat8之后 get方式的请求就没有乱码; post请求仍然后有乱码
            tomcat7     get方式和post方式都有乱码
            
            常用方法:
            setCharacterEncoding(String encoding)

             getParameter(String name)          String      获得提交的参数(一个name对应一个value)
             getParameterValues(String name)    String[]    获得提交的参数(一个name对应多个value)
             getParameterMap()                  Map         获得提交的参数,将提交的参数名称和对应值存入到一个Map集合中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据架构师Pony

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

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

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

打赏作者

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

抵扣说明:

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

余额充值