Servlet API 编程常用的类和接口

Servlet编程需要用到很多类和接口,下面介绍几个简单的类和接口:

一、Servlet 接口

  • (1)Servlet 接口:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
  • (2)servlet中的几个方法:
    • void destroy() 方法:当servlet 将要卸载时,由servlet 引擎调用。
    • ServletConfig getServletConfig() 方法:返回传递到servlet的 init()方法的ServletConfig 对象。
    • String getServletInfo() 方法:返回描述servlet的一个字符串。
    • void init(ServletConfig config) throws ServletException 方法:在servlet 被载入后和实施服务前由servlet 引擎进行一次性调用。
    • service(ServletRequest req, ServletResponse resp) throws ServletException, IOException 方法:处理request 对象中描述的请求,使response 对象返回请求结果。
    • 实现如下:

import java.io.IOException;

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

public class LoginServlet implements Servlet {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		
	
	}

	@Override
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

}

二、GenericServlet 类

  • (1)GenericServlet 类:GenericServlet是Servlet接口的实现类,我们可以通过继承GenericServlet来编写自己的Servlet。GenericServlet提供除了service()方法外所有接口中方法的缺省实现。

  • (2)实现如下:继承GenericServlet实现servlet,也就是说,继承GenericServlet可以实现servlet 的功能。

public class MyGenericServlet extends GenericServlet{
  @Override
  public void service(ServletRequest req, ServletResponse res) throws   ServletException, IOException {
    res.setContentType("text/html;charset=UTF-8");
    res.getWriter().print("你好,"+new Random().nextInt(100));
    res.getWriter().print("<hr/>");
    //直接调用获取servletconfig就可以了
    res.getWriter().print("此类在web.xml中配置的名称为 :"+getServletConfig().getServletName());
  }
}

三、HttpServlet 类

  • (1)HttpServlet 类:是servlet更一般的操作,常用的方法有doGet() 方法,doPost()方法。
  • (2)两个方法:doGet() 方法, doPost()方法。
    • doGet() 方法:由Servlet 引擎处理一个HTTP GET 请求,输入参数,HTTP 头标和输入流可从 request对象 ,response 对象 和头标 的输出流获取。
    • doPost()方法:由Servlet 引擎处理一个HTTP POST请求,输入参数,HTTP 头标和输入流可从 request对象 ,response 对象 和头标 的输出流获取。
    • 实现如下:
package com.servlet;

import java.io.IOException;
import java.util.List;

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

import com.dao.AuthorDao;
import com.entity.Author;

/**
 * Servlet implementation class AuthorServlet
 */
@WebServlet("/AuthorServlet")
public class AuthorServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AuthorServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	@SuppressWarnings("unused")
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	   doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

四、ServletRequest 类

  • (1)ServletReques : 封装了客户端请求的细节,它与协议无关,并有一个指定的HTTP 的子接口。主要适用于找到客户端的主机名和IP地址、检索请求参数、取得和设置属性和取得输入和输出流的功能。
  • (2)集中常用的方法:
    • String setCharacterEncoding() 方法: 设置字符编码。
    • String getParameter(String name ) 方法:返回指定输入参数,如果不存在,返回NULL。
    • Object setAttribute(String name) 方法:返回具有指定名字的请求属性,如果不存在返回NULL。
    • 实现如下:
	request.setAttribute("pageBean", pb);
    request.setCharacterEncoding("utf-8");

五、ServletResponse 类

  • (1)ServletResponse :将一个servlet生成的结果传到发送请求的客户端,它由servlet引擎创建。
  • (2)集中常用的方法:
    • getWriter():返回 PrintWriter 对象。调用该对象的 print() 方法,将把 print() 中的参数直接打印到客户的浏览器上。
    • setContentType(String type):设置响应的内容类型。
    • 具体实现:
ublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		
		PrintWriter out = res.getWriter();
		out.print("Hello!");
         
	}
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

		res.setContentType("application/msword"); //返回一个Word文档类型
		PrintWriter out = res.getWriter();
		out.print("Hello!");
         
	}

六、HttpServletRequest 接口

  • (1)HttpServletRequest :读取和写入HTTP头标,取得和设置cookies,取得路径信息和标识HTTP会话。
  • (2)几种常用的方法:
    • getContextPath()方法:返回请求地址的根目录,以"/“开关,但不是以”/"结尾
    • getServletPath() 方法:返回请求URI上下文的子串。
    • getMethod()方法 :返回HTTP请求方法。

七、HttpServletResponse 接口

  • (1)HttpServletResponse :加入表示状态码,状态信息,和响应头标的表示方法,它还负责对URL 中写入----web页面的HTTP会话ID进行解码。
  • (2)几种常用的方法:
    • void addCookie (Cookie cookie) 方法:将一个set-Cookie头标加入响应。
    • sendRedirect(“useradd.jsp”) 方法: 页面重定向。
      八、ServletContext 接口
  • (1) ServletContext:是一块所有客户都可以访问的共享的服务器端空间,和Session类似,就是名字和值。
  • (2)几种常用的方法:
    • String getRealPath();
    • String getInitParameter(String var1);
    • Enumeration getInitParameterNames();
    • Object getAttribute(String var1); 向ServletContext 获取数据
    • void setAttribute(String var1, Object var2);向ServletContext 添加数据
    • void removeAttribute(String var1); 向ServletContext 删除数据
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章