servlet反射、生命周期、接口

什么是Servlet

Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

l  接收请求数据;

l  处理请求;

l  完成响应。

  例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

实现Servlet的方式(由我们自己来写!)

实现Servlet有三种方式:

l  实现javax.servlet.Servlet接口;

l  继承javax.servlet.GenericServlet类;

l  继承javax.servlet.http.HttpServlet类;

  通常我们会去继承HttpServlet类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始学习。

Servlet.java

public interface Servlet [c1] {

    public void init(ServletConfig config) throws ServletException;

    public ServletConfig getServletConfig();

    public void service(ServletRequest req, ServletResponse res)

            throws ServletException, IOException;

    public String getServletInfo();

    public void destroy();

}


Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,由Tomcat来创建!

public class AServlet implements Servlet {
	/*
	 * 它也是生命周期方法
	 * 它会在Servlet被销毁之前调用,并且它只会被调用一次!
	 */
	@Override
	public void destroy() {
		System.out.println("destory()...");
	}

	/*
	 * 可以用来获取Servlet的配置信息
	 */
	@Override
	public ServletConfig getServletConfig() {
		System.out.println("getServletConfig()...");
		return null;
	}

	/*
	 * 获取Servlet的信息
	 */
	@Override
	public String getServletInfo() {
		System.out.println("getServletInfo()...");
		return "我是一个快乐的Servlet";
	}

	/*
	 * 它是生命周期方法
	 * 它会在Servlet对象创建之后马上执行,并只执行一次!(出生之后)
	 * 
	 */
	@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		System.out.println("init()...");
		
		/*
		 * 获取初始化参数
		 */
		System.out.println(servletConfig.getInitParameter("p1"));
		System.out.println(servletConfig.getInitParameter("p2"));
		
		/*
		 * 获取所有初始化参数的名称
		 */
		Enumeration e = servletConfig.getInitParameterNames();
		while(e.hasMoreElements()) {
			System.out.println(e.nextElement());
		}
	}

	/*
	 * 它是生命周期方法
	 * 它会被调用多次!!!
	 * 每次处理请求都是在调用这个方法!
	 */
	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		System.out.println("service()...");
	}
}

  

生命周期方法:

l  void init(ServletConfig):出生之后(1次);

l  void service(ServletRequest request, ServletResponse response):每次处理请求时都会被调用;

l  void destroy():临死之前(1次);

特性:

l  单例,一个类只有一个对象;当然可能存在多个Servlet类!

l  线程不案例的,所以它的效率是高的!

Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。

猜你喜欢

转载自www.cnblogs.com/eadela/p/11310027.html