JavaWeb:Servlet是如何工作的?

推荐文章:servlet的本质是什么,它是如何工作的?(来自知乎)

什么是Servlet?

Servlet(Server Applet,全称Java Servlet。是⽤Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,⽣成动态Web内容。
狭义的Servlet是指Java语⾔实现的⼀个接⼝,⼴义的Servlet是指任何实现了这个Servlet接⼝的类,⼀般情况下,⼈们将Servlet理解为后者。
Servlet运⾏于⽀持Java的应⽤服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝⼤多数情况下Servlet只⽤来扩展基于HTTP协议的Web服务器。

也就是说,Servlet是用于处理HTTP请求并响应(根据不同的请求分配不同的Service)的处理类

Servlet工作模式:

  • 客户端发送请求至服务器
  • 服务器启动并调用Servlet,Servlet根据客户端请求生成响应并将其传给服务器
  • 服务器将响应返回客户端

Servlet的API
在这里插入图片描述

写一个简单的Servlet

  1. 创建⼀个类实现Servlet接⼝,或继承HttpServlet,重写⽅法
public class LoginServlet implements Servlet {
   
 @Override
 public void init(ServletConfig servletConfig) throws ServletException {
   
 	//初始化⽅法
 }
 @Override
 public ServletConfig getServletConfig() {
   
 	return null;
 }
 @Override
 public void service(ServletRequest servletRequest, ServletResponse
servletResponse) throws ServletException, IOException {
   
 	//处理get/post请求的⽅法
 }
 @Override
 public String getServletInfo() {
   
 	return null;
 }
 @Override
 public void destroy() {
   
 	//销毁的⽅法
 }
}
  1. 在web.xml文档中配置映射关系
 <servlet>
 <servlet-name>⾃定义名称</servlet-name>
 <servlet-class>处理请求的类的完整路径</servlet-class>
 </servlet>
 <servlet-mapping><!-- mapping 表示映射 -->
 <servlet-name>⾃定义名称</servlet-name>
 <url-pattern>请求名</url-pattern>
 </servlet-mapping>

执行顺序

当客户端发送的请求"test"到达服务器

  1. 首先,到web.xml配置文件中的servlet-mapping标签中对url-pattern标签中的内容进行匹配,找到url-pattern标签内容为"/test"对应的处理类名称servlet-name

  2. 接下来,到servlet标签中对servlet-name标签中的内容进行匹配,找到servlet-name对应的servlet-class标签中的内容,如此就获得了处理类的完整路径

所以,当启动tomcat,在浏览器输入http://localhost/工程名/访问路径 提交请求后,便可以通过以上顺序找到处理类的完整路径,通过反射的方式使得程序运行过程中动态得到处理类的属性和方法,使我们不需要编写main方法,不需要手动new一个对象,便能够处理请求。

说说Servlet的工作原理?

(1)Servlet接口定义了Servlet和Servlet容器之间的契约:Servlet容器将Servlet类载入内存,(生成实例)并产生Servlet实例和调用它的具体方法。在一个应用程序中,每种Servlet类只能有一个实例(单例模式

(2)用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。请求和响应对象都是由Servlet容器(如Tomcat)封装好的,并不需要程序员去实现&#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值