亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Jetty:配置JSP支持

系統 1643 0

選擇JSP實現

從Jetty-9.2開始,使用Apache Jasper作為默認JSP容器實現。在前面的版本號中使用的是Glassfish Jasper,在后面的版本號中也能夠繼續使用它。
Jetty公布默認激活jsp模塊,默認,模塊設置到Apache Jasper。為了改為使用Glassfish Jasper,編輯$JETTY_HOME/start.d/jsp.mod,改變以下的行:

      #
# Jetty JSP Module
#
 
[depend]
servlet
jsp-impl/${jsp-impl}-jsp
 
[ini-template]
# JSP Configuration
 
# Select JSP implementation, choices are
#   glassfish : The reference implementation 
#               default in jetty <= 9.1
#   apache    : The apache version 
#               default jetty >= 9.2
jsp-impl=apache
 
# To use a non-jdk compiler for JSP compilation when using glassfish uncomment next line
# -Dorg.apache.jasper.compiler.disablejsr199=true
    

注意一些JSP的特征是否能使用依賴于你選擇的JSP容器實現。也注意你不能預編譯一種容器的jsp,而部署還有一個。

預編譯

你能依照你選擇的JSP容器(Glassfish或者Apache)提供的指導手冊預編譯jsp。或者假設你選擇使用maven,你能用jetty-jspc-maven插件為你做。
假設你預編譯你的jsp,而且自己定義了輸出包前綴(默認是org.apache.jsp),你應該配置你的webapp上下文告訴Jetty關于你的自己定義報名。你能使用servlet上下文的初始化參數org.eclipse.jetty.servlet.jspPackagePrefix做這。
比如,假定你預編譯你的jsp,使用自己定義包前綴com.acme,那么你將在web.xml中添加:

      <context-param>
  <param-name>org.eclipse.jetty.servlet.jspPackagePrefix</param-name>
  <param-value>com.acme</param-value>
</context-param>
    

注意:Jetty的maven插件jetty-jspc-maven-plugin和jetty-maven-plugin都僅僅能用Apache Jasper

執行時編譯JSP

依據你選擇的不同的JSP容器,配置項和編譯特性將是不同的。

Apache JSP容器

默認,Apache JSP容器將查找Eclipse Java Compiler(jdt)。jetty公布自帶了一個在$JETTY_HOME/lib/apache-jsp。假設你希望用不同的編譯器,你將須要配置compilerClassName初始參數在JspServlet,并帶上類名。
下表是Apache JspServlet的參數介紹:

理解Apache JspServlet參數
初始參數 描寫敘述 默認值 webdefault.xml
classpath 用于jsp編譯的Classpath。僅僅有在jetty中的org.apache.catalina.jsp_classpath上下文屬性不被設置時才使用。 - -
classdebuginfo 在class文件里包含debugging信息 TRUE -
checkInterval 后臺重編譯檢查的間隔,單位秒。僅僅有development=false才使用。 0 -
development development=true時,每一個請求都做重編譯檢查。看modificationTestInterval TRUE -
displaySourceFragment 是否將源代碼片段包括在異常信息中 TRUE -
errorOnUseBeanInvalidClassAttribute 當在一個useBean行為中class屬性的值不是一個有效的bean類時,是否產生一個error TRUE -
fork Ant應該fork它的JSP頁的Java編譯嗎? TRUE FALSE
keepgenerated 你想保留生成的Java文件嗎? TRUE -
trimSpaces 指令和行為間的空格應該被裁剪嗎? FALSE -
enablePooling 確定標簽處理器池是否被激活 TRUE -
engineOptionsClass 同意指定的Options類用于配置Jasper。否則,默認的EmbeddedServletOptions將被使用 - -
mappedFile 支持mapped Files。產生一個servlet,有一個打印申明JSP文件的每一行 TRUE -
suppressSmap 為JSR45調試的SMAP信息的產生 FALSE -
dumpSmap 轉儲SMAP JSR45信息到一個文件 FALSE -
genStrAsCharArray 為產生Strings的選項 FALSE -
ieClassId 當使用<jsp:plugin>標簽時,class-id值被送到Internet Explorer? clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 -
maxLoadedJsps 一個web應用能載入的JSP的最大值。假設超過了這個值,近期最少使用那個的JSP將被卸載。0或者負值表示沒有限制。 -1 -
jspIdleTimeout 一個JSP被卸載前空暇的最大時間,單位秒。0或者負值表示永不卸載。 -1 -
scratchDir servlet被生成的目錄 - -
compilerClassName 假設不設置,默認是Eclipse jdt編譯器。 - -
compiler 假設Eclipse jdt編譯器在classpath中不能找到時使用。它是Ant應該調用的編譯器的類名。 - -
compilerTargetVM 編譯器期望的目標vm。 1.7 -
compilerSourceVM 為jdt編譯器設置源兼容性級別。 1.7 -
javaEncoding 編譯使用編碼方式。 UTF8 ?
modificationTestInterval 假設development=true,重編譯檢查的間隔,通過一個請求觸發。 4 -
xpoweredBy 產生一個X-Powered-By響應頭。 FALSE FALSE
recompileOnFail 假設一個JSP編譯失敗,modificationTestInterval應該被忽略而且觸發下一個重編譯嘗試嗎?僅僅用在開發模式,默認被停止,由于編譯可能代價較高導致過多的資源被用。 - -

?

Glassfish JSP容器

為了編譯.jsp文件進入Java classes,你須要一個Java編譯器。假設你正在使用一個完整的JDK,你能從JVM得到Java編譯器,否則,你能夠從一個第三方Jar。
默認Glassfish JSP容器嘗試用JDK的編譯器。注意:當用JDK編譯器時,系統不保存你的class文件到磁盤,除非你用saveBytecode初始化參數,將在以下描寫敘述。
假設你不有完整的JDK,你能配置Eclipse Java Compiler,在Jetty的$JETTY_HOME/lib/jsp/目錄下。你須要定義一個系統屬性,防止Glassfish JSP引擎默認使用JVM中的編譯器。
當使用獨立的標準版時,最好的方式是使用未凝視的系統屬性org.apache.jasper.compiler.disablejsr199,在jsp module中:

      -Dorg.apache.jasper.compiler.disablejsr199=true
    

或者為了嵌入的使用,只定義這作為一個通常的系統屬性。

配置

JSP引擎有一些配置參數。一些參數僅影響預編譯,而一些影響執行時預編譯檢查。在不同版本號的JSP引擎間參數也有不同。以下列出了配置參數、他們的含義和他們的默認設置。全部參數都在webdefault.xml的org.apache.jasper.JspServlet實例中定義:

理解Glassfish JSP參數
初始參數 描寫敘述 默認值 webdefault.xml
development development=true,重編譯檢查在每一個請求時都運行。看modificationTestInterval。 TRUE -
fork Ant應該fork它的JSP頁的Java編譯? TRUE FALSE
keepgenerated 你想保留產生的Java文件? FALSE -
saveBytecode 假設class文件作為byte arrays被產生,他們在編譯結束時應該被保存到磁盤嗎? FALSE -
trimSpaces 在指令和行為之間的空白應該被裁剪嗎? FALSE -
enablePooling 確定標簽處理器池是否被激活。 TRUE -
mappedFile 支持mapped Files。產生一個servlet,有一個打印申明JSP文件的每一行 TRUE -
sendErrorToClient 假設false,棧軌跡,等,被送到標準錯誤取代client的瀏覽器。 FALSE -
classdebuginfo 在class文件里包含debugging信息。 TRUE -
checkInterval 后臺重編譯檢查的間隔,單位秒。僅僅有development=false才使用。 0 -
suppressSmap 為JSR45調試的SMAP信息的產生 FALSE -
dumpSmap 轉儲SMAP JSR45信息到一個文件 FALSE -
genStrAsCharArray 為產生Strings的選項 FALSE -
genStrAsByteArray 為產生Strings的選項 TRUE -
defaultBufferNone - FALSE -
errorOnUseBeanInvalidClassAttribute - FALSE -
scratchDir servlet被生成的目錄。Jetty設置這個值依據為webapp設置的[/display/JETTY/Temporary+Directories work dir] - -
compiler 在執行時確定。對Jetty來說是Eclipse jdt compiler。 - -
compilerTargetVM 編譯器期望的目標vm。 1.5 -
compilerSourceVM 為jdt編譯器設置源兼容性級別。 1.5 -
javaEncoding 編譯使用編碼方式。 UTF8 -
modificationTestInterval 假設development=true,重編譯檢查的間隔,通過一個請求觸發。 0 -
xpoweredBy 產生一個X-Powered-By響應頭。 FALSE FALSE
usePrecompiled/use-precompiled - FALSE -
validating/enableTldValidation 是否依據模式(schema)驗證標簽文件。 FALSE -
reload-interval 假設reload-interval=0,則不做JSP的執行時檢查,否則設置檢查間隔,無論development=true還是development=false。 - -
initial-capacity/initialCapacity 映射JSP到class和JSP文件的哈希映射表的初始容量 - -

?

?

?

?

通常存在非常多困惑在關于development、checkInterval和modificationTestInterval參數,和JSP執行時重編譯。這里是分解出的各種選項:

1)對每一個請求檢查JSP文件重編譯

      <init-param>
        <param-name>development></param-name>
        <param-value>true></param-value>
</init-param>
    

2)大約每N秒檢查一次,通過請求觸發定時的計算。以下是每60秒檢查:

      <init-param>
        <param-name>development></param-name>
        <param-value>true></param-value>
</init-param>
<init-param>
        <param-name>modificationTestInterval></param-name>
        <param-value>60></param-value>
</init-param>
    

3)不做檢查,但在第一次使用時編譯JSP。(注意“reload-interval”參數相當于“development=false”和“checkInterval=0”組合的簡寫):

      <init-param>
        <param-name>reload-interval></param->
        <param-value>-1></param-value>
</init-param>
    

4)不做不論什么請求時檢查,但啟動一個后臺線程運行每N秒檢查一次。以下的樣例每60秒檢查一次:

      <init-param>
        <param-name>development></param-name>
        <param-value>false></param-value>
 </init-param>
 <init-param>
         <param-name>checkInterval></param-name>
         <param-value>60></param-value>
</init-param>
    

改動配置

不考慮你正在使用哪一個JSP容器,有幾個選項用于改動JspServlet配置。

重載webdefault.xml

你能拷貝Jetty自帶的$JETTY_HOME/etc/webdefault.xml,改動,然后用它取代自帶的版本號。以下展示怎樣使用Jetty Maven插件達到這個目地:

      <plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <configuration>
    <webApp>
      <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
    </webApp>
</plugin>
    

假設你正在使用Jetty發行版,你想改變JSP設置為一個或者多個你的webapp,拷貝$JETTY_HOME/etc/webdefault.xml文件到某個地方,改動,然后用context xml文件設置這個文件為你的webapp的defaultsDescriptor。以下是一個樣例:

      <Configure class=>"org.eclipse.jetty.webapp.WebAppContext">
 
  <Set name=>"contextPath">/foo</Set>
  <Set name=>"war"><SystemProperty name=>"jetty.home" >default=>"."/>/webapps/foobar.war</Set>
  <Set name=>"defaultsDescriptor">/home/smith/dev/webdefault.xml</Set>
  
</Configure>
    

假設你想改變JSP設置為全部webapp,直接編輯$JETTY_HOME/etc/webdefaults.xml就可以。

在web.xml中配置JSP Servlet

還有一個選擇是在你的webapp的WEB-INF/web.xml中為JSPServlet添加一個條目,改變或者添加初始化參數。你也能夠添加(但不移除)servlet-mappings。你能用在$JETTY_HOME/etc/webdefault.xml中的條目作為一個起始點。

      <servlet id=>"jsp">
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>logVerbosityLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>
    <init-param>
        <param-name>fork</param-name>
        <param-value>>false</param-value>
    </init-param>
    <init-param>
        <param-name>keepgenerated</param-name>
        <param-value>>true</param-value>
    </init-param>
    ...
     
    <load-on-startup>0</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspf</url-pattern>
    <url-pattern>*.jspx</url-pattern>
    <url-pattern>*.xsp</url-pattern>
    <url-pattern>*.JSP</url-pattern>
    <url-pattern>*.JSPF</url-pattern>
    <url-pattern>*.JSPX</url-pattern>
    <url-pattern>*.XSP</url-pattern>
  </servlet-mapping>
   
  <servlet id=>"my-servlet">
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.acme.servlet.MyServlet</servlet-class>
     ...
    

用JSTL標簽庫

JavaServer Pages Standlard Tag Library(JSTL)是Jetty公布版本號的一部分(在$JETTY_HOME/lib/jsp)中。

用JSF標簽庫

以下提供關于使用JSF標簽庫的信息。

在Jetty公布中使用JSF標簽庫

假設你想在你的webapp中使用JSF,你須要拷貝JSF實現Jar(你選擇的JSF實現中包括META-INF/*.tld文件的jar)進入Jetty的共享容器庫目錄。你能放他們到lib目錄匹配你選擇的JSP容器(或者Glassfish JSP的$JETTY_HOME/lib/jsp,或者Apache JSP的$JETTY_HOME/lib/apache-jsp),或者放它們進入$JETTY_HOME/lib/ext。

用Jetty Maven插件使用JSF標簽庫

你應該使你的JSF Jar依賴插件,而不是webapp自身。比如:

      <plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <configuration>
     <webApp>
       <contextPath>/${artifactId}</contextPath>
     </webApp>
     <scanIntervalSeconds>5</scanIntervalSeconds>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-api</artifactId>
      <version>2.0.8</version>
    </dependency>
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-impl</artifactId>
      <version>2.0.8</version>
   </dependency>
  </dependencies>
</plugin>
    

?

Jetty:配置JSP支持


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文在线观看视频 | 18禁片一级毛片视频播放免费看 | 日韩精品福利视频一区二区三区 | 毛片 mp4| 亚洲国产成人精品一区二区三区 | 婷婷综合五月中文字幕欧美 | 激情亚洲综合网 | 91粉嫩萝控精品福利网站 | 精品国产一区二区二三区在线观看 | 久热99这里只有精品视频6 | 精品色| 神马不卡 | 中文字幕亚洲一区二区三区 | 久久艹精品 | 91精品国产综合久久欧美 | 日韩毛片基地一区二区三区 | 真人实干一级毛片aa免费 | 久久99精品久久久久久园产越南 | 一区在线看 | 四虎国产视频 | 中文字幕一区二区三区有限公司 | 毛片基地免费视频a | aaa级精品久久久国产片 | 俄罗斯一级毛片免费播放 | 呦女亚洲一区精品 | 五月婷婷在线视频 | 久久久久久久久国产 | 天天草综合| 成人免费aa在线观看 | 亚洲欧美色综合一区二区在线 | 97久草 | 国产精品亚洲综合一区在线观看 | 精品国产三级v | 一本大道高清香蕉中文大在线 | 在线观看免费情网站大全 | 九九热视频免费观看 | 美国毛片免费观看 | 婷婷在线观看网站 | 色综合小说天天综合网 | 欧美日韩亚洲国产精品 | 国产视频最新 |