web复习day04:response

回顾:

request: 请求信息对象

Http协议: 浏览器和服务器进行数据交互时,数据的一种规范

请求行: 请求方式 请求路径?get请求参数 协议/版本(http/1.1)

    getMethod()

    getContextPath()

    getRemoteAddr()

    getLocalPort()

请求头: key/values

    getHeader("头名称");

        重要头:

            referer: 防盗链

            user-agent: 用户代理

            cookie:

请求体: post请求时携带的参数(get请求没有请求体)

    获取请求参数: ★★★ 浏览器携带的参数,我们所获取的都是字符串

        String getParameter("名称");

        String[] getParameterValues("名称");

        Map<String,String[]> getParameterMap("名称");

    BeanUtils:

        populate(实体对象,map集合);

Request作用域和请求转发:

请求转发: 一次请求的延续(可以经过多个servlet)

    request.getRequestDispatcher("/请求转发的地址").forWard(req,resp);

作用域:

    request.setAttribute(String,Object);

        // 设置相同名称的属性就是 修改

    request.getAttribute(String);

    request.removeAttribute(String);

http协议-响应

响应: 服务器给浏览器的内容

组成:

响应行 响应头 响应体

响应行

格式:

    协议/版本 响应的状态码 (状态码说明)

        tomcat8.5中没有响应状态码说明了

    eg: HTTP/1.1 200 OK    tomcat7

状态码:

    1xx :请求已发送

    2xx :响应已完成

        200:响应成功(请求成功)

    3xx :需要浏览器进一步操作才可以完成

        302:重定向(配合location头使用)

        304:读缓存

    4xx :用户访问错误

        404:用户访问的资源不存在

    5xx :服务器内部错误

        500:服务器内部异常

响应头

格式:

     key/values的格式 (values可以为多个值的)

常见的响应头

    Location: http://www.it315.org/index.jsp        --跳转方向

    Server:apache tomcat                            --服务器型号

    Content-Encoding: gzip                      --数据压缩

    Content-Length: 80                          --数据长度

    Content-Language: zh-cn                         --语言环境

    Content-Type: text/html; charset=utf-8      --数据类型(MIME类型)  大类型/小类型 text/javascript 

        index.html   text/html

        设置响应文件的mime类型

        设置响应流的编码方式

        通知浏览器使用指定的编码解析

    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT    --最后修改时间

    Refresh: 1(秒);url=http://www.it315.org          --定时刷新

    Content-Disposition: attachment; filename=aaa.zip   --下载 用于文件下载  附件

    Set-Cookie:SS=Q0=5Lb_nQ; path=/search

重点的头:

    Content-Type  Refresh  Content-Disposition  Location   Set-Cookie 

响应体

浏览器解析的内容
response★

设置服务器发送给浏览器的内容

HttpServletResponse

操作响应行:

协议/版本 状态码(说明)

常用方法

    (理解)setStatus(int code):针对1   2   3 开头的

    (了解)sendError(int code):针对 4   5 开头的

操作响应头:

格式: key/values

常用方法

    (重点)setHeader(String name,String value);  // 设置一个字符串形式的响应头

    sendRedirect("路径");  // 重定向

常见的响应头

location:重定向

        方式1: 需要配合302状态码一起使用 (了解)

            response.setStatus(302);

            response.setHeader("location","绝对路径");

            路径:绝对路径

        方式2: (掌握)

            response.sendRedirect("路径");

        重定向发送的是多次请求

        重定向不可以共享request对象(因为发送的是多次请求)

        重定向时浏览器地址栏显示的是最后一次的地址

        重定向可以跳转到任何路径

refresh:定时刷新

        response.setHeader("refresh","秒数;url=跳转的路径"); 几秒之后跳转到指定的路径上

content-type:设置文件的mime类型

        设置响应文件的mime类型 

        设置响应流的编码方式

        通知浏览器使用指定的编码解析

        方式1: 了解

            response.setHeader("content-type","mime类型;charset=编码");

            response.setHeader("content-type","text/html;charset=utf-8");

        方式2: 掌握

            response.setContentType("文件的mime类型;charset=utf-8");

content-disposition:文件下载专用头

        response.setHeader("content-disposition","attachment;filename="+文件名称);

操作响应体:

常用方法:

    PrintWriter getWriter():字符流

    ServletOutputStream getOutputStream():字节流

    注意事项:

        自己编写的文件   一般都使用字符流输出 如:txt  html等

        音频,视频等文件使用字节流输出

        ==字节流和字符流互斥,不能同时使用==    

        服务器会帮我们释放资源,建议自己关闭;底层使用的缓存流

ServletContext:

上下文对象,全局管理者,知晓一个项目中所有Servlet的一切信息

作用:

获取文件的mime类型    *.html     text/html     

资源共享

获取资源的完整路径

生命周期:

创建:

当服务器启动的时候,服务器会为每一个项目创建servletcontext对象,一个项目只有一个servletcontext对象

销毁:

项目从服务器上移除或者服务器关闭的时候

servletContext对象与项目共存亡

获取方式:

方式1:通过ServletConfig对象获取

    ServletConfig().getServletContext();

方式2:通过getServletContext方法获取 ★★★

    getServletContext();

常用方法(API):

(掌握)获取一个文件的mime类型

    String getMimeType(String 文件名)  

(掌握)资源共享: 相当于一个map集合

    setAttribute(String name,Object value): 设置

        设置相同名称的属性就是修改

    getAttribute(String name):获取指定的属性值

    removeAttribute(String name):移除指定的属性

(掌握)获取资源在服务器上的路径

    String getRealPath(String filepath)

    注意:

        filepath:直接从项目的根目录开始写

        getRealPath("/")  ---> d:/tomcat/webapps/day14

案例

猜你喜欢

转载自blog.51cto.com/13859849/2398392