首页 > 代码库 > Servlet系列(三)----Servlet核心API

Servlet系列(三)----Servlet核心API

Servlet接口

Servlet的运行需要Servlet容器的支持Servlet容器通过调用Servlet对象提供了标准的API接口,对请求进行处理.Servlet开发中,任何接口都要直接或间接实现javax.servlet.Servlet接口,该接口是Servlet API的核心接口,此接口提供了5个方法

方法

说明

public void init(ServletConfig config)

Servlet实例化后,Servlet容器调用此方法完成初始化工作

public void serviceServletRequest requestServletResponse response

此方法用于处理客户端请求。

public void destroy()

Servlet对象从Servlet容器中移除时,容器调用此方法,以便释放资源

public ServletConfig getServletConfig()

此方法用于获取Servlet对象的配置信息,返回ServletConfig对象。

public String getServletInfo()

此方法返回有关Servlet的信息,他是纯文本格式的字符串,如作者、版本等。

GenericServlet抽象类

GenericServlet类对Servlet接口进行了实现。他是一个抽象类,分别实现了Servlet接口和ServletConfig接口,此类对除了service()外的其他方法进行了实现,在创建Servlet对象时,可以继承GenericServlet类来简化程序中的代码,但是需要实现service()方法。

HttpServlet抽象类

HttpServletGenericServlet类的子类。GenericServlet类对javax.servlet.Servlet接口进行了实现,为程序开发提供了方便。但是在实际开发中,大多数的应用都是使用Servlet处理HTTP协议的请求,并对请求作出回应,所以通过集成GenericServlet类仍然不是很方便,javax.servlet.http.HttpServlet类对GenericServlet类进行了扩展,为Http请求的处理提供了灵活的方法。

HttpServlet类仍然是一个抽象类,他对service()方法进行了实现,并针对HTTP1.1中定义的7中请求类型提供了相应的方法,分别是doGet()doPost()doPut()doDelete()doHead()doTrace()doOptions()

HttpServletRequest接口

该接口位于javax.servlet.http包中,此接口继承了javax.servlet.ServletRequest接口,是Servlet中的重要接口,在开发中经常用到。

下面看一下他的常用方法。

方法

说明

public String getContextPath()

返回请求的上下文路径,此路径以/开头

public Cookie[] getCookies()

返回请求中发送的所有Cookie对象,返回值为Cookie数组

public String getMethod()

返回请求所使用的HTTP类型,如GETPOST等。

public String getQueryString()

返回请求中参数的字符串形式,例如:请求为”MyServlet?username=mr”则返回”username=mr”

public String getRequestURI()

返回主机名到请求参数之间部分的字符串形式

public StringBuffer getRequestURL()

返回请求的URL,此URL中不包含请求的参数

public String getServletPath()

返回请求URL中的Servlet路径的字符串,不包含参数

public HttpSession getSession()

返回与请求关联的HttpSession对象

具体使用方法如下:

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpServletRequestDemo extends HttpServlet {
	public HttpServletRequestDemo() {
		super();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		out.print("<p>上下文路径:"+request.getContextPath()+"</p>");
		out.print("<p>HTTP请求类型:"+request.getMethod()+"</p>");
		out.print("<p>请求参数:"+request.getQueryString()+"</p>");
		out.print("<p>请求URL:"+request.getRequestURI()+"</p>");
		out.print("<p>请求URL:"+request.getRequestURL().toString()+"</p>");
		out.print("<p>请求Servlet路径:"+request.getServletPath()+"</p>");
		out.flush();
		out.close();
	}

}

运行效果如下:

HttpServletResponse接口

HttpServletResponse接口位于javax.servlet.http包中,它继承了javax.servlet.ServletResponse接口,此接口常用方法如下:

方法

说明

public void addCookie(Cookie cookie)

向客户端写入Cookie信息

public void sendError(int sec)

发送一个错误状态码为sec的错误相应到客户端

public void sendError(int sc,String msg)

发送一个包含错误状态码以及错误信息响应到客户端,参数sc是错误状态,参数msg是错误信息

public void sendRedirectString location

使用客户端重定向到新的URL,参数location为新的地址。

例如:模拟一个开发中的异常,使用throw将他抛出。

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpServletResponseDemo extends HttpServlet {

	public HttpServletResponseDemo() {
		super();
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		try{
			throw new Exception("抛出异常!");
		}catch(Exception e){
			response.sendError(500, e.getMessage());
		}
		out.flush();
		out.close();
	}

}

运行结果如下:

ServletConfig接口

ServletConfig接口位于javax.servlet包中,该接口用于封装Servlet的初始化参数信息,在Servlet初始化期间被传递,每一个Servlet都有且只有一个ServletConfig对象,此接口中定义了四个方法:

方法

参数

public String getInitParameter(String  name)

此方法返回String类型名称为name的初始化参数值

public Enumeration  getInitParameterNames()

获取所有初始化参数名的枚举集合

public ServletContext getServletContext()

用于获取Servlet上下文对象

public String getServletName()

返回Servlet对象实例名

 

Servlet系列(三)----Servlet核心API