• 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)

  • 相关阅读:
    关于 flutter_boost splash加载动画
    [BS-23] AFN网络请求上拉/下拉刷新的细节问题总结
    [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别
    [BS-21] 关于OC中对象与指针的思考
    [BS-20] 导航控制器和视图控制器在添加控制器的区别
    ios runtime swizzle
    关于C、OC、C++、OC++、Swift的一些常识
    iOS多线程知识总结--GCD
    使用代码创建AutoLayout约束
    iOS中NSLog输出格式大全
  • 原文地址:https://www.cnblogs.com/shanelau/p/6736786.html
Copyright © 2020-2023  润新知