2 Servlet(1)

什么是Servlet:

  是开发动态web资源的技术。

一个java程序向浏览器输出数据的步骤:

  1、创建一个java类,实现servlet接口

  2、然后把java类部署到web服务器中

servlet运行的过程:(重点)

  1、web容器会先检查有没有servlet实例,没有则执行第二步,有则执行第四步

  2、web容器会装载和创建servlet实例

  3、调用init()方法,这是初始化方法(像游戏里面,刚开始你要设置人物的武力值什么的)

  4、创建http请求对象(用来封装数据的)和http响应对象,调用service()方法

  5、当web容器关闭,调用destroy()方法释放资源

使用servlet,需要理解它的web.xml配置文件(就像取小名,小名可以代表你本人):

  常见的属性:

  <servlet -name>:servlet注册名称

  <servlet -class>:servlet完整类名(就是servlet在项目中的绝对路径)

  <url - patten>:servlet对外访问路径(就是你访问网站的网址)

例子:

web.xml

 1 <Servlet>
 2     <servlet-name>demo1</servlet-name>
 3     <servlet-class>gacl.servlet.servlet.servletDemo1</servlet-class>
 4  </Servlet>
 5 
 6 
 7 <Service-mapping>
 8     <service-name>demo1</servlet-name>
 9     <url-patten>/servlet/1.jsp</url-patten>
10 </Servlet-mapping>
web.xml

Servlet:是java类,供其他java类调用,无法独立运行,受到Servlet引擎调用

Servlet线程安全问题:(我感觉挺重要的)

  出现的情况:出现多线程的情况下,会出现线程安全问题

  解决方法:

      1、将变量设置为局部变量(安全问题通常就是多个线程调用变量导致出现问题)

      2、synchronize(就是一个锁,第一个线程调用方法时,你将方法上锁,只有第一线程结束,第二线程才可以调用方法)

SUN公司提供的解决方法:让Servlet实现一个singleThreadModel接口,如果某个Servlet实现了ServletThreadModel接口,那么Servlet引擎

将以单线程模式来调用service方法

标记接口:没有变量,没有方法

作用:打上标志(比如cloneable()方法就是允许克隆)

(重要)对于实现SingleThreadModel接口的servlet,servlet引擎仍然对servlet的多线程并发访问,其采用的方式是产生多个servlet实例对象,

并发的每个线程分别调用一个独立的servlet实例对象

会当凌绝顶,一览众山小
原文地址:https://www.cnblogs.com/quenvpengyou/p/12846555.html