JavaWeb快速入门--Servlet(1,大厂架构师经验分享

本文详细介绍了Servlet的工作原理、生命周期、实现方法,包括如何创建动态HTML页面、处理HTTP请求,以及如何在Web.xml中配置和使用。重点讲解了继承HttpServlet的便捷实践与配置注解的引入。

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

关于Servlet


Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。当客户机将请求信息发送到服务器时,服务器可以将请求信息发送给Servlet,并让Servlet进行响应。通过这个方式,Servlet可以实现许多功能:

  • 1.创建并返回一个基于客户请求实质的、动态内容的完整HTML页面;

  • 2.创建可嵌入到现有HTML页面中的HTML片段

  • 3.读取客户端发送过来的隐藏数据

  • 4.读取客户端发送过来的显示数据

  • 5.与其它服务器资源进行通信

  • 6.通过状态码和响应头向客户端发送隐藏数据

    在这里插入图片描述

Servlet的生命周期


Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理。Servlet的生命周期在它被装入Web服务器内存时开始,在Web服务器终止或重新装入Servlet时结束。一个Servlet程序在Web服务器上的运行过程经历了:装入、初始化、调用、销毁四个阶段,它的生命周期在第二个阶段开始,在第四个阶段终止。

生命周期方法:

载入(init),Web服务器加载和实例化Servlet的工作,该工作可以在Web服务器启动时到Web服务器受到请求时,之间任一时刻完成,之后进行初始化工作,这些工作在整个生命周期中只执行一次。

服务(service),从请求对象处获取响应信息,进行处理之后再次响应给客户机, 每次客户机请求时,Service方法都会被调用一次。

销毁(destroy):当服务器不再需要Servlet对象时,或者需要载入新的Servlet对象实例时,Web服务器会调用destroy方法执行销毁(一般只有在服务器正常关闭时执行),只执行一次。


 public class ServletDemo 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 arg0) throws ServletException {

		// TODO Auto-generated method stub

	}

	@Override

	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {

		// TODO Auto-generated method stub

		System.out.println("Hello Servlet");

	}



} 

快速入门


在我们开发过程中,实现Servlet的方法有3种,分别是实现Servlet接口、继承GenericServlet类和继承HttpServlet类,GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象,HttpServlet是对http协议的一种封装,我们可以定义类继承HttpServlet,然后复写doGet/doPost方法。(在实际应用中,继承HttpServlet应用居多)

在这里插入图片描述

如果我们想要发送一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成:编写一个Java类,实现servlet接口,把开发好的Java类部署到web服务器中这两步。

  • 搭建步骤:

    1. 创建JavaEE项目

    2. 定义一个类,实现Servlet接口(public class ServletDemo1 implements Servlet)

    3. 实现接口中的抽象方法

    4. web.xml中配置Servlet

定义MyServlet类,通过继承HttpServlet类来实现Servlet接口


public class MyServlet extends HttpServlet {       



	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		//........................

	}



	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		//........................

	}



} 

配置web.xml文件,访问路径为/servlet


<!--配置Servlet -->

<servlet>

    <servlet-name>servlet</servlet-name>

    <servlet-class>cn.ly.web.servlet.MyServlet</servlet-class>

</servlet>



<servlet-mapping>

    <servlet-name>servlet</servlet-name>

    <url-pattern>/servlet</url-pattern>

</servlet-mapping> 

  • 执行原理:

    1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

    2. 查找web.xml文件,是否有对应的标签体内容。

    3. 如果有,则在找到对应的全类名

    4. tomcat会将字节码文件加载进内存,并且创建其对象

    5. 调用其方法

注意:Servlet3.0之后,我们可以通过使用注解来代替web.xml配置,我们只需要在MyServlet类种的上方添加一个@WebServlet("/servlet")即可(适用于单个Servlet的配置)

@WebServlet相关配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值