本文目录一览:
对Web服务器中的JSP的访问主要过程是如何的
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
他会解析后再呈现为HTML格式。(包括JS、EL表达式、自定义标签、引用CSS、JS等)
web服务器怎样处理jsp
具体是这样的:
JSP页面会在第一次被请求的时候,被web container 翻译成servlet,编译成字节码,最后处理成html传回客户端(浏览器端),浏览器进而对此html进行render,这就是客户就可看到东西。
JSP如果修改了,之后对此JSP的访问还会被web container进行翻译及编译的工作,但是如果JSP没有修改,将不会被web container重新翻译及编译,以此来提高jsp对客户端的响应速度。
JSP页面是在web服务器上运行吗?
是的,JSP页面显示转译成servlet,然后再编译成字节码文件(*.class),最后在java虚拟机上运行,而转译靠的是web服务器.
第一次访问JSP是比较慢的,就是因为jsp页面先要转译成servlet,再编译成class文件,最后虚拟机运行,而 第二次访问同一jsp页面就比较快了,省略了转译和编译的过程,上一次编译好的class文件直接在虚拟机上运行就可以了.
jsp的工作原理
JSP工作原理 JSP
在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。 jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。
%!
public void jspInit()
{
System.out.println("jspinit");
}
%
%!
public void jspDestory()
{
System.out.println("jspDestory");
}
%
jsp在Web服务器上的运行过程是什么
以jsp为例吧。
用户向web服务器以HTTP请求的形式请求资源。HTTP请求中有几个重要的参数,一个是请求方法GET还是POST还是其它,请求的URL是Sample.jsp。
服务器得到这些请求后对参数进行分析,如/Sample.jsp的URL请求,这个请求一般会映射一个jsp页面或servlet,服务器会把浏览器的HTTP请求打包提供给index.jsp来运行(注意,jsp最终会被编译为可运行的类文件,它的任务是说明向浏览器发送什么数据)
jsp或servlet运行的结果就是向浏览器回送一次HTTP回应,这个回应也包括一些参数和最后的正文,正文的内容就是html语言了。浏览器对html进行解释,html正文里还有一些资源如如img src="..." /,浏览器会再一次对服务器进行请求,不过对于图片这些静态内容,服务器是会直接返回的(不会经过jsp或servlet的)
一次完整的动态web交互就完成了 :HTTP请求-》服务器处理-》HTTP回应
如果觉得这个是那么回事就给点分撒,呵呵