`
Aether
  • 浏览: 13911 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JSP拾遗(六)——Servlet

    博客分类:
  • Java
阅读更多

在典型的J2EE中,我们的应用是通过应用服务器(如TOMCATJBOSSWEBLOGIC等)来加载启动的。如果我们需要在JSP之外做些额外的操作,这些操作并不依赖客户端的请求而执行,那么,我们就需要一个途径来告知服务器,如何来实现自己的操作。而我们程序内部与WEB服务器之间交互信息的途径就是web.xml里面的配置。在这里面,提供了三个接口配置来实现我们自己的需要。这三个接口是:servletfilterlistener

前面的jsp所生成的java代码中我们已经看到了servlet的一个子类的结构。给我们的最直观的感觉是,所有的html都需要用out.write()out.print()来输出,正是因为这个原因,才使得jsp大为流行,因为对于jsp来说,java编码人员和界面设计人员(美工)都可以很容易的修改。但jsp编程并不会取代servlet编程。我们可以定义一个servlet并使其在web应用启动后开始启动,这是jsp所做不到的,jsp只能在客户端发送请求后才能启动。

一个典型的servlet,包含以下方法:

void init(ServletConfig config) : 初始化servlet,根据ServletConfig传入的配置参数,来初始化相关信息。在servlet容器启动该servlet时执行,在一个servlet的生命周期内,这个方法只会执行一次;

void destroy() : 销毁servlet,释放servlet所占用的资源,如数据库链接等。在servlet容器停止该servlet时执行,在一个servlet的生命周期内,这个方法只会执行一次。

void service(ServletRequest req, ServletResponse res)处理请求并作出响应。当servlet容器指示改servlet对请求作出应答时,改方法被执行,在一个servlet的生命周期内,这个方法可以执行多次。

String  getServletInfo(): 返回该servlet的说明信息,如作者,版本等,当然,也可以声明都不做。

ServletConfig getServletConfig(): 返回该servlet的配置信息。一般可以直接返回init时传入的config信息。

典型的servlet用在初始化信息、启动后台线程、执行特定请求(不需要html页面的返回信息,如输出验证码、AJAX服务端等)场合。

下面这个例子将数据库链接信息配置到web.xml中,并由servlet读取配置。

配置信息:

<servlet>
	<description>init system parameters</description>
	<servlet-class>com.hx.servlet.SystemInitServlet</servlet-class>
	<init-param>
		<param-name>DRIVER_CLASS</param-name>
		<param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
	</init-param>
	<init-param>
		<param-name>CONN_URL</param-name>
		<param-value>jdbc:odbc:hxdb</param-value>
	</init-param>
	<init-param>
		<param-name>CONN_USERNAME</param-name>
		<param-value>sa</param-value>
	</init-param>
	<init-param>
		<param-name>CONN_PASSWORD</param-name>
		<param-value>sa</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

 SystemInitServlet类中读取这些信息:

 

package com.hx.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 *
 */
public class SystemInitServlet implements Servlet {

    private ServletConfig config;

    private static String DRIVER_CLASS;

    private static String CONN_URL;

    private static String CONN_USERNAME;

    private static String CONN_PASSWORD;

    /* (non-Javadoc)
     * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
     */
    public void init(ServletConfig servletConfig) throws ServletException {
        config = servletConfig;
        DRIVER_CLASS = servletConfig.getInitParameter("DRIVER_CLASS");
        CONN_URL = servletConfig.getInitParameter("CONN_URL");
        CONN_USERNAME = servletConfig.getInitParameter("CONN_USERNAME");
        CONN_PASSWORD = servletConfig.getInitParameter("CONN_PASSWORD");

        System.out.println("system init servlet processed successfully.DRIVER_CLASS=" + DRIVER_CLASS + ",CONN_URL="  + CONN_URL + ",CONN_USERNAME=" + CONN_USERNAME + ",CONN_PASSWORD=" + CONN_PASSWORD);
    }

    /** 
     */
    public static String getDriverClass() {
        return DRIVER_CLASS;
    }

    /**
     * @return
     */
    public static String getConnectionURL() {
        return CONN_URL;
    }

    /**
     * @return
     */
    public static String getConnectionUsername() {
        return CONN_USERNAME;
    }

    /**
     * @return
     */
    public static String getConnectionPassword() {
        return CONN_PASSWORD;
    }

    /* (non-Javadoc)
     * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
     */
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    }

    /* (non-Javadoc)
     * @see javax.servlet.Servlet#destroy()
     */
    public void destroy() {
    }

    /* (non-Javadoc)
     * @see javax.servlet.Servlet#getServletConfig()
     */
    public ServletConfig getServletConfig() {
        return config;
    }

    /* (non-Javadoc)
     * @see javax.servlet.Servlet#getServletInfo()
     */
    public String getServletInfo() {
        return null;
    }

}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics