• 香蕉-热门标签-华商生活 2019-08-20
  • 更聪明、更可靠、更低价 广汽传祺全新GS4上市 2019-07-30
  • 社会主要矛盾的转化规律及其政策取向 2019-07-30
  • 为太原人才新政点赞! 2019-07-27
  • 坚定不移全面深化改革 2019-07-19
  • 全运有约:李冰洁谈个人参赛感受和训练生活 2019-07-19
  • 魏晨:与女友感情稳定 有结婚计划会第一时间公开 2019-07-17
  • 绍兴印染布质量比对成果发布 部分指标国际领先 2019-07-11
  • 陕西守艺人丨一场大火后,她带领600羌州绣娘从头开始 2019-07-11
  • 今日武汉中考考生可看考点考场 进行英语听力试听 2019-07-08
  • 中方坚决捍卫国家利益和人民利益 2019-07-08
  • "创造101"杨超越引争议 表演业余人气高别光怨选手 2019-07-07
  • 风水神话的回帖除了对我的攻击以外吗,别的还有什么吗? 2019-06-21
  • 通过学历教育、职业培训、在线学习等渠道 新区居民将享天津职教资源 2019-06-17
  • 千名新疆学子的梦想在鄱湖之滨启航 2019-06-13
  • 
      The Apache Tomcat Servlet/JSP Container

    福州十三水:Apache Tomcat 7

    Version 7.0.68, Feb 8 2016
    Apache Logo

    qq游戏里有十三水这个游戏吗 www.tdgb.net Links

    User Guide

    Reference

    Apache Tomcat Development

    Jasper 2 JSP Engine How To

    Table of Contents
    Introduction

    Tomcat 7.0 uses the Jasper 2 JSP Engine to implement the JavaServer Pages 2.2 specification.

    Jasper 2 has been redesigned to significantly improve performance over the original Jasper. In addition to general code improvements the following changes were made:

    • JSP Custom Tag Pooling - The java objects instantiated for JSP Custom Tags can now be pooled and reused. This significantly boosts the performance of JSP pages which use custom tags.
    • Background JSP compilation - If you make a change to a JSP page which had already been compiled Jasper 2 can recompile that page in the background. The previously compiled JSP page will still be available to serve requests. Once the new page has been compiled successfully it will replace the old page. This helps improve availability of your JSP pages on a production server.
    • Recompile JSP when included page changes - Jasper 2 can now detect when a page included at compile time from a JSP has changed and then recompile the parent JSP.
    • JDT used to compile JSP pages - The Eclipse JDT Java compiler is now used to perform JSP java source code compilation. This compiler loads source dependencies from the container classloader. Ant and javac can still be used.

    Jasper is implemented using the servlet class org.apache.jasper.servlet.JspServlet.

    Configuration

    By default Jasper is configured for use when doing web application development. See the section Production Configuration for information on configuring Jasper for use on a production Tomcat server.

    The servlet which implements Jasper is configured using init parameters in your global $CATALINA_BASE/conf/web.xml.

    • checkInterval - If development is false and checkInterval is greater than zero, background compiles are enabled. checkInterval is the time in seconds between checks to see if a JSP page (and its dependent files) needs to be recompiled. Default 0 seconds.
    • classdebuginfo - Should the class file be compiled with debugging information? true or false, default true.
    • classpath - Defines the class path to be used to compile the generated servlets. This parameter only has an effect if the ServletContext attribute org.apache.jasper.Constants.SERVLET_CLASSPATH is not set. This attribute is always set when Jasper is used within Tomcat. By default the classpath is created dynamically based on the current web application.
    • compiler - Which compiler Ant should use to compile JSP pages. The valid values for this are the same as for the compiler attribute of Ant's javac task. If the value is not set, then the default Eclipse JDT Java compiler will be used instead of using Ant. There is no default value. If this attribute is set then setenv.[sh|bat] should be used to add ant.jar, ant-launcher.jar and tools.jar to the CLASSPATH environment variable.
    • compilerSourceVM - What JDK version are the source files compatible with? (Default value: 1.6)
    • compilerTargetVM - What JDK version are the generated files compatible with? (Default value: 1.6)
    • development - Is Jasper used in development mode? If true, the frequency at which JSPs are checked for modification may be specified via the modificationTestInterval parameter.true or false, default true.
    • displaySourceFragment - Should a source fragment be included in exception messages? true or false, default true.
    • dumpSmap - Should the SMAP info for JSR45 debugging be dumped to a file? true or false, default false. false if suppressSmap is true.
    • enablePooling - Determines whether tag handler pooling is enabled. This is a compilation option. It will not alter the behaviour of JSPs that have already been compiled. true or false, default true.
    • engineOptionsClass - Allows specifying the Options class used to configure Jasper. If not present, the default EmbeddedServletOptions will be used.
    • errorOnUseBeanInvalidClassAttribute - Should Jasper issue an error when the value of the class attribute in an useBean action is not a valid bean class? true or false, default true.
    • fork - Have Ant fork JSP page compiles so they are performed in a separate JVM from Tomcat? true or false, default true.
    • genStringAsCharArray - Should text strings be generated as char arrays, to improve performance in some cases? Default false.
    • ieClassId - The class-id value to be sent to Internet Explorer when using <jsp:plugin> tags. Default clsid:8AD9C840-044E-11D1-B3E9-00805F499D93.
    • javaEncoding - Java file encoding to use for generating java source files. Default UTF8.
    • keepgenerated - Should we keep the generated Java source code for each page instead of deleting it? true or false, default true.
    • mappedfile - Should we generate static content with one print statement per input line, to ease debugging? true or false, default true.
    • maxLoadedJsps - The maximum number of JSPs that will be loaded for a web application. If more than this number of JSPs are loaded, the least recently used JSPs will be unloaded so that the number of JSPs loaded at any one time does not exceed this limit. A value of zero or less indicates no limit. Default -1
    • jspIdleTimeout - The amount of time in seconds a JSP can be idle before it is unloaded. A value of zero or less indicates never unload. Default -1
    • modificationTestInterval - Causes a JSP (and its dependent files) to not be checked for modification during the specified time interval (in seconds) from the last time the JSP was checked for modification. A value of 0 will cause the JSP to be checked on every access. Used in development mode only. Default is 4 seconds.
    • recompileOnFail - If a JSP compilation fails should the modificationTestInterval be ignored and the next access trigger a re-compilation attempt? Used in development mode only and is disabled by default as compilation may be expensive and could lead to excessive resource usage.
    • scratchdir - What scratch directory should we use when compiling JSP pages? Default is the work directory for the current web application.
    • suppressSmap - Should the generation of SMAP info for JSR45 debugging be suppressed? true or false, default false.
    • trimSpaces - Should white spaces in template text between actions or directives be trimmed ?, default false.
    • xpoweredBy - Determines whether X-Powered-By response header is added by generated servlet. true or false, default false.
    • quoteAttributeEL - When EL is used in an attribute value on a JSP page, should the rules for quoting of attributes described in JSP.1.6 be applied to the expression? true or false, default true.

    The Java compiler from Eclipse JDT in included as the default compiler. It is an advanced Java compiler which will load all dependencies from the Tomcat class loader, which will help tremendously when compiling on large installations with tens of JARs. On fast servers, this will allow sub-second recompilation cycles for even large JSP pages.

    Apache Ant, which was used in previous Tomcat releases, can be used instead of the new compiler by configuring the compiler attribute as explained above.

    Known issues

    As described in bug 39089, a known JVM issue, bug 6294277, may cause a java.lang.InternalError: name is too long to represent exception when compiling very large JSPs. If this is observed then it may be worked around by using one of the following:

    • reduce the size of the JSP
    • disable SMAP generation and JSR-045 support by setting suppressSmap to true.
    Production Configuration

    The main JSP optimization which can be done is precompilation of JSPs. However, this might not be possible (for example, when using the jsp-property-group feature) or practical, in which case the configuration of the Jasper servlet becomes critical.

    When using Jasper 2 in a production Tomcat server you should consider making the following changes from the default configuration.

    • development - To disable on access checks for JSP pages compilation set this to false.
    • genStringAsCharArray - To generate slightly more efficient char arrays, set this to true.
    • modificationTestInterval - If development has to be set to true for any reason (such as dynamic generation of JSPs), setting this to a high value will improve performance a lot.
    • trimSpaces - To remove useless bytes from the response, set this to true.
    Web Application Compilation

    Using Ant is the preferred way to compile web applications using JSPC. Note that when pre-compiling JSPs, SMAP information will only be included in the final classes if suppressSmap is false and compile is true. Use the script given below (a similar script is included in the "deployer" download) to precompile a webapp:

    <project name="Webapp Precompilation" default="all" basedir=".">
    
       <import file="${tomcat.home}/bin/catalina-tasks.xml"/>
    
       <target name="jspc">
    
        <jasper
                 validateXml="false"
                 uriroot="${webapp.path}"
                 webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"
                 outputDir="${webapp.path}/WEB-INF/src" />
    
      </target>
    
      <target name="compile">
    
        <mkdir dir="${webapp.path}/WEB-INF/classes"/>
        <mkdir dir="${webapp.path}/WEB-INF/lib"/>
    
        <javac destdir="${webapp.path}/WEB-INF/classes"
               optimize="off"
               debug="on" failonerror="false"
               srcdir="${webapp.path}/WEB-INF/src"
               excludes="**/*.smap">
          <classpath>
            <pathelement location="${webapp.path}/WEB-INF/classes"/>
            <fileset dir="${webapp.path}/WEB-INF/lib">
              <include name="*.jar"/>
            </fileset>
            <pathelement location="${tomcat.home}/lib"/>
            <fileset dir="${tomcat.home}/lib">
              <include name="*.jar"/>
            </fileset>
            <fileset dir="${tomcat.home}/bin">
              <include name="*.jar"/>
            </fileset>
          </classpath>
          <include name="**" />
          <exclude name="tags/**" />
        </javac>
    
      </target>
    
      <target name="all" depends="jspc,compile">
      </target>
    
      <target name="cleanup">
        <delete>
            <fileset dir="${webapp.path}/WEB-INF/src"/>
            <fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/>
        </delete>
      </target>
    
    </project>

    The following command line can be used to run the script (replacing the tokens with the Tomcat base path and the path to the webapp which should be precompiled):

    $ANT_HOME/bin/ant -Dtomcat.home=<$TOMCAT_HOME> -Dwebapp.path=<$WEBAPP_PATH>

    Then, the declarations and mappings for the servlets which were generated during the precompilation must be added to the web application deployment descriptor. Insert the ${webapp.path}/WEB-INF/generated_web.xml at the right place inside the ${webapp.path}/WEB-INF/web.xml file. Restart the web application (using the manager) and test it to verify it is running fine with precompiled servlets. An appropriate token placed in the web application deployment descriptor may also be used to automatically insert the generated servlet declarations and mappings using Ant filtering capabilities. This is actually how all the webapps distributed with Tomcat are automatically compiled as part of the build process.

    At the jasper task you can use the option addWebXmlMappings for automatic merge the ${webapp.path}/WEB-INF/generated_web.xml with the current web application deployment descriptor at ${webapp.path}/WEB-INF/web.xml. When you want to use Java 6 features inside your jsp's, add the following javac compiler task attributes: source="1.6" target="1.6". For live applications you can also compile with optimize="on" and without debug info debug="off".

    When you don't want to stop the jsp generation at first jsp syntax error, use failOnError="false"and with showSuccess="true" all successful jsp to java generation are printed out. Sometimes it is very helpful, when you cleanup the generate java source files at ${webapp.path}/WEB-INF/src and the compile jsp servlet classes at ${webapp.path}/WEB-INF/classes/org/apache/jsp.

    Hints:

    • When you switch to another Tomcat release, then regenerate and recompile your jsp's with the new Tomcat version.
    • Use java system property at server runtime to disable PageContext pooling org.apache.jasper.runtime.JspFactoryImpl.USE_POOL=false. and limit the buffering with org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true. Note that changing from the defaults may affect performance, but it will vary depending on the application.
    Optimisation

    There are a number of extension points provided within Jasper that enable the user to optimise the behaviour for their environment.

    The first of these extension points is the tag plug-in mechanism. This allows alternative implementations of tag handlers to be provided for a web application to use. Tag plug-ins are registered via a tagPlugins.xml file located under WEB-INF. A sample plug-in for the JSTL is included with Jasper.

    The second extension point is the Expression Language interpreter. Alternative interpreters may be configured through the ServletContext. See the ELInterpreterFactory javadoc for details of how to configure an alternative EL interpreter.

    Comments

    Notice: This comments section collects your suggestions on improving documentation for Apache Tomcat.

    If you have trouble and need help, read Find Help page and ask your question on the tomcat-users qq游戏里有十三水这个游戏吗. Do not ask such questions here. This is not a Q&A section.

    The Apache Comments System is explained here. Comments may be removed by our moderators if they are either implemented or considered invalid/off-topic.


    Copyright © 1999-2016, Apache Software Foundation
  • 香蕉-热门标签-华商生活 2019-08-20
  • 更聪明、更可靠、更低价 广汽传祺全新GS4上市 2019-07-30
  • 社会主要矛盾的转化规律及其政策取向 2019-07-30
  • 为太原人才新政点赞! 2019-07-27
  • 坚定不移全面深化改革 2019-07-19
  • 全运有约:李冰洁谈个人参赛感受和训练生活 2019-07-19
  • 魏晨:与女友感情稳定 有结婚计划会第一时间公开 2019-07-17
  • 绍兴印染布质量比对成果发布 部分指标国际领先 2019-07-11
  • 陕西守艺人丨一场大火后,她带领600羌州绣娘从头开始 2019-07-11
  • 今日武汉中考考生可看考点考场 进行英语听力试听 2019-07-08
  • 中方坚决捍卫国家利益和人民利益 2019-07-08
  • "创造101"杨超越引争议 表演业余人气高别光怨选手 2019-07-07
  • 风水神话的回帖除了对我的攻击以外吗,别的还有什么吗? 2019-06-21
  • 通过学历教育、职业培训、在线学习等渠道 新区居民将享天津职教资源 2019-06-17
  • 千名新疆学子的梦想在鄱湖之滨启航 2019-06-13
  • 平特高手坛网址 pk10五码两期全天计划 江苏11选五走势图定牛 河南481下载 中国福彩开奖查询北京十一选五 玩扑克吹牛皮技巧 北京快乐8网站 斯诺克北京公开赛决赛 08年2月福彩号码 炫舞牛牛 九龙王心水论坛 大世界娱乐城反水 彩票投注倍投方法 必中一肖四不像图片 宁夏11选五走势图