初始Servlet

1.什么是Servlet?

可以把它理解为一个小程序,该程序运行在服务器端,用来处理客户端发送过来的请求。

例如:

1.获取请求数据:登录的时候,Servlet就需要获取到用户输入的用户名和密码;

2.处理请求:Servlet获取到用户密码后,就需要进行相应的处理

3.响应请求:对于登录来说,Servlet需要给浏览器响应,登录成功或失败

2.Servlet的原理

有了对Servlet一定的基础,下面来看一下Servlet运行原理。在Tomact中是如何找到Servlet的呢?

当用户在客户端访问Servlet时,是通过Servlet在Tomact的web.xml文件配置的访问路径放问的。下面通过一张图来看一下。

根据上图我们来分析一下,具体流程如下。

(1)服务器根据客户端的访问路径,获得Servlet的访问路径。

(2)服务器通过获得的路径去web.xml中进行匹配,其中在这个过程中需要对web.xml进行解析

(3)匹配成功后,会找到相应的<servlet-class>标签,这是关键所在,其值为Servlet类名,可以通过反射获取该Servlet的class对象

(4)然后调用Class对象的newInstance()方法,实例化一个Servlet对象。在此一定要为Servlet提供一个无参数的构造方法。

(5)利用反射获得Service()方法的Method对象,然后调用service方法,这样就可以实现了service方法的执行。

3.Servlet生命周期

有了对Servlet实现原理的介绍,我们来看一下,Servlet整个生命周期的运作。

4.Servlet中相关接口和类

注意:其中我们经常用的是继承的HttpServlet

5.Servlet的线程安全

通过了解Servlet的生命周期,我们可以得出以下几点

(1)客户端不同的请求会对应不同的Servlet

(2)每个Servlet都是独一无二的

(3)服务器端会保存多个Servlet,来处理不同的请求

通过这几点我们知道,一个Servlet对应一个Servlet实例,也就是说Servlet是单实例的,那么就有可能出现一个Servlet同时处理多个不同的请求,这时就可能造成线程不安全,解决办法通常如下:

1.不用在servlet中创建成员变量,可以创建局部变量

2.如果要创建成员变量,必须保证是无状态的成员变量

3.如果创建的有状态的成员变量,状态必须是只读的。

时间: 2024-11-05 14:40:16

初始Servlet的相关文章

我的Java之旅 第八课 Servlet 进阶API、过滤器与监听器

1.Servlet.ServletConfig与GenericServlet 首次请求的顺序 => 生成HttpServletRequest与HttpServletResponse =>调用service()方法,以前边两个对象作为参数 =>Web容器启动, =>读取Servlet设置信息,实例化Servlet类 =>为每个Servlet设置信息产生一个ServletConfig对象. =>调用Servlet接口的init()方法,以产生的ServletConfig对象

【从零开始】【002】构建简易servlet完成发布与访问

一.技术选型 在这里就涉及到J2EE的MVC模式了,那么在技术选型上面怎么确定要使用什么技术呢?当然是自己比较熟悉的了.我们先从三层架构上面逐一来讨论. 1.视图层 目前本人了解的视图层的实现可以有以下的几种方式:html,jsp,freemarker,这三种方式配合前端的javascript.jquer.ajax等脚本都可以实现动态的页面,当然从使用方便上来说还是freemarker比较优越,并且这个也是本人使用时间比较长的一个视图模板引擎. 相关的介绍已经比较详细了,freemarker的封

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

SpringBoot初始教程之Servlet、Filter、Listener配置(七)

1.介绍 通过之前的文章来看,SpringBoot涵盖了很多配置,但是往往一些配置是采用原生的Servlet进行的,但是在SpringBoot中不需要配置web.xml的 因为有可能打包之后是一个jar包的形式,这种情况下如何解决?SpringBoot 提供了两种方案进行解决 2.快速开始 2.1 方案一 方案一采用原生Servlet3.0的注解进行配置.@WebServlet .@WebListener.@WebFilter是Servlet3.0 api中提供的注解 通过注解可以完全代替web

Servlet初始配置 监听器和过滤器

ServletContext:application范围内的参数 此所设定的参 来源: http://note.sdo.com/my 数,在JSP网页中可以使用下列方法来取得: ${initParam.param0}, <%=application.getInitParameter("param0") %><br/> 若在Servlet可以使用下列方法来获得: String param_name=getServletContext().getInitParame

JavaWeb之Java Servlet完全教程(转)

Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servlet必须部署在Java servlet容器才能使用.虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都要在幕后通过Servlet容器把页面编译为Java Servlet.也就是说,了解Java Servle

JSP/Servlet Web 学习笔记 DayFour

Servlet概述 Servelt是使用Java Servlet应用程序接口及相关类和方法的Java程序. Servlet是用Java编写的Server端程序,它与协议和平台无关.Servlet运行于Java服务器中. Java Servlet API 定义了Servlet和服务器之间的标准接口,这使得Servlet具有跨服务器平台的特性. 通常,Servlet采用一种无状态的“请求-响应”模型来访问.它能处理客户端传来的Http请求,从中提取参数,处理业务逻辑,最终返回数据或输出HTML.它还

web开发之Servlet 三

昨天我们学习了Servlet的运行过程和生命周期,那么今天我们学习下Servlet中非常重要的两个类:ServletConfig  ServletContext 我们可以看到,与顶层Servlet主动关联的是ServletConfig  ServletRequest ServletResponse ,它们通过容器传递给Servlet;其中Servlet初始化时候使用ServletConfig,另外两个是请求时调用传给Servlet. 一.ServletConfig 讲解 ServletConfi

Servlet 应用程序事件、监听器

Web容器管理Servlet/JSP相关的生命周期,若对HttpServletRequest对象.HttpSession对象.ServletContxt对象在生成.销毁或相关属性设置发生的时机点有兴趣,可以实现对应的监听器(Listener). 一.ServletContext事件.监听器 与ServletContext相关的监听器有两个,ServletContextListener.ServletContextAttributeListener 1.ServletContextListener