黑马程序员技术交流社区

标题: [成都校区] [打印本页]

作者: 泡沫呀    时间: 2019-3-20 13:42
标题: [成都校区]
**Http协议:
            1.请求消息:客户端发送个服务器的数据
                    *请求行
                    *请求头
                    *请求空行
                    *请求体
            2响应消息:服务器发送个客户端的数据
                    *响应行
                        1.组成:协议/版本  响应状态码   状态码描述
                        2.响应状态码:  服务器告诉哭护短浏览器本次请求和响应的一个状态
                                #状态码都是三位数字,
                                #分类:  1. 1xx  :  服务器接受客户端消息,但没有接受完成,等待一段时间后发送1xx的一个状态码
                                             2.2xx  :  成功.
                                             3.3xx ;   重定向  代表:302(重定向)    304(访问缓存)
                                             4.4xx :    客户端错误     404(请求路径没有对应的资源)     405(请求方式没有对应的doxxx方法)
                                             5.5xx :   服务器错误   500(服务器内部出现异常)
                    *响应头
                            1.格式:  头名称:  值
                             2.常见的响应头:
                                            *Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
                                            *Content-disposition:服务器告诉客户端以什么格式打开我的响应体数据
                                                #值:  *in-line: 默认值,在当前页面内打开
                                                        *attachment;filename=xxx :  以附件形式打开响应体. 文件下载
                    *响应空行
                    *响应体 :  传输的数据

##Response对象
            *功能:设置响应信息
                1.设置响应行
                        *格式:HTTP/1.1   200  ok
                        *设置状态码:  setStatus(int  sc)
                2.设置响应头:    setHeader(String   name,  String   value)
                3.设置响应体
                         *使用步骤:
                                1.获取输出流
                                        *字符输出流:  PrintWriter  getWriter()
                                        *字节输出流 :   ServletOutputStream  getOutputStream()
                                2.使用输出流将数据输出到浏览器客户端

    #重定向:资源跳转的方式
            代码实现:
                1.设置状态码302   response.setStatus(302)
                2.设置响应头location    response.setHeader("location","虚拟目录+资源路径")

                3直接简单重定向方法 :   response.setRedirect("虚拟目录+资源路径")

        *重定向特点:redirect
                1.地址栏发生变化
                2.重定向可以访问其他站点(服务器)的资源
                3.重定向是两次请求,不能使用request对象来共享数据
        *转发的特点: forward
                1. 转发地址栏路径不变
                2.转发只能访问当前服务器下的资源
                3.转发是一次请求,可以使用requeet对象来共享数据

        *forward  和 redirect 区别

        *路径写法:
                1.路径分类
                    *.相对路径:通过相对路径不可以确定唯一资源
                            #如:  ./index.html
                            #不以 /  开头, 以 .  开头路径

                            #规则  :   找到当前资源和目标资源的相对位置关系
                                    *  ./: 当前目录(./可以省略)
                                    * ../: 后退一级目录
                    *绝对路径:通过绝对路径可以确定唯一资源
                            #如   http://localhost/day15/demo
                            # 以 / 开头的路径

                            #规则:  判断定义的路径是给谁用的?  判断请求将来从哪儿发出
                                    *  给客户端浏览器使用:  需要加虚拟目录(项目的访问路径)
                                            ##建议虚拟目录动态获取: request.getContextPath()
                                             <a>  ,  <form>  重定向.....
                                    * 给服务器使用: 不需要加虚拟目录
                                            ##转发路径

SevletContext对象
1、概念;代表整个web应用,可以和程序(服务器)来通信
2、获取
通过request获取
request.getservletcontext()
通过httpservlet获取
this.getservletcontext()
3、功能:
1、获取mime类型
mime类型:在互联网通信过程中定义的一种文件数据类型
格式:大类型/小类型 text/html image/jpeg
获取:string getmimetype(string file)
2、域对象:共享数据
1、setattribute(string name, object value)
2、getattribute(string name)
3、removeattribute(string name)
servletcontext对象范围:所有用户请求的数据
3、获取文件的真实路径
1、方法:getrealpath("string path")

案例:
文件下载需求:
1、页面显示超链接
2、点击超链接后弹出下载提示框
3、完成图片文件下载
分析:
1、超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框。不满足需求
2、任何资源都必须弹出下载提示框
3、使用响应头设置资源打开方式
*content-disposition:attachment;filename=xxx
问题:
中文文件问题:
1、获取客户端使用的浏览器版本信息




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