知识学习——Servlet基础

来源:互联网 发布:淘宝返场是什么意思 编辑:程序博客网 时间:2024/06/06 13:56

Servlet 生命周期

  • 通过调用 init () 方法进行初始化
  • 调用 service() 方法来处理客户端的请求
  • 通过调用 destroy() 方法终止
  • 最后由 JVM 的垃圾回收器进行垃圾回收
public class ServletTest extends HttpServlet {    //继承HttpServlet    public void destroy() {        //销毁方法        super.destroy();    }    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //处理get请求    }    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //处理post请求    }    public void init() throws ServletException {        //    }}

Servlet配置

//Servlet的名称和具体位置<servlet>    <servlet-name>RegServlet</servlet-name>    <servlet-class>servlet.RegServlet</servlet-class></servlet>//Servlet的名称和映射的地址,url-pattern可配置多个<servlet-mapping>    <servlet-name>RegServlet</servlet-name>    <url-pattern>/servlet/RegServlet</url-pattern></servlet-mapping>

ServletConfig和ServletContext

ServletConfig接口

在servlet运行期间,经常需要一些辅助信息。我们可以在web.xml中使用一个或者多个元素进行配置。当Tomcat初始化一个Servlet时,会将其配置信息封装到一个servletConfig对象中。

//Servlet的名称和具体位置<servlet>    <servlet-name>RegServlet</servlet-name>    <servlet-class>servlet.RegServlet</servlet-class>    <init-param>          <param-name>encoding</param-name>          <param-value>utf-8</param-value>      </init-param>  </servlet>//Servlet的名称和映射的地址,url-pattern可配置多个<servlet-mapping>    <servlet-name>RegServlet</servlet-name>    <url-pattern>/servlet/RegServlet</url-pattern></servlet-mapping>

ServletConfig常用方法

  • String getInitParameter(String name) 根据name返回对应的初始化参数值
  • Enumeration getInitParameterNames() 返回一个Enumeration对象,包含所以初始化参数名
  • ServletContext getServletContext() 返回一个当前web的ServletContext对象
  • String getServletName() 返回当前Servlet的名字
public void doGet(HttpServletRequest request, HttpServletResponse response) throws   ServletException, IOException {        ServletConfig config=this.getServletConfig();}

ServletContext接口

在Servlet容器启动时,会在每个Web应用创建一个唯一的ServletContext对象代表当前应用,该对象不仅封装了当前web应用所有信息,还实现了多个Servlet之间的数据的共享。

获取web程序的初始化参数

<web-app>  <context-param>    <param-name>test</param-name>    <param-value>one</param-value>  </context-param></web-app>

可以使用改接口定义的getInitParameterNames() ,getInitParameter(String name)方法来获取参数值

public void doGet(HttpServletRequest request, HttpServletResponse response) throws   ServletException, IOException {        ServletContext context=this.getServletContext();        Enumeration<String> Names=context.getInitParameterNames();        while(Names.hasMoreElements()){            String name=Names.nextElement();            String value=context.getInitParameter(name);        }}

实现多个Servlet对象共享数据

  • Enumeration getAttributeNames() 返回所有属性名
  • Object getAttribute(String name) 根据名字返回对应的属性值
  • void removeAttribute(String name) 根据属性名删除匹配的属性
  • void setAttribute(String name,Object obj) 设置属性

读取web应用下的资源文件

  • set getResourcePaths(String path) 返回set集合,包含资源项目内子目录和文件目录的路径名称,path必须以(/)开始
  • String getRealPath(String path) 返回绝对路径
  • URL getResource(String path) 返回映射到某个资源文件的URL对象
  • InputStream getResourceAsStream(String path) 返回映射到某个资源文件的InputStream输入流对象。