JavaWeb

技术栈B/S  浏览器服务器

HTTP:超文本传输协议

  Get和 Post的区别:

    Get请求参数在请求行中,没有请求体,  post在请求体中    

    get请求参数有大小限制post没有

  特点:基于TCP协议,面向链接安全 

       基于请求响应模型:一次请求对应一次响应 

       http协议是无状态的协议,对于事务处理没有记忆能力,每次请求-响应都是单独存在的,

        缺点:多次请求不能共享数据     优点:速度快

  请求数据的格式:

    1.请求行:第一行的数据

    2.请求头,第二行开始 数据都是key:value的格式

      常见请求头:

        Host:请求的主机名称

        User-Agent:浏览器版本 

        Accecpt:浏览器能接受的资源类型

        Accecpt-Language:浏览器偏好的语言

        Accecpt-Encoding:浏览器可以支持的压缩类型  

    3.请求体:最后一部分,存放请求参数

  响应数据的格式:

    1.响应行:第一行的数据

     2.响应头,第二行开始 数据都是key:value的格式

      常见响应头:

          Content-Type:该响应内容的类型

        Content-length:该响应的长度

        Content-Encoding:压缩算法

        Cache-Cntral:提示客户端应该如何缓存

          3.响应体:最后一部分,存放请求参数

    响应状态码:D:\Develop\响应状态码

web服务器的作用:封装HTTP协议操作 简化开发,可以将web项目部署到服务器中,对外提供网上浏览服务

  tomact是一款轻量级web服务器,支持servlet和jsp少量javaEE 规范,也成为web容器,Servlet容器

  配置tomcat,用插件的方法:

    

  集成tomcat的方法:左上角添加tomcat

    

servlet:快速入门:

  第一步:设置成provided很重要

    

  第二步:写一个方法实现servlet接口,重写方法service()发方法最常用

    第三步:配置访问路径

    

    第四部:启动Tomcat访问资源

 servlet执行流程:  

 servlet生命周期:分为四个阶段

  1.加载和实例化:第一次被访问时由容器创建servlet对象

  2.初始化:在实例化之后,容器调用init()方法初始化,该方法只能调用一次

  3.请求处理:每次请求qservlet时容易都会调用service()方法进行处理

  4.服务终止:调用destroy()销毁释放资源,只会 调用一次

@servlet:urlPattern 配置规则:精确匹配优先级高于目录匹配   任意匹配就是/后面写啥都行    

  

Request(请求)     Response(响应)这三个是继承的关系,下面最小

  ServletRequest------>java提供的请求对象根接口

  HttpServletRequest------>java提供的对HTTP协议封装的请求对象接口

  RequestFacade------>tomcat定义的实现类

  1.tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中

  2.使用request对象,查阅javaEE API  文档中的HttpServletRequest接口就可以   因为实现类会实现所有方法

Request获取请求数据

  1.请求行

    getMethod()  获取请求的方式

    getContextPath() 获取虚拟目录(项目访问路径)

    getRequestURL()  获取 URL  就是?前面的东西 

    getRequestURI()   获取uri

    getQueryString()   获取请求参数  GET方式   ?后面的东西                  get方法获取请求参数

  2.请求头

    getHeader(String name)   根据请求头的名字获取值

  3.请求体

    getInputStream()  获取字节输入流             post方法获取请求参数

    getReader()获取字符输入流                  post方法获取请求参数

  Request通用的获取请求参数   封装了一个map方法

    Map<String,String[]> getParameterMap()   获取所有参数的集合

    String[]  getParamentValues(String name)   根据名称获取参数值(数组)

    String getParamenter(String name)    根据名称获取参数值(单个)

  设置字符输入流的编码,避免乱码的问题

    post提交方式解决办法:  request.setCharacterEncoding("UTF-8")

    get提交方式解决办法:  post同样适用,并且下面的代码可以简化

      

  请求转发:路径地址不会发生变化,只能转发到当前的内部资源,一次请求可以在转发的资源间共享数据

    

    数据问题:三个方法

    setAttribute()键值对存到request域中  转发申请发存

      getAttribute()根据key获取值    转发接收方取

       removeAttribute移除

response:设置响应数据

  响应行:

    setStatus(int sc)设置响应状态码

    响应头:

    setHeader(String name,String vslue)设置响应头键值对

    响应体:

    getWriter:获取字符输出流

    getOutputStream:获取字节输出流

  重定向:

    

    简化方法:sendRedirect

    

   重定向特点:

    1.浏览器地址栏会发生变化  2.可以重定向到任意位置  3.两次请求不能再多个资源使用request共享数据

  Response相应字符数据:顺便解决编码的问题

    

  Response:响应字节数据,       commons-io  包装了IOUtils   可以直接实现读取和写入

    

 封装mybatis获取sqlSessonFactory的方法    static中的代码只执行一次

      

posted @ 2022-09-28 23:20  皇天不负有心人  阅读(71)  评论(0)    收藏  举报