黑马程序员技术交流社区

标题: 【石家庄校区】Servlet&HTTP&Request [打印本页]

作者: 湿漉漉的文字控    时间: 2018-12-29 16:39
标题: 【石家庄校区】Servlet&HTTP&Request
本帖最后由 小石姐姐 于 2019-1-4 09:03 编辑

Servlet&HTTP&Request
Servlet&HTTP&Request
        
      Servlet体系结构
        Servlet
                |
        GenericServlet -->抽象类
                |
        HttpServlet -->抽象类
        
        HTTP
                概念: hyper Text Transfer Protocol 超文本传输协议
                        传输协议: 定义了客户端和服务器端通信时,发送数据格式
                        特点:
                                基于TCP/IP的高级协议
                                默认端口号:80
                                基于请求响应模型的,一次请求一次响应
                                无状态 :每次请求之间相互独立,不能交互数据
                        历史版本
                                1.0
                                1.1: SPDY协议
                                
                                
                请求消息数据格式
                        请求行
                                请求方式 请求url 请求协议/版本
                                
                                请求方式
                                        GET
                                                请求参数在请求行,在url后
                                                请求的url有限制
                                                不安全
                                        POST
                                                请求参数在请求体中
                                                请求的url没有限制
                                                相对安全
                                                
                                                
                        请求头
                                请求头名称: 请求头值
                                User-Agent: 浏览器告诉服务器,我访问你使用的浏览器版本信息
                                        可以在服务器端获取该头信息,解决浏览器兼容问题
                                       
                                Referer
                                        告诉服务器,我(当前请求)从哪里来
                                                作用
                                                        防盗链:
                                                        统计
                                                        
                                content-tyoe
                                
                        请求空行
                                空行
                                作为请求头和请求体的分隔
                        请求体
                                请求参数(post)   

        Request(发送数据到服务器)
                request和response对象是由服务器创建的.我们阿里使用它们
                request对象是获取请求信息的,response对象是来设置响应消息的
                request和response对象是由服务器(TomCat)在浏览器访问服务器时创建的
                获取请求消息数据
                        获取请求行数据
                                方法
                                        获取请求方式
                                                String getMethod()
                                        ***获取虚拟路径
                                                String getContextPath()
                                        获取Servlet路径
                                                String getServletPath()
                                        获取get方式请求参数:
                                                String getQueryString()
                                        ***获取请求URI
                                                String getRequestURI()
                                                String getRequestURL()               
                        获取请求头数据
                                String getHeader(String name)通过头名称获取对应的值
                                Enumeration(String) getHeaderNames 获取所有请求头的名称
                                                         hub~
                        获取请求体数据
                                请求体 :只有post请求方式中,才有请求体,在请求体中封装了post请求的请求参数
                                BufferedReader getR()  获取字符输入流
                                InPutStream getInPutStream() 获取字节输入流

                        获取请求参数通用方式
                                String        getParameter(String name) 根据参数名称获取参数值
                                String[] getgetParameterValues(String name) 根据参数名称获取参数值数组
                                Enumeration(String) getParameterNames() 获取所有请求的参数名称
                                Map<String String[]> getParameterMap() 获取所有参数的Map集合
                                
                                中文乱码问题
                                        get方式:tomcat已经将get方式乱码问题解决
                                        post方式: 会乱码
                                                解决
                                                        request.setCharacterEncoding(编码格式)         
                        请求转发
                                一种在服务器内部资源跳转方式
                                步骤
                                        通过request对象获取请求转发器
                                        RequstDispatcher getRequstDispatcher(String Path)
                                        使用RequstDispatcher对象调用forward方法实现资源跳转
                                        RequstDispatcher.forward()                        
                                特点
                                        浏览器地址栏路径不变
                                        只能访问服务器内部资源
                                        请求转发只有一次请求
                                                ps:服务器内部资源千万不要携带虚拟路径
                        共享数据
                                域对象
                                        一个有作用范围的对象,可以再范围内共享数据
                                        request域:代表一次请求的范围.一般用于请求的多个资源中共享数据
                                        方法
                                                setAttitude(String name, Object obj) 存储数据
                                                getAttitude(String name) 通过键获得值
                                                removeAttitude(String name) 通过键删除键值对
                        获取ServletContext
                                request.getServletContext()               
绝对路径
        基于服务器的绝对路径
        /开头的代表绝对路径
        .或者..开头代表相对路径
域对象
        ServletContext                服务器启动时创建,关闭时销毁,仅限当前项目
        HttpSession                        一次回话
        HttpServletRequest  一次请求
        PageContext                  当前页面






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