首页 > 代码库 > servlet学习总结

servlet学习总结

一、Servlet简介

  Servlet是sun公司提供的一门用于开发动态web资源的技术。
  Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口。
  2、把开发好的Java类部署到web服务器中。
  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

二、Servlet的运行过程

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
  ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  ②装载并创建该Servlet的一个实例对象。 
  ③调用Servlet实例对象的init()方法。
  ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  ⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。 

三、Servlet的几个功能代码

1.请求转发:
HttpServletRequest类型的request对象
request.getRequestDispatcher("/WEB-INF/pages/register.jsp").forward(request,response);
源码:只列出相关的代码
public interface ServletRequest {
  RequestDispatcher getRequestDispatcher(String var1);
}
public interface HttpServletRequest extends ServletRequest {}
interface RequestDispatcher {
   此处常量省略了

void forward(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

void include(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
}
2.ServletConfig中持有ServletContext的对象
  • WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

  • 多个Servlet通过ServletContext对象实现数据共享 

    ServletContext context = this.getServletConfig().getServletContext();//获得ServletContext对象
    context.setAttribute("data", data); //将data存储到ServletContext对象中

    String data = http://www.mamicode.com/(String) context.getAttribute("data");//从ServletContext对象中取出数据 

     

  • 获取WEB应用的初始化参数
   ServletContext context = this.getServletContext(); //获取整个web站点的初始化参数
   String contextInitParam = context.getInitParameter("url");
  • 用servletContext实现请求转发
    RequestDispatcher rd = context.getRequestDispatcher("/servlet/ServletContextDemo5");//获取请求转发对象(RequestDispatcher)
    rd.forward(request, response);//调用forward方法实现请求转发
  • 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

    String vlue = getInitParameter(name);

    Enumeration<String> e = config.getInitParameterNames();

 



servlet学习总结