zoukankan      html  css  js  c++  java
  • servlet 笔记

     servlet 介绍:

    • javaWeb的核心技术!(servlet,filter,listenner)+(PageContext,ServletContext,ServletRequest,HttpSession)
    • 服务端运行的java类,service()方法:处理请求,完成响应。
    • Servlet3.0之前的版本要使用Servlet,需要在web.xml中进行配置。在web.xml中配置Servlet时可以配置一些初始化参数,在servlet中可以通过ServletConfig接口提供的方法来获取 这些参数。
    • 在Servlet3.0及3.0之后的版本,该版本新增了若干注解。

    servlet生命周期:

       实例化(构造函数) ----> 初始化init() ---->  服务service() ---->  销毁destroy()

    1.  创建,init阶段: 第一次访问该servlet类时,创建并初始化。默认注意并不是tomcat容器启动阶段!(但配置start on load参数>=0时,容器启动时加载 )
    2.  service阶段:每访问一次,执行一次。
    3.  destroy阶段:应用结束。

        整个生命周期,init和destroy只执行一次,主要任务在service函数。实现servlet的类要重写service逻辑,如HttpServlet类。

    自定义servlet类

      开发过程,根据业务逻辑创建的自定义servlet,实现servlet接口。

      常用的抽象类:javax.servlet.GenericServlet  和  javax.servlet.http.HttpServlet

    1. GenericServlet  抽象类,与协议无关,适配器模式:已实现servlet接口的全部方法。
        继承此类的自定义servlet不必实现servlet接口的全部方法,用哪个重写哪个--适配器模式。
    2. HttpServlet (继承GenericServlet)  抽象类,http实现类,模板方法设计模式
        service()方法为protected,所以它的实现类 只需重写doGet(),doPost()等方法。开发中常见

    servlet配置

    1. web.xml中配置
      name --> class --> urlpattern
    2. 注解配置
      @WebServlet("/hello")

    servlet参数

    private  ServletConfig servletConfig;
    
    //getInitParameter() 获取某个K-V 参数
    String name = servletConfig.getInitParameter("name");
    String password = servletConfig.getInitParameter("password");
    
    //getInitParameterNames() 获取全部参数
    Enumeration<String> en = servletConfig.getInitParameterNames();
    
    //上面获取的是具体某个servlet类的局部参数
    //下面servletConfig.getServletContext().getInitParameter获取全局参数
    //getServletContext()返回ServletContext对象!!!---comtext容器,全局唯一
     String k = servletConfig.getServletContext().getInitParameter("k");
    
    
    //注解方式,先setAttribute赋值参数,getAttribute取值。K-V
    ServletContext servletContext = this.getServletContext();
    servletContext.setAttribute("user","Tom");
    String user = (String)servletContext.getAttribute("user");

    ServletContext对象

      servletContext,应用的servlet上下文容器,单实例唯一。tomcat服务器启动应用时产生,tomcat关闭时销毁context.

      servletContext对象是web应用中所有servlet的共享变量,用于servlet间的数据共享。

    • 获取servletContext对象:ServletContext context = config.getServletContext();

    servletContext对象功能:JavaWeb四大域对象之一

    Enumeration getAttributeNames()等 获取所有域属性的名称。  
    public String getInitParamenter(String name) 等 获取全局配置信息  
    public String getRealPath(String path)等 获取资源文件路径  
    public <T extends Servlet> createServlet(Class<T> clazz) 创建servlet,filter, listenner等 Dynamic
    addFilter(), addListenner(), addServlet() 添加web组件 Dynamic

    servlet重定向和转发

    • 重定向:HttpServletResponse的sendRedirect()方法。
        例如 response.sendRedirect(“demo.jsp");  //重定向到demo.jsp,此处注意路径,忘记加项目根目录
        可重定向到任意地址,浏览器url地址变化,request参数不共享。
    • 转发:RequestDispatcher.forward(request, response)方法。
            例如 request.getRequestDispatcher (“demo.jsp"). forward(request,response);//转发到demo.jsp
         只转发到同一web应用, 浏览器url地址不变,共享request参数。

     注意:sendRedirect()方法不能转发到“/WEB-INF/”路径下的jsp页面资源,而getRequestDispatcher().forword()可以重定向到“/WEB-INF/”路径下的jsp页面资源。如 request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); 

      web-inf 服务器的安全目录,浏览器无法直接访问。可通过servlet的forward,或者springMVC的视图解析,但都不是url直接访问的

     区别: 转发是HttpServletRequest中的方法,基于请求。重定向是HttpServletResponse中的方法,基于响应。

  • 相关阅读:
    Java XML的总结(一)
    golang两个协程交替打印1-100的奇数偶数
    nat类型探测方法(排除法)
    janus-gateway 在macOS上的编译部署
    性能测试-并发和QPS
    基于etcd的Rabbitmq队列订阅负载均衡
    【python学习笔记】10.充电时刻
    【python学习笔记】9.魔法方法、属性和迭代器
    【python学习笔记】8.异常
    【python学习笔记】7.更加抽象
  • 原文地址:https://www.cnblogs.com/scmath/p/11182957.html
Copyright © 2011-2022 走看看