jsp运行过程

ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting `torch.set解决方案 本文主要介绍了ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting 'torch.set_default_device(device)` requires `accelerate`解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 阅读详情

Servlet如何处理多个请求访问?

Servlet容器(Web Server)默认是采用单实例多线程的方式处理多个请求的:
1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);
2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池通过web.xml,初始化每个参数值等等。
3.当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread) 调度它管理下线程池中等待执行的线程(Worker Thread)给请求者;
4.线程执行Servlet的service方法;
5.请求结束,放回线程池,等待被调用;
(注意:避免使用实例变量(成员变量),因为如果存在成员变量,可能发生多线程同时访问该资源时,都来操作它,照成数据的不一致,因此产生线程安全问题)
从上面可以看出:
第一:Servlet单实例,减少了产生servlet的开销;
第二:通过线程池来响应多个请求,提高了请求的响应时间;
第三:Servlet容器并不关心到达的Servlet请求访问的是否是同一个Servlet还是另一个Servlet,直接分配给它一个新的线程;如果是同一个Servlet的多个请求,
那么Servlet的service方法将在多线程中并发的执行;
第四:每一个请求由ServletRequest对象来接受请求,由ServletResponse对象来响应该请求;
Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。 
JSP的中存在的多线程问题: 
当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求。如果有多个客户端同时请求该JSP文件,
则服务端会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间. 

们先用图形大概解释一下web  服务器如何处理jsp请求的流程:。

这里写图片描述
简洁易懂. 接下来我们在思考每一步的具体实现, 看下图:

1.客户端请求jsp文件, web服务器(tomcat等)根据jsp文件生成java文件.

这里写图片描述

2.java文件生成对应的class字节码文件,字节码文件是可以通过classloader加载进虚拟机的. 
这里写图片描述

3.web容器加载class字节码文件. 
这里写图片描述

4.web容器通过反射等手段建立hello_jsp实例. 
这里写图片描述

5.调用对应的jspInit来进行实例初始化. 
这里写图片描述

6.调用_jspservice, 响应用户请求. 
这里写图片描述

7.调用jspDestroy销毁jsp_hello实例. 
这里写图片描述

因为jsp_hello继承自HttpJspBase, HttpJspBase又继承自Servlet, 所以jsp_hello是个servlet, 其生命周期可以交由web服务器控制.

JSP的生命周期

1)翻译: jsp->java文件 
2)编译: java文件->class文件(servlet程序) 
3)构造方法(第1次访问) 
4)init方法(第1次访问):_jspInit() 
5)service方法:_jspService() 
6)destroy方法:_jspDestroy()

Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。

 
JSP的中存在的多线程问题: 
当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求。如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间. 

对JSP中可能用的的变量说明如下: 
实例变量: 实例变量是在堆中分配的,并被属于该实例的所有线程共享,所以不是线程安全的. 
JSP系统提供的8个类变量 
JSP中用到的OUT,REQUEST,RESPONSE,SESSION,CONFIG,PAGE,PAGECONXT是线程安全的(因为每个线程对应的request,respone对象都是不一样的,不存在共享问题), APPLICATION在整个系统内被使用,所以不是线程安全的. 

局部变量: 局部变量在堆栈中分配,因为每个线程都有它自己的堆栈空间,所以是线程安全的. 
静态类: 静态类不用被实例化,就可直接使用,也不是线程安全的. 

外部资源: 在程序中可能会有多个线程或进程同时操作同一个资源(如:多个线程或进程同时对一个文件进行写操作).此时也要注意同步问题. 

使它以单线程方式执行,这时,仍然只有一个实例,所有客户端的请求以串行方式执行。这样会降低系统的性能 
     
问题 
问题一.
 说明其Servlet容器如何采用单实例多线程的方式来处理请求 
问题二. 如何在开发中保证servlet是单实例多线程的方式来工作(也就是说如何开发线程安全的servelt)。 
     
一. Servlet容器如何同时来处理多个请求     

Java的内存模型JMM(Java Memory Model) 
JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有实例变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存由缓存和堆栈两部分组成,缓存中保存的是主存中变量的拷贝,缓存可能并不总和主存同步,也就是缓存中变量的修改可能没有立刻写到主存中;堆栈中保存的是线程的局部变量,线程之间无法相互直接访问堆栈中的变量。根据JMM,我们可以将论文中所讨论的Servlet实例的内存模型抽象为图所示的模型。 



         工作者线程Work Thread:执行代码的一组线程。 
         调度线程Dispatcher Thread:每个线程都具有分配给它的线程优先级,线程是根据优先级调度执行的。 
        
        Servlet采用多线程来处理多个请求同时访问。servlet依赖于一个线程池来服务请求。线程池实际上是一系列的工作者线程集合。Servlet使用一个调度线程来管理工作者线程。 
       
        当容器收到一个Servlet请求,调度线程从线程池中选出一个工作者线程,将请求传递给该工作者线程,然后由该线程来执行Servlet的service方法。当这个线程正在执行的时候,容器收到另外一个请求,调度线程同样从线程池中选出另一个工作者线程来服务新的请求,容器并不关心这个请求是否访问的是同一个Servlet.当容器同时收到对同一个Servlet的多个请求的时候,那么这个Servlet的service()方法将在多线程中并发执行。 
         Servlet容器默认采用单实例多线程的方式来处理请求,这样减少产生Servlet实例的开销,提升了对请求的响应时间,对于Tomcat可以在server.xml中通过<Connector>元素设置线程池中线程的数目。 
       
        就实现来说: 
        调度者线程类所担负的责任如其名字,该类的责任是调度线程,只需要利用自己的属性完成自己的责任。所以该类是承担了责任的,并且该类的责任又集中到唯一的单体对象中。而其他对象又依赖于该特定对象所承担的责任,我们就需要得到该特定对象。那该类就是一个单例模式的实现了。 
    

注意:服务器可以使用多个实例来处理请求,代替单个实例的请求排队带来的效益问题。服务器创建一个Servlet类的多个Servlet实例组成的实例池,对于每个请求分配Servlet实例进行响应处理,之后放回到实例池中等待下此请求。这样就造成并发访问的问题。 
此时,局部变量(字段)也是安全的,但对于全局变量和共享数据是不安全的,需要进行同步处理。而对于这样多实例的情况SingleThreadModel接口并不能解决并发访问问题。 SingleThreadModel接口在servlet规范中已经被废弃了。


二 如何开发线程安全的Servlet

 

  1、实现 SingleThreadModel 接口 

  该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。这种方法只要将前面的Concurrent Test类的类头定义更改为: 

Public class Concurrent Test extends HttpServlet implements SingleThreadModel { 
………… 
}  

  2、同步对共享数据的操作 

  使用synchronized 关键字能保证一次只有一个线程可以访问被保护的区段,在本论文中的Servlet可以通过同步块操作来保证线程的安全。同步后的代码如下: 

………… 
Public class Concurrent Test extends HttpServlet { ………… 
Username = request.getParameter ("username"); 
Synchronized (this){ 
Output = response.getWriter (); 
Try { 
Thread. Sleep (5000); 
} Catch (Interrupted Exception e){} 
output.println("用户名:"+Username+"<BR>"); 
} 
} 
} 

  3、避免使用实例变量 

  本实例中的线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。 

  修正上面的Servlet代码,将实例变量改为局部变量实现同样的功能,代码如下: 

…… 
Public class Concurrent Test extends HttpServlet {public void service (HttpServletRequest request, HttpServletResponse 
Response) throws ServletException, IOException { 
Print Writer output; 
String username; 
Response.setContentType ("text/html; charset=gb2312"); 
…… 
} 
} 


 ** 对上面的三种方法进行测试,可以表明用它们都能设计出线程安全的Servlet程序。但是,如果一个Servlet实现了SingleThreadModel接口,Servlet引擎将为每个新的请求创建一个单独的Servlet实例,这将引起大量的系统开销。SingleThreadModel在Servlet2.4中已不再提倡使用;同样如果在程序中使用同步来保护要使用的共享的数据,也会使系统的性能大大下降。这是因为被同步的代码块在同一时刻只能有一个线程执行它,使得其同时处理客户请求的吞吐量降低,而且很多客户处于阻塞状态。另外为保证主存内容和线程的工作内存中的数据的一致性,要频繁地刷新缓存,这也会大大地影响系统的性能。所以在实际的开发中也应避免或最小化 Servlet 中的同步代码;在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。

 

更加详细的说明:


   1,变量的线程安全:这里的变量指字段和共享数据(如表单参数值)。 
       a,将 参数变量 本地化。多线程并不共享局部变量.所以我们要尽可能的在servlet中使用局部变量。 
          例如:String user = ""; 
              user = request.getParameter("user"); 

      b,使用同步块Synchronized,防止可能异步调用的代码块。这意味着线程需要排队处理。在使用同板块的时候要尽可能的缩小同步代码的范围,不要直接在sevice方法和响应方法上使用同步,这样会严重影响性能。 

       2,属性的线程安全:ServletContext,HttpSession,ServletRequest对象中属性。 
         ServletContext:(线程是不安全的) 
         ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。所以在Servlet上下文中尽可能少量保存会被修改(写)的数据,可以采取其他方式在多个Servlet中共享,比方我们可以使用单例模式来处理共享数据。 
         HttpSession:(线程是不安全的) 
         HttpSession对象在用户会话期间存在,只能在处理属于同一个Session的请求的线程中被访问,因此Session对象的属性访问理论上是线程安全的。 
         当用户打开多个同属于一个进程的浏览器窗口,在这些窗口的访问属于同一个Session,会出现多次请求,需要多个工作线程来处理请求,可能造成同时多线程读写属性。这时我们需要对属性的读写进行同步处理:使用同步块Synchronized和使用读/写器来解决。 
        ServletRequest:(线程是安全的) 
        对于每一个请求,由一个工作线程来执行,都会创建有一个新的ServletRequest对象,所以ServletRequest对象只能在一个线程中被访问。ServletRequest是线程安全的。注意:ServletRequest对象在service方法的范围内是有效的,不要试图在service方法结束后仍然保存请求对象的引用。 

3,使用同步的集合类: 
  使用Vector代替ArrayList,使用Hashtable代替HashMap。 

4,不要在Servlet中创建自己的线程来完成某个功能。 
  Servlet本身就是多线程的,在Servlet中再创建线程,将导致执行情况复杂化,出现多线程安全问题。 

5,在多个servlet中对外部对象(比方文件)进行修改操作一定要加锁,做到互斥的访问。 
   
6,javax.servlet.SingleThreadModel接口是一个标识接口,如果一个Servlet实现了这个接口,那Servlet容器将保证在一个时刻仅有一个线程可以在给定的servlet实例的service方法中执行。将其他所有请求进行排队。



PS:

Servlet并非只是单例的. 当container开始启动,或是客户端发出请求服务时,Container会按照容器的配置负责加载和实例化一个Servlet(也可以配置为多个,不过一般不这么干).不过一般来说一个servlet只会有一个实例。

 

 

1) Struts2的Action是原型,非单实例的;会对每一个请求,产生一个Action的实例来处理。 
2) Spring的Ioc容器管理的bean 默认是单实例的.Struts1 Action是单实例的,spring mvc的controller也是如此。


因此开发时要求必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。

 

Spring的Ioc容器管理的bean 默认是单实例的。

Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)。

当Spring管理Struts2的Action时,bean默认是单实例的,可以通过配置参数将其设置为原型。(scope="prototype )


Open Dynamics Engine(ODE)物理引擎教程(1)--下载与安装准备 引言 ODE是一个免费的工业级库,用于模拟关节式刚体动力学,例如地面车辆、腿部生物和虚拟现实环境中的移动对象。它具有快速、灵活、健壮和独立于平台的特点,具有先进的关节、摩擦接触和内置的碰撞检测功能。 项目主页:http://www.ode.org/ 线上手册:http://ode.org/wiki/index.php?title=Manual 本教程为博主亲自亲测过程的总结,转载请注明出处! ... 阅读详情

相关推荐

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

Tomcat 线程池

Tomcat 是一个流行的 Java Web 服务器,它使用线程池来处理客户端请求。线程池是一组预先创建的线程,用于执行并发任务,以提高性能和资源利用率。在 Tomcat 中,线程池被用来处理传入的 HTTP 请求。当客户端发送请求时,Tomcat 会从线程池中获取一个可用的线程来处理该请求。处理完请求后,线程将返回线程池,并在下一个请求到来时再次被重用。Tomcat 的线程池配置可以通过编辑server.xml文件来进行。maxThreads:指定线程池中的最大线程数。

一个菜鸡的博客 4245

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1914

tomcat线程池

tomcat线程池

weixin_43803688的博客 8949

经典蓝牙中的Sniff、Hold与Park模式

若主设备在Sniff Attempt窗口外发送数据,从设备无法接收,需依赖重传机制。移动时立即传输数据。:Sniff Interval=20ms,Attempt=1时隙。:传感器每2秒唤醒一次同步信标,主设备按需唤醒特定传感器采集数据。Slave进入Sniff模式:每20ms唤醒1个时隙监听数据。:设备需要短暂执行高优先级任务(如扫描其他蓝牙设备)。:无数据传输超时后,设备可能自动进入Sniff模式。:主设备通过信标唤醒从设备,或从设备主动请求退出(:平衡功耗与响应速度,适合间歇性数据传输设备。

shishuangquan111的博客 1673

华为OD机试真题 新系统 2026-09-26 Java&Go&C【数据中心最佳维护时间窗】

数据中心使用一个整数数组 scores,记录 N 小时内每小时的服务器得分(可正可负)。0 表示服务器故障(无效小时)。

MISAYAONE的博客 97

servlet单实例多线程模式

前言:Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。  JSP的中存在的多线程问题: 当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求。如果有多个客户端同...

kakajw的专栏 581

10、基于单倍型多样性隐马尔可夫模型的基因型错误检测

本文提出了一种基于单倍型多样性隐马尔可夫模型(HMM)的基因型错误检测方法,旨在提升三人组基因型数据中错误识别的准确性。通过利用群体水平的连锁信息,该方法克服了传统方法在小系谱数据中表现不佳的局限性。文章详细介绍了模型结构、三种替代似然函数及其计算方法,并通过模拟数据集和真实数据集验证了方法的有效性。实验结果显示,该方法在灵敏度、特异度和准确率方面均表现出色,为基因数据质量控制提供了新的解决方案。

moon9的博客 96

说说JSP开发中比较好的线程安全问题

先要说明的是,JSP默认是多线程的; JSP中用到的out,request,response,session,config,page,pageConext这7个怎么用都没系,但application就不是线程安全的了; 不是线程安全的,还有一个静态变量,JAVA里就那么死硬派,JSP里还是死性不改,但这个不是重点,重点是在获取页面值的时候,突然睡着了,或者其它什么原因了,这时又有人进来,把值给...

jatula的专栏 324

6、探索音乐结构中的统一性:贝多芬《英雄交响曲》第一乐章的深度剖析

本文深入剖析了贝多芬《英雄交响曲》第一乐章的音乐结构,探讨其统一性的来源及表现形式。通过主题与动机、和声与调性、旋律与节奏、织体与动态等多方面的分析,揭示了这部作品在技术层面和情感表达上的卓越成就。

b9c0d的博客 518

【Python办公】剪贴板记录工具(记录文本 + 图片防重复)

本文介绍了一个用Python开发的剪贴板记录工具,能够自动记录复制过的文本和图片内容。该工具使用tkinter构建GUI界面,通过后台线程实时监控剪贴板变化,具有文本记录、图片保存(自动去重)功能。核心代码采用pyperclip访问剪贴板,PIL处理图片,hashlib计算图片哈希值实现去重。运行程序后,文本内容直接显示在界面,图片保存为PNG文件并记录路径。工具还提供清空历史记录功能,适合日常办公中需要追踪剪贴板历史的使用场景。

weixin_42636075的博客 239

【线程池】Tomcat线程池

最近看到篇关于 Tomcat 线程池的博客,因为之前只看过 JDK 线程池,记录一下。在微服务横行的今天,确实还是有必要研究研究 Tomcat 的线程池Tomcat 线程池和 JDK 线程池最大的不同就是它先把最大线程数用完,然后再提交任务到队列里面。深入理解线程池(ThreadPoolExecutor)——细致入微的讲源码。workerstarted = true-优快云博客本文主要介绍了 Tomcat 线程池的运行流程,和 JDK 线程池的流程比起来,它确实不一样。

m0_64944491的博客 1724

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JSP运行原理及运行过程

学习J2EE时,初步了解了JSP,写过一篇小的总结:J2EE-JSP,当时还不是很了解它的运行机制。学习DRP时,再次接触了JSP,在原来基础上有了更深的了解,了解了它的执行原理1,JSP的运行原理(1)WEB容器JSP页面的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。(2)每个JSP页面在第一次被访问时,JS...

yupi1057的博客 1031

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

图解JSP运行原理和过程

JSP运行过程 WEB容器JSP页面的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。 每个JSP页面在第一次被访问时,JSP引擎先将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器像调用普通Servlet程序一样的方式来装载和解释执行这个由

along 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jsp运行原理和执行过程

一、jsp的运行原理 1、客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。 2、服务器根据接收到的客户端的请求来加载相应的JSP文件。 3、Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet。 4、JSP引擎将生成的Servlet代码编译成Class文件。 5、服务器执行这个Class文件。 6、最后服务器将执...

勿忘初心的博客 1万+

JSP - 什么是JSP,JSP的特点、调用运行过程

 1.  JSP (java server page)      JSP 是服务器端运行的页面,JSP 本身就是一个文档,它不仅可以包含静态的 HTML 代码,也可以包含动态的 JAVA 代码,服务器容器可以将 JSP 转换成 Servlet 发布,并接受请求。 2 . JSP的特点:  (1)JSP 里面可以嵌入 JAVA 代码 (2)在运行的时候,J

meng090914的专栏 1741

JSP之JSP运行过程

对于JSP,可能有的人认为这已经是一个过时的技术,像PHP已经成为做Web项目的一个重要技术。但是我认为。在Java Web的开发过程中,jsp技术依然是一个非常重要的部分。所以今天我向大家介绍一下jsp的一些基本知识。   jsp的全名是Java server Page,所以它的运行与Java有着密不可分的关系。在第一次运行jsp文件的时候,他首先被翻译成为class文件,并把这个clas

RDan的博客 550

JSP文件的运行过程

JSP文件运行过程如下: 1)当一个jsp文件第一次被访问时,jsp引擎会将其转译为Java源文件(Servlet),在转译过程中如果发现jsp有任何语法错误,转译将中断,并向客户端和服务端输出错误信息。 注:这个jsp引擎本身也是一个Servlet。 2)如果转译成功,jsp引擎通过javac把Java源文件(Servlet)编译成相应的.class字节码文件。 3)执行class字节码...

weixin_42652696的博客 4347

JSP的运行原理和运行过程

JSP的运行原理和运行过程 JSP的运行原理 WEB容器JSP页面的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,它负责解释和执行JSP页面。 每个JSP页面在第一次被访问时,JSP引擎先将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器像调用普通Servl...

weixin_39979119的博客 419

JSP运行原理和翻译过程

JSP运行原理 理解:JSP本质上就是Servlet 3.JSP翻译过程

荒的博客 1202

深入了解 JSP 的运行过程

JSP(全称JavaServerPages)是由 Sun Microsystems 公司主导创建的一种==动态==网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成 HTML、XML 或其他格式文档的 Web 网页,然后返回给请求者。JSP 主要作用代替 Servlet 程序回传 HTML 页面的数据。接下来我们去看看 JSP 是如何实现代替 Servlet 的。

weixin_74412978的博客 1918

JSP运行过程

图解: 过程: 1、客户端发送Request请求。 2、服务器接收到请求后,加载相应的JSP文件。 3、JSP Container 将JSP转译成Servlet的源代码。 4、将产生的Servlet源代码编译成class文件,并加载到内存执行。 5、把执行结果响应到客户端。 <%@ page pageEncoding="UTF-8" %> <html> <head&...

qq_45744182的博客 780

JSP起源、JSP的运行原理、JSP的执行过程

JSP起源、JSP的运行原理、JSP的执行过程标签(空格分隔): JavaEE转自http://blog.youkuaiyun.com/fengdongkun/article/details/8159381JSP起源在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整

忘尘_追忆的专栏 711

JSP 编译和运行过程与JSP源码简单分析

JSP 编译和运行过程与JSP转移源码简单分析 Web容器处理JSP文件请求的执行过程主要包括以下4个部分: 1. 客户端发出Request请求 2. JSP Container 将JSP转译成Servlet的源代码 3. 将产生的Servlet源代码经过编译后,并加载到内存执行 4. 把结果Response(响应)至客户端 很多人...

SIMON 'S HOME 1152
上一篇: 【推荐】基于zookeeper简单实现分布式锁
下一篇: C++中的多态性(vptr和vtable)
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值