JavaWeb学习心得之Servlet(一)

本文介绍了Servlet的基本概念和开发流程,包括实现Servlet接口、部署到Web服务器、生命周期方法如init、service和destroy,以及Servlet映射和线程安全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Servlet简介

       Servlet是sun公司提供的一门用于开发动态web资源的技术。

       Sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,步骤如下:

  1. 编写一个Java类,实现Servlet接口
  2. 把开发好的Java类部署到Web服务器中。

二、Servlet的运行过程
       Servlet程序是由web服务器调用的,其过程如下:
  1. web服务器首先检查是否已经装载了该Servlet的实例对象,如果是执行第4步,否则执行第2步
  2. 装载并创建Servlet的一个实例对象
  3. 调用Servlet实例对象的init()方法
  4. 创建请求对象HttpServletRequest和响应对象HttpServletResponse,然后调用service()并将请求和响应对象作为参数传递进去
  5. web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用destroy()方法
调用图:


三、开发Servlet
        创建web工程,其目录结构如下:

创建一个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;
/**
 *   Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。
 *   HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。
 * 因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
 *   HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,
 * 如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。
 * @author hanxin
 *
 */
public class ServletDemo01 extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//返回的数据类型是html
		response.setContentType("text/html");
		//获取输出流
		PrintWriter pw = response.getWriter();
		//输出内容
		pw.print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		pw.println("<HTML>");
		pw.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
		pw.println("<BODY>");
		pw.println("this is doGet");
		pw.println("</BODY>");
		pw.println("</HTML>");
		pw.flush();
		pw.close();
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//返回的数据类型是html
				response.setContentType("text/html");
				//获取输出流
				PrintWriter pw = response.getWriter();
				//输出内容
				pw.print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
				pw.println("<HTML>");
				pw.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
				pw.println("<BODY>");
				pw.println("this is doPost");
				pw.println("</BODY>");
				pw.println("</HTML>");
				pw.flush();
				pw.close();
	}
	
}

在web.xml文件中配置一个servlet



       项目部署到tomcat后,访问http://localhost:8080/ServletDemo/servletDemo01.do,红色的是xml配置的资源路径(url-pattern),前面的是项目路径(请阅读Tomcat部分


注意事项:
  • 同一个servlet可以匹配多个servlet-mapping,但是同一个servlet-mapping不能匹配多个servlet
  • 'url-pattern可以使用通配符(*.扩展名或"/*"结尾
  • Servlet类中如果设置的成员变量,那么他是线程不安全的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值