黑马程序员技术交流社区

标题: Request [打印本页]

作者: 1652551096    时间: 2019-6-14 00:03
标题: Request
今日内容:
        1.Servlet
        2.HTTP协议
        3.Request




##Servlet:
        6.Servlet体系结构
                Servlet--接口
                        |
                1.GenericServlet--抽象类
                        |
                2.HttpServlet--抽象类


                *GenericServlet:将Servlet接口中其他的方法做了默认的空实现,只将service抽象方法复写
                        *将来定义Servlet时,可以继承GenericServlet,实现service即可


                *HttpServlet对HTTP协议的一种封装,简化操作
                        1.定义类继承HttpServlet
                        2.复写doGet方法/doPost方法



        7.Servlet相关配置
                1.urlpartten:Servlet访问路径
                        *一个Servlet可以定义多个访问路径
                        *路径定义规则
                                1./xxx
                                2./xxx/xxx -- /xx/*多层路径
                                3.*.do

##HTTP
        *概念:超文本传输协议
                *传输协议:定义了,客户端和服务端通信时,发送数据的格式
                *特点: 1.基于TCP/IP的高级协议
                        2.默认端口号:80
                        3.一次请求对应一次响应
                        4.每次请求之间是相互独立的,不能交互数据
       

        *历史版本
                *1.0版本
                *1.1版本:复用连接


        *请求消息数据格式:

        1.请求行       
                请求方式 请求uri 请求协议/版本
                Get /login.html HTTP/1.1

                *请求方式
                        *HTTP协议有7种请求方式,常用两种
                                *get
                                        1.请求参数在请求行中
                                        2.请求的url长度有限制
                                        3.不太安全

                                *post
                                        1.请求参数在请求体中
                                        2.请求的url长度无限制
                                        3.相对安全


        2.请求头
                请求头名称:请求头值
                *常见的请求头:
                        1.User-Agent

                        *可以在服务器端获取该头的信息,解决浏览器兼容性问题
                       
                        2.Referer:
                        *告诉服务器,当前请求从哪来?
                                *作用:
                                1.防盗链
                                2.统计工作


        3.请求空行
                      空行--用于分割POST请求的请求头和请求体
        4.请求体(正文)
                *封装POST请求消息的请求参数




        *响应消息数据格式



##Request:
        1.request对象和response对象的原理
                1.request和response对象是由服务器创建的。使用它们
                2.request对象是来获取请求消息的,response对象是来设置响应消息的



        2.request对象继承体系结构
                ServletRequest--接口
                HTTPServletRequest--接口
                RequestFacade类(Tomcat)
/8*9

        3.request:

                1.获取请求行消息
                        *String getMethod--获取请求方式
                        *String getContextPath--获取虚拟目录
                        *String getServletPath--获取Servlet路径
                        *String getQueryString--获取get方式请求参数
                        *String getRequestURI--获取请求URI
                        *StringBuffer get RequestURL--获取URL
                        *String getProtocol--获取协议及版本
                        *String getRemoteAddr--获取客户机的IP地址
               
                2.获取请求头消息
                       
                        *String getHeader(String name)--通过请求头的名称获取请求头的值
                        *Enumeration <String>getHeaderNames--获取所有的请求头名称
       

       

                3.获取请求体数据:
7                        *请求体:只有POST方式才有请求体
                       
                        *步骤:
                                1.获取流对象
                                *BufferReader getReader():获取字符输入流只操作字符数据
                               
                                2.再从流对象中拿数据

        2.其他功能:
                1.获取请求参数通用方式
                        *String getParameter(String name)--根据参数名称获取参数值
                        *String[] getParameterValues(String name)--根据参数名称获取参数值的数组
                        *
                *中文乱码问题:request.setCharacterEncoding("")



                2.请求转发:一种在服务器内部的资源跳转方式
                        1.步骤
                                1.RequestDispatcher("path")
                                2.RequestDispatcher.forward
                        总:request.RequestDispatcher.forward(request,response)
                        2.特点:
                                1.浏览器地址栏路径不发生变化
                                2.只能转发到当前服务器内部资源中
                                3.转发是一次请求





                3.共享数据
                *域对象:一个有作用范围的对象,可以在范围内共享数据
                *request域:代表一次请求的范围
                *方法:setAttribute(String,Object o)
                        getAttribute()
                        romoveAttribute()
                       




                4.获取ServletContext:
                        *getServletContext()



#案例 用户登录
  *分析
        *开发步骤
                1.创建项目,导入html页面,配置文件导入jar包

                2.创建User数据库

                3.创建包cn.itcast.domain 用户的实体类User

                4.创建包cn.itcast.dao,创建UserDao类(登录方法),操作数据库中User表的类
               
                5Jdbc工具类 使用Druid连接池

                6.编写Servlet类
                7.login.html中Form中 action方法
                        *虚拟目录+servlet路径
               
                //设置编码
                //获取请求参数
                //封装User对象
                //调用UserDao的login方法
                //判断user
                        if(user==null){
                               
                                //登录失败
                                }else{


                                //登录成功
                                //存储数据
                                //转发
}


        *登录失败

        //设置编码
        //输出 response.getWriter().write("")






        *登录成功

        //获取request域中共享的user对象


        //设置编码
        //输出



        9.BeanUtils工具类,简化数据封装
       
                1.类必须被public修饰
                2.必须提供空参构造器
                3.成员变量必须使用private修饰
                4.提供公共的setter和getter方法

        方法:set/getPorperty
                populate






               

               
       

















       




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