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 service(ServletRequest request,ServletResponse 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抽象类

HttpServlet是GenericServlet类的子类。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类型,如GET、POST等。


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 sendRedirect(String 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对象实例名

时间: 2024-10-18 06:43:48

Servlet系列(三)----Servlet核心API的相关文章

Java Servlet系列之Servlet生命周期

Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Servlet的生命周期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(): 2. service()方法 它是Servlet的核心,每当

Servlet系列(一)----Servlet简介

Servlet是使用java Servlet接口运行在Web应用服务器上的java程序,与普通Java程序不同.他可以对web浏览器或其他HTTP请求进行处理,是位于web服务内部的服务器端的java应用程序. 最初的JSP开发模式为JSP+JavaBean称为Model1模式.JSP+Servlet+javaBean则慢慢变成了Model2模式.一般在建立中小型网站时使用Model1模式,建立大型网站时使用Model2模式. Servlet是一种独立于平台和协议的服务器端java应用,他可以生

支持GPS的核心API

Android为GPS功能支持专门提供了一个LocationManager类,它的作用于TelephonyManager.AudioManager等服务类的作用相似,所有GPS定位相关的服务.对象都将有该对象来产生. 与程序中获取TelephonyManager.AudioManager的方法相似,程序并不能直接LocationManager的实例,而是通过调用Context的getSystemService()方法来获取,例如如下代码: LocationManager  lm  =  getS

JavaEE基础(02):Servlet核心API用法详解

摘自:https://www.cnblogs.com/cicada-smile/p/12020195.html 本文源码:GitHub·点这里 || GitEE·点这里 一.核心API简介 1.Servlet执行流程 Servlet是JavaWeb的三大组件之一(Servlet.Filter.Listener),它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:接收请求数据:处理请求:完成响应. 2.核心API简介 API

JavaWeb学习之Servlet(三)----Servlet的映射匹配问题、线程安全问题

[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140529.html 联系方式:[email protected] 一.Servlet映射匹配问题: 在第一篇文章中的第四段(MyEclipse及Tomcat的配置)已经讲到这个知识,现在再细化一下: 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使

Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(2)

三.Servlet的生命周期 一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除.Servlet的生命周期被javax.servlet.Servlet这个接口所定义. 所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行. Servlet引擎是Web 服务器按照Java Servlet API定制的扩展.S

实现servlet的三种方式

实现servlet的三种方式 01,实现servlet接口 02,继承GenericServlet 03,继承HttpServlet 常用的 注:Httpservlet=====extends====>GenericServlet=====implements====>Servlet接口

Apache Kafka系列(三) Java API使用

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java Client API 一.基本概念 Kafka集成了Producer/Consumer连接Broker的客户端工具,但是在消息处理方面,这两者主要用于服务端(Broker)的简单操作,如: 1.创建Topic 2.罗列出已存在的Topic 3.对已有Topic的Produce/Consume测试

JavaWeb系列:Servlet

个人整理,欢迎转载与批评建议,转载请添加索引,谢谢. ---------------------------------------------------------------2017.06.10--------------------------------------------------------------- Servlet简介 Servlet是Java Web的技术核心之一,而且也是另一技术核心Java Server Pages(JPS)的支撑基础.文章的主要部分将介绍Serv