黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Jetty:配置JSP支持

系統(tǒng) 2057 0

選擇JSP實(shí)現(xiàn)

從Jetty-9.2開始,使用Apache Jasper作為默認(rèn)JSP容器實(shí)現(xiàn)。在前面的版本號(hào)中使用的是Glassfish Jasper,在后面的版本號(hào)中也能夠繼續(xù)使用它。
Jetty公布默認(rèn)激活jsp模塊,默認(rèn),模塊設(shè)置到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容器實(shí)現(xiàn)。也注意你不能預(yù)編譯一種容器的jsp,而部署還有一個(gè)。

預(yù)編譯

你能依照你選擇的JSP容器(Glassfish或者Apache)提供的指導(dǎo)手冊(cè)預(yù)編譯jsp。或者假設(shè)你選擇使用maven,你能用jetty-jspc-maven插件為你做。
假設(shè)你預(yù)編譯你的jsp,而且自己定義了輸出包前綴(默認(rèn)是org.apache.jsp),你應(yīng)該配置你的webapp上下文告訴Jetty關(guān)于你的自己定義報(bào)名。你能使用servlet上下文的初始化參數(shù)org.eclipse.jetty.servlet.jspPackagePrefix做這。
比如,假定你預(yù)編譯你的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

執(zhí)行時(shí)編譯JSP

依據(jù)你選擇的不同的JSP容器,配置項(xiàng)和編譯特性將是不同的。

Apache JSP容器

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

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

?

Glassfish JSP容器

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

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

或者為了嵌入的使用,只定義這作為一個(gè)通常的系統(tǒng)屬性。

配置

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

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

?

?

?

?

通常存在非常多困惑在關(guān)于development、checkInterval和modificationTestInterval參數(shù),和JSP執(zhí)行時(shí)重編譯。這里是分解出的各種選項(xiàng):

1)對(duì)每一個(gè)請(qǐng)求檢查JSP文件重編譯

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

2)大約每N秒檢查一次,通過(guò)請(qǐng)求觸發(fā)定時(shí)的計(jì)算。以下是每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)不做檢查,但在第一次使用時(shí)編譯JSP。(注意“reload-interval”參數(shù)相當(dāng)于“development=false”和“checkInterval=0”組合的簡(jiǎn)寫):

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

4)不做不論什么請(qǐng)求時(shí)檢查,但啟動(dòng)一個(gè)后臺(tái)線程運(yùn)行每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>
    

改動(dòng)配置

不考慮你正在使用哪一個(gè)JSP容器,有幾個(gè)選項(xiàng)用于改動(dòng)JspServlet配置。

重載webdefault.xml

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

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

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

      <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>
    

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

在web.xml中配置JSP Servlet

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

      <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標(biāo)簽庫(kù)

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

用JSF標(biāo)簽庫(kù)

以下提供關(guān)于使用JSF標(biāo)簽庫(kù)的信息。

在Jetty公布中使用JSF標(biāo)簽庫(kù)

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

用Jetty Maven插件使用JSF標(biāo)簽庫(kù)

你應(yīng)該使你的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支持


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論