基础知识: Java servlet

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了基础知识: Java servlet脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

使用 Java 技开发 WEB 应用程序 , 深入了解 Servlet 的机制对应用的开发将有重要的推动作用 . 而想深入了解 Servlet 的机制就不得不了解 javax.servlet 包 .

javax.servlet 包中包含了 7 个接口 ,3 个类和 2 个异常类 , 它们分别是 :

接口 :RequestDispatcher,Servlet,Servletconfig,ServletContext,ServletRequest,ServletResponse 和 SingleThreadModel

类 :GenericServlet,ServletInputStream 和 ServletOutputStream

异常类 :ServletException 和 UnavailableException

Servlet 的生命周期

在 Servlet 的接口中定义了一个 Servlet 的生命周期方法 , 分别是 InIT,Service 和 Destroy
演示了 Servlet 生命周期方法的简单 Servlet:

import javax.servlet.*;  import java.io.IOException;     public class PRimitiveServlet implements Servlet {       public void init(ServletConfig config) throws ServletException {      System.out.println("init");    }       public void service(ServletRequest request, ServletResponse response)      throws ServletException, IOException {      System.out.println("service");    }      public void destroy() {      System.out.println("destroy");    }       public String getServletInfo() {      return null;    }    public ServletConfig getServletConfig() {      return null;    }     } 

在 Servlet 中如何获取 ServletConfig 对象 ?

在 Servlet 的 Init 方法中 ,Servlet Container 将会传入一个 ServletConfig 对象 , 开发人员可以通过这个对象获取在 web.XMl 文件中定义的 Servlet 初始化参数 .

下面是一个获取 Servlet 初始参数的示例 :

import javax.servlet.*;  import java.util.Enumeration;  import java.io.IOException;     public class ConfigDemoServlet implements Servlet {       public void init(ServletConfig config) throws ServletException {      Enumeration parameters = config.getInitParameternames();      while (parameters.hasMoreElements()) {        String parameter = (String) parameters.nextElement();        System.out.println("Parameter name : " + parameter);        System.out.println("Parameter value : " +          config.getInitParameter(parameter));      }    }       public void destroy() {    }       public void service(ServletRequest request, ServletResponse response)      throws ServletException, IOException {    }       public String getServletInfo() {      return null;    }       public ServletConfig getServletConfig() {      return null;    }  }

如何获取 ServletContext 对象 ?

可以通过 ServletConfig 对象的 getServletContext 方法获取 ServletContext 对象

import javax.servlet.*;  import java.util.Enumeration;  import java.io.IOException;     public class ContextDemoServlet implements Servlet {    ServletConfig servletConfig;       public void init(ServletConfig config) throws ServletException {      servletConfig = config;    }       public void destroy() {    }       public void service(ServletRequest request, ServletResponse response)      throws ServletException, IOException {       ServletContext servletContext = servletConfig.getServletContext();      Enumeration attributes = servletContext.getAttributeNames();      while (attributes.hasMoreElements()) {        String attribute = (String) attributes.nextElement();        System.out.println("Attribute name : " + attribute);        System.out.println("Attribute value : " +          servletContext.getAttribute(attribute));      }         System.out.println("Major version : " +  servletContext.getMajorVersion());      System.out.println("Minor version : " +  servletContext.getMinorVersion());      System.out.println("Server info : " + servletContext.getServerInfo());    }       public String getServletInfo() {      return null;    }    public ServletConfig getServletConfig() {      return null;    }     }

何在 Servlet 之间共享信息 ?

我们可以通过 ServletContext 来维护在不同 Servlet 之间共享的信息 .

如何解决 Servlet 的多 Thread 问题 ?

如果 Servlet 需要读写外部资 , 我们需要考虑 Thread 的问题 , 我们可以使用声明性接口 SingleThreadModel 来避免多 Thread 之间的资源冲突问题 . 但是需要注意的是 , 如果 Servlet 仅仅只是读外部资源的话 , 我们通常不应该实现这个接口 . 如果实现这个接口 ,Servlet 在同一时刻只能服务一个用户请求 , 后至的用户请求必须在队列中等待

HttpServlet容器响应Web客户请求流程如下:
1)Web客户向Servlet容器发出Http请求;

2)Servlet容器解析Web客户的Http请求;

3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;

4)Servlet容器创建一个HttpResponse对象;

5)Servlet容器调用HttpServlet的service方法,这个方法中会根据request的Method来判断具体是执行doGet还是doPost,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;

6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

7)HttpServlet调用HttpResponse的有关方法,生成响应数据;

8)Servlet容器把HttpServlet的响应结果传给Web客户。

脚本宝典总结

以上是脚本宝典为你收集整理的基础知识: Java servlet全部内容,希望文章能够帮你解决基础知识: Java servlet所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。