• JAVA WEB Servlet


    Servlet 是用java 编写的服务器端程序, 其主要功能在于交互式的浏览和修改数据   ,生成动态web 内容, 狭义的Servlet 是指java 语言实现的一个接口 , 广义的Servlet 是指任何实现了这个Servlet 接口的类,一般情况下  ,理解为后者。
     
    Servlet  代码结构解析:
    Servlet 在Web.xml 中的配置  :
     
    Servlet 的继承关系
     
    Servlet 接口概述 
     定义了所有Servlet 需要实现的方法。
     Servlet接口常用方法:
     
    Servlet 的生命周期: 
    请求方式 
    GET :  
    a、 目的: 向服务器发索取数据的一种请求
    b、 传参方式: 以URL进行传参
    c、 大小: 各个版本的浏览器对URL长度是有限制的, 这就决定参数长度也有限制, IE对URL长度的限
    制是2083字节。
    d、 安全性: 较POST而言更低。
    POST:
    a、 目的: Post是向服务器提交数据的一种请求
    b、 传参方式: 将参数作为请求的正文部分
    c、 大小: 跟服务器的处理程序的处理能力有关系, IIS6.0默认是100KB
    d、 安全性: 较GET而言更高。
     

    请求处理

     
    HttpServletRequest与HttpServletResponse。
     

    Servelt 工作流程; 

     
    HttpServletRequest常用方法:
     
    HttpServletResponse常用方法
     
    Javaweb 常用分包结构 : 
     
     
    总结: 
    一: Servlet 的应用
                 实现HttpServlet 接口 : 实现dopost()或doget()方法
                                       Servlet配置: 编辑部署描述文件web.xml
                                     启动Tomcat,访问Servlet
    二 : Servlet 的生命周期
    1   类加载  ;  Servlet第一次被请求时,容器进行servlet类加载
    2   实例化 : Servlet 容器创建Servlet
    3   初始化 : 调用init ( ) 方法  ,进行初始化配置。
    4   请求处理:通过service 传入参数 判断 执行doGet ( ) 或者(  )doPost( ) 方法 
    5   服务终止 : 执行destory( )方法 
     
     
    Servlet 中的页面跳转
    跳转方式 : 
    1  重定向 :  response . sendRedirect( URL);
        特点: a  URL 会改变
                   b  两次请求
                   c   可以跳转到本工程页面,也可以跳转到其他web 工程页面
    2  请求转发: request.getRuquestDispache( URL ) . forward( request , response)
      特点:    a  URL不会改变
                    b  一次请求
                    c  只可以跳转到本工程的页面
     
    三大作用域 : 
    一 : HttpServletRequest
    1. 级别:请求级别(存活时间最短)
    2. 创建:服务器接收到一个客户端请求时,服务器会为该请求创建一个HttpServletRequest对象
    3. 获取:直接在service()、doGet()或doPost()等方法中使用
    4. 死亡:该请求完成时
    二 :  HttpSession
    1. 级别:会话级别
    2. 创建:当客户端与服务器建立一个会话时,服务器会为该客户端创建一个HttpSession对象
    3. 获取:request.getSession(true);--true表示如果当前会话没有HttpSession对象则自动创建
    4. 死亡:
    A. 超时:一般默认为30分钟(可以通过调用session的setMaxInactiveInterval(int time)方法设置,单位为秒)
    B. 调用invalidate()方法。
    三. ServletContext
    1. 级别:应用级别(存活时间最长)
    2. 创建:服务器服务器启动时,会为每个应用程序创建一个HttpServletContext对象
    3. 获取:getServletContext()。
    4. 死亡:服务器关闭时。

     Sevlet中的三个作用域

    Servlet常用来存储数据的三大作用域:按照使用范围从小到大排列为: HttpServletRequestHttpSessionServletContext三个作用域,下边详细介绍这三个作用域。

    1HttpServletRequest作用域:

           存入数据的方法request.setAttribute("User",user);(这里是把user放入到request作用域中,keyUser,valueuser),此作用域保存的数据只是针对一次请求。使用该对象保存数据,一次请求内数据有效。请求转发是属于一次请求的,所以放在此作用域中的数据,在一个页面转发多个页面数据都是有效的。
         作用域创建时间:客户端向服务器发送一次请求时创建。
          销毁时间:服务器为这次请求作出响应之后,销毁request.

    2HttpSession作用域:

            针对一次会话,使用该对象保存数据,数据保存在服务器上,一次会话(多个请求)内数据有效,如果关闭一次浏览器,结束这次回话,再次打开的时候session就失效了。
           创建时间:服务器第一次调用getSession()方法的时候,服务器创建session对象。
        request.getSession(true);
    销毁时间:销毁有三种情况
        1)服务器非正常关闭(正常关闭时:Session被序列化);
        2):Session过期,xml文件配置默认时间是30分钟。
        3):手动调用Sessioninvalidate的方法。

    3SevletContext作用域:application

    针对一个web应用。一个web应用只有一个SevletContext对象,使用该对象保存的数据在整个web应用中都有效。
     创建时间:服务器启动的时候。
    销毁时间:服务器关闭的时候或者项目移除的时候。
    总结:
    如果数据保存在request对象中,一般使用请求转发,来获取。因为请求转发是只有一次请求的。但是如果是重定向,因为重定向是多次请求,所以不能使用request中的数据,可以使用sessioncontext中的。
    注意 
    如果能使用request作用域就使用request作用域,如果request作用域用不了,则使用session作用域。会话级别的数据要是用session作用域,比如说登录信息,银行账号,如果数据是系统级别的,那么使用application作用域

    4、三个作用域通用API

    存放数据:setAttribute(name,value)
    获取数据:getAttribute(name);
       删除数据:removeAttribute(name);
     
    常用方法: 
     
     
  • 相关阅读:
    企业级Nginx负载均衡与keepalived高可用实战(一)Nginx篇
    Elasticsearch由浅入深(十一)内核原理
    Elasticsearch由浅入深(十一)索引管理
    Elasticsearch由浅入深(十)搜索引擎:相关度评分 TF&IDF算法、doc value正排索引、解密query、fetch phrase原理、Bouncing Results问题、基于scoll技术滚动搜索大量数据
    Elasticsearch由浅入深(九)搜索引擎:query DSL、filter与query、query搜索实战
    Elasticsearch由浅入深(八)搜索引擎:mapping、精确匹配与全文搜索、分词器、mapping总结
    Elasticsearch由浅入深(七)搜索引擎:_search含义、_multi-index搜索模式、分页搜索以及深分页性能问题、query string search语法以及_all metadata原理
    Elasticsearch由浅入深(六)批量操作:mget批量查询、bulk批量增删改、路由原理、增删改内部原理、document查询内部原理、bulk api的奇特json格式
    Elasticsearch由浅入深(五)_version乐观锁、external version乐观锁、partial update、groovy脚本实现partial update
    Elasticsearch由浅入深(四)ES并发冲突、悲观锁与乐观锁、_version乐观锁并发
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/10821914.html
Copyright © 2020-2023  润新知