zoukankan      html  css  js  c++  java
  • JavaWeb【Servlet】

    概念

    Servlet是在服务器上运行的小程序。一个Servlet请求对应一个Java类(对应一个Wrapper容器),可以通过请求-响应模式访问这个驻留在内存中的小程序。

    Tomcat容器等级


    上图表示各容器的包含关系(有底色的为容器等级)
    Tomcat容器等级分为4级:Engine、Host(对应一个虚拟主机)、Context(对应一个Web工程)、Wrapper(对应一个Servlet)

    Servlet编写步骤

    1、继承HttpServlet
    2、重写doGet或doPost方法
    3、在web.xml中注册Servlet(和过滤器类似)

    Servlet声明周期


    上图为Get请求到返回的流程示意

    上图为生命周期示意图

    声明周期

    1、初始化,加载到内存并创建实例,然后调用init(),只会调用一次。
    2、响应客户端请求,调用service(),由service根据请求方式调用doGet或doPost
    3、服务器关闭时销毁,destroy()

    装载时的三种情况

    1、随servlet容器启动时装载,需要在web.xml的servlet标签下配置loadon-startup等级,数字越小等级越高,最高1级。
    2、在servlet容器启动后,在客户首次访问servlet时装载。
    3、当servlet类被重新修改过后,所有随启动装载的servlet都会重新装载。

    Servlet获取9大内置对象


    Servlet路径跳转

    相对路径

    当超链接调转,或表单action时,/代表服务器根目录(没有工程名);不加/,如“servlet/HelloServlet”表示当前目录下的路径
    当servlet中response.sendRedirect()时,使用/表示服务器根目录,如“/test.jsp”会访问失败
    当servlet中request.getRequestDispatcher("/index.jsp").forward(request, response),使用/表示工程根目录,该例访问成功
    当web.xml配置时,/代表工程根目录,一定要加

    绝对路径

    当超链接跳转,或表单action时,可以使用request.getContextPath获取工程根目录,拼接绝对路径如path+"/servlet/HelloServlet"
    当servlet中response.sendRedirect()时,使用request.getContextPath获取工程根目录,拼接绝对路径如path+"/test.jsp"
    当servlet中request.getRequestDispatcher(path+"index.jsp").forward(request, response),使用path会有两个根路径,该例访问失败

    总结:
    当从客户端访问时(如超链接、action、sendRedirect),默认路径为服务器根目录,最好加Path获取工程根目录拼接绝对路径
    当在服务器上时(如getRequestDispatcher、web.xml),默认路径为工程根目录,可以直接使用/来拼接相对路径

    获取初始化参数

    1、在web.xml中配置servlet初始化参数(注意!!init-param一定要跟在servlet-class后面,否则会报错)
    2、在servlet中使用this.getInitParameter获取


    MVC模型

    Model2(对应于Model1)

  • 相关阅读:
    低版本ie模式 360兼容模式的兼容性调节以及控制代码
    360浏览器兼容模式样式乱码的原因及解决办法
    iOS开发之UILabel
    代码大全--第六章--可以工作的类
    读书笔记--软件项目成功之道
    extern "C"的用法解析(转)
    基于Ubuntu 15.04 LTS编译Android5.1.0源代码 (转)
    Global.asax 文件是什么(转)
    设备扩展(DEVICE_EXTENSION)
    IRP_MJ_CREATE
  • 原文地址:https://www.cnblogs.com/shanelau/p/6736786.html
Copyright © 2011-2022 走看看