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 删除数据