本文目錄一覽:
jsp的執行過程是怎樣的
JSP的執行過程
JSP的執行過程主要可以分為以下幾點:
客戶端發出請求。
Web容器將JSP轉譯成Servlet源代碼。
Web容器將產生的源代碼進行編譯。
Web容器加載編譯後的代碼並執行。
把執行結果響應至客戶端。
過程介紹
客戶端發出請求,請求為JSP,web容器就會找出相應的servlet進行處理。
將servlet轉成字節碼文件。
將字節碼文件加載到web容器里。
這時會在web容器里建立實例。
進行初始化。
通過service接受請求。
然後web容器會自動產生兩個對象servlet和service最後進行銷毀。
擴展資料:
JSP的運行原理
WEB容器(Servlet引擎)接收到以。jsp為擴展名的URL的訪問請求時,它將把該訪問請求交給JSP引擎去處理。Tomcat中的JSP引擎就是一個Servlet程序,它負責解釋和執行JSP頁面。
每個JSP頁面在第一次被訪問時,JSP引擎將它翻譯成一個Servlet源程序,接着再把這個Servlet源程序編譯成Servlet的class類文件,然後再由WEB容器(Servlet引擎)像調用普通Servlet程序一樣的方式來裝載和解釋執行這個由JSP頁面翻譯成的Servlet程序。
Tomcat 5.x把為JSP頁面創建的Servlet源文件和class類文件放置在“lt;TOMCAT_HOMEgt;\work\Catalina\lt;主機名gt;\lt;應用程序名gt;\”目錄中,
Tomcat將JSP頁面翻譯成的Servlet的包名為org.apache.jsp.lt;JSP頁面在WEB應用程序內的目錄名gt;。
JSP規範也沒有明確要求JSP中的腳本程序代碼必須採用Java語言,JSP中的腳本程序代碼可以採用Java語言之外的其他腳本語言來編寫,但是,JSP頁面最終必須轉換成Java Servlet程序。
可以在WEB應用程序正式發布之前,將其中的所有JSP頁面預先編譯成Servlet程序。
參考資料:
百度百科——JSP(java服務器頁面)
多線程寫的計時器,如何在JSP里獲取啊
通過bean標籤導入
jsp:useBean id=”jsq” class=”計算器的包路徑”/jsp:useBean
%
jsp.xx();//調用你的計算器方法
%
jsp頁面線程安全嗎
一般都是不安全的,你可以加isThreadSafe來讓他安全些:
%@ page language=”java” import=”java.util.*” pageEncoding=”GBK” isThreadSafe=”true”%
——————————————————————————
JSP默認是以多線程方式執行的,這是JSP與ASP,PHP,PERL等腳本語言不一樣的地方,也是它的優勢之一,但如果不注意多線程中的同步問題,會使所寫的JSP程序有難以發現的錯誤。下面以一個例子說明JSP中的多線程問題及解決方法。
一、JSP的中存在的多線程問題:
當客戶端第一次請求某一個JSP文件時,服務端把該JSP編譯成一個CLASS文件,並創建一個該類的實例,然後創建一個線程處理CLIENT端的請求。如果有多個客戶端同時請求該JSP文件,則服務端會創建多個線程。每個客戶端請求對應一個線程。以多線程方式執行可大大降低對系統的資源需求,提高系統的並發量及響應時間.對JSP中可能用的的變量說明如下:
1.實例變量
實例變量是在堆中分配的,並被屬於該實例的所有線程共享,所以不是線程安全的.
2.JSP系統提供的8個類變量
JSP中用到的OUT,REQUEST,RESPONSE,SESSION,CONFIG,PAGE,PAGECONXT是線程安全的,APPLICATION在整個系統內被使用,所以不是線程安全的.
3.局部變量
局部變量在堆棧中分配,因為每個線程都有它自己的堆棧空間,所以是線程安全的.
4.靜態類
靜態類不用被實例化,就可直接使用,也不是線程安全的.
5.外部資源:
在程序中可能會有多個線程或進程同時操作同一個資源(如:多個線程或進程同時對一個文件進行寫操作).此時也要注意同步問題.
–摘自教程網:《編寫線程安全的JSP程序》(徐春金)
JSP運行原理什麼
1、當用戶訪問一個JSP頁面時,會向一個Servlet容器(Tomcat等)發出請求;
2、如果頁面有所改動,則servlet容器首先要把JSP頁面(假設為test.jsp)轉化為Servlet代碼(test.java),再將其轉化為class文件(test.class文件);這種過程(編譯)會耗費時間
3、JSP容器負責調用從JSP轉換來的servlet,這些servlet負責提供服務相應用戶請求;如果用戶有多個請求,則容器會建立多個線程處理多個請求;
4、容器執行字節碼文件(包括調用的servlet:formprocessor.java字節碼),並將其結果返回到客戶端(返回的最終方式是有servlet輸出html格式的文件流)。
擴展資料:
語言優點:
1、一次編寫,到處運行。除了系統之外,代碼不用做任何更改。
2、系統的多平台支持。基本上可以在所有平台上的任意環境中開發,在任意環境中進行系統部署,在任意環境中擴展。相比ASP的局限性JSP的優勢是顯而易見的。
3、強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多台服務器進行集群和負載均衡,到多台Application進行事務處理,消息處理,一台服務器到無數台服務器,Java顯示了一個巨大的生命力。
4、多樣化和功能強大的開發工具支持。這一點與ASP很像,Java已經有了許多非常優秀的開發工具,而且許多可以免費得到,並且其中許多已經可以順利的運行於多種平台之下。
5、支持服務器端組件。web應用需要強大的服務器端組件來支持,開發人員需要利用其他工具設計實現複雜功能的組件供web頁面調用,以增強系統性能。JSP可以使用成熟的JAVA BEANS 組件來實現複雜商務功能。
參考資料來源:百度百科–JSP
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”);
}
%
原創文章,作者:UOGMG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315918.html