zoukankan      html  css  js  c++  java
  • java web 中的servlet讲解

    首先,解释一下解释一下什么是servlet?说一说Servlet的生命周期?

    servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。


    web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

    Servlet的基本架构

    通过代码来了解,请看下面的代码:

    public class ServletName extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws
    ServletException, IOException {
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws
    ServletException, IOException {
    }
    }
    

     

    forward()与redirect()的区别?

    前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

    什么情况下调用doGet()和doPost()?

    Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()。

  • 相关阅读:
    python脚本 快速执行mapreduce程序
    ArrayList中contains()的使用方法
    利用jstl标签实现国际化
    device eth0 does not seem to be present, delaying initialization
    java中compareTo和compare方法之比较
    CentOS 7 NAT模式LVS搭建
    CentOS 7 DR模式LVS搭建
    CentOS 7 开机延迟解决办法
    CentOS 7 nginx+tomcat9 session处理方案之session复制
    Jumpserver(跳板机、堡垒机)启动jms Django连接mysql数据库报错
  • 原文地址:https://www.cnblogs.com/dqh94/p/6062659.html
Copyright © 2011-2022 走看看