java Servlet结构概述1之Servlet对象的结构

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	public void init(ServletConfig config) throws ServletException{
		super.init(config);
	}
	public void service(HttpServletRequest request,HttpServletResponse response)
			throws IOException{
		//设置响应的内容类型
		response.setContentType("text/html;charset=utf-8");
		//取得输出对象
		PrintWriter out = response.getWriter();
		out.println("<html><body>");
		//在浏览器中显示:第一个Servlet类
		out.println("第一个Servlet类");
		out.println("</body></html>");
	} 
}

先从引入的包说明

  • java.io.PrintWriter
    引入PrintWriter类,使用getWriter()获取PrintWriter类型的对象可以直接输出字符文本内容。
 PrintWriter out = response.getWriter();
 out.println("第一个Servlet类");
  • javax.servlet.ServletConfig
    在第一个初始化方法里面使用了ServletConfig的对象,这是Servlet容器或者是Servlet引擎在创建好Servlet对象后,就会调用初始化方法void init(ServletConfig config),接收一个ServletConfig类型的参数,Servlet通过这个参数向Servlet传递初始配置信息
@WebServlet(name = "thirdServlet", urlPatterns = { "/thirdServlet" },
initParams={@WebInitParam(name = "firstParam", value = "one"),
		@WebInitParam(name = "secondParam", value = "two")})
public void init(ServletConfig config) throws ServletException {
		//获得参数firstParam的值
		first = config.getInitParameter("firstParam");
		second = config.getInitParameter("secondParam");
		System.out.println("第一个参数值:" + first);//输出one
		System.out.println("第二个参数值:" + second);//输出teo
	}
  • javax.servlet.http.HttpServlet

Servlet的接口实现类有两个:GenericServlet和HttpServlet
GenericServlet是一个抽象类,该类俄日Servlet提供了部分实现,他并没有实现HTTP请求处理
HttpServlet是GenericServlet的子类,它继承了GenericServlet所有方法,并且为HTTP请求中的POST、GEt等类型提供了具体的操作方法
所以我们通常写的Servlet类都是继承HttpServlet
HttpServlet的对于POST、GET的具体操作方法就是doPost()以及doGet()

  • public void service(HttpServletRequest request,HttpServletResponse response)
    再看一下service()方法
    通过service()方法将HTTP请求和响应分别强转为HttpServletRequest和HttpServletResponse类型的对象。分别传递客户端的请求以及响应客户端的请求
    此外由于Httpservlet类在重写的service()方法中,为每一种HTTP请求方式都定义了对应的doxxx()方法,因此当我们写的Servlet类继承HttpServlet类继续根据请求方式,重写对应的doXxx()方法即可,而不需要重写service()方法
  • doPost() doGet()
    一般情况,如果无论用户请求类型是get还是post,服务器的处理过程都是完全相同的,那么可以只在doPost()方法中编写处理过程,而在doGet()方法中调用doPost()方法即可;反之亦可。
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页