黑马程序员技术交流社区

标题: 笔记是你想要就会给的吗 [打印本页]

作者: zz1997203    时间: 2019-8-5 16:28
标题: 笔记是你想要就会给的吗
1.响应也是分三部分
        响应行:
                组成: 协议 状态码 状态描述
                状态码:
                        404: ---->浏览器访问的资源不存在, 路径写错了!!!!!
                        500: ----> 代码写的有问题, 该代码, --->先要去找到错误代码的位置
                        302: ---->告诉浏览器要重定向
                       
        响应头:
                作用:响应头可以给浏览器下命令,让浏览器按照我们的想法解析数据
                白话:其实浏览最在乎响应体,显示的内容,程序员可以通过响应头来控制显示方式,显示编码....
                常见的头:
                        content-type ---->可以让浏览器按照想要的格式以及编码解析
                        content-disposition ----> 可以让浏览器以默认打开方式解析,还是以附件解析(下载时候才会用到);
                        location ----> 可以给浏览器一个地址, 可以配合302的状态码一起完成重定向的动作
        响应体
                显示的内容!!!!!
2.Response对象
        操作响应行:
                setStatus(int 状态码的值); ---->设置状态码
        操作响应头
                setHeader(String key,String value);
        操作响应体:
                getOutputStream() ---->获取字节流
                getWrite() ------> 获取字符流
3.Response的作用
        1.完成重定向
                最终写法:
                        resp.sendRedirect("路径");
                        其实内部分成两个步骤
                                setStatus(302)
                                setHeader("location",路径)
4.路径问题:
        相对:
                以./或者../开始的路径
                技巧:找对(当前)和(目标)的关系
        绝对:
                以"/"开始的:
                其实绝对路径前面省略
                        客户端路径: -----> src, action, "重定向"都是客户端路径
                                 "http://ip地址:端口" ----> 但是如果你自己规定"http://ip地址:端口" 他就不会默认加了!!!!!!!
                        服务器路径: -----> 只有"转发"是服务器路径
                                 "http://ip地址:端口/虚拟路径"
                                 虚拟路径建议我们动态获取 -----> req.getContextPath();可以动态获取虚拟路径
5.如何输出字符数据到页面
        格式:  resp.getWriter().write("内容");
        注意:
                如果中文会出现乱码!!!
                原因:
                        resp.getWriter(); 这个流是tomcat帮我们创建的流, 他采用默认编码是ISO-8859-1,它不支持中文,
                解决方案:
                        1.设置writer的流的编码为"utf-8"; ---> resp.setCharacterEnconding("utf-8");
                        2.告诉浏览器以"utf-8"的方式来解析 ---> resp.setHeader("content-type","text/html;charset=utf-8");
                我们最终的写法:
                        resp.setContnxtType("text/html;charset=utf-8");
6.ServletContext
        作用: 他是和tomcat通信的桥梁, 原因: ServletContext是Tomcat为每一个项目创建的,专门用和tomcat交互的对象,每一个项目只有一个ServletContext对象,
        特点: 每一个项目只有一个ServletContext对象, 而且这个Tomcat为每一个项目创建的
        功能:
                1.获取文件的MIME类型(了解!!!!)
                        MIME: 可以让浏览器以指定引擎解析你的数据 ----> .jpg .png ---> text/html  IMG/JEPG
                        注意:高版本浏览器(除了ie),都会自动识别类型
                2.可以作为域对象存储数据 setAttr... getAttr.... , removeAttr....(用的很少!!!!!)
                        作用范围: 整个项目中有效, 所有的用户共享的东西放到这里
                3.获取文件的服务器端的真实路径
                        其实为File,自己的创建的流而服务的, 原因File或者自己的创建的流不能采用相对路径, 不然都相对于tomcat/bin目录下,
                        这是一定要绝对路径, 而绝对路径通过ServletContext对象来获取, 因为他可以读取catalina/localhost/xxx.xml得到docBase
                        指向的项目的真实路径, 可以通过ServletContext对象getRealPath获取绝对路径!!!!
                        注意: 一定注意自己的启动环境是谁!!!!!
                4.获取全局的参数:(用的也很少!!!!!)
                        在web.xml中:
                         <context-param>
                                <param-name>username</param-name>
                                <param-value>zhangsan</param-value>
                        </context-param>
                        String getInitParameter(String key);
                        例如:
                                String value = getServletContext().getInitParameter("username");
                               
                        增 ----> add, append,put,insert
                        删 ----> remove delete drop
                        该 ----> alter ,update, set
                        查 ----> get, select
                       




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2