Tomcat启动进行默认初始化
org.apache.catalina.startup.Tomcat; public static void initWebappDefaults(Context ctx) { // Default servlet Wrapper servlet = addServlet( ctx, "default", "org.apache.catalina.servlets.DefaultServlet"); servlet.setLoadOnStartup(1); // JSP servlet (by class name - to avoid loading all deps) //添加jsp映射的Servlet servlet = addServlet( ctx, "jsp", "org.apache.jasper.servlet.JspServlet"); servlet.addInitParameter("fork", "false"); servlet.setLoadOnStartup(3); // Servlet mappings ctx.addServletMapping("/", "default"); ctx.addServletMapping("*.jsp", "jsp"); ctx.addServletMapping("*.jspx", "jsp"); // Sessions //设置session管理器 ctx.setManager( new StandardManager()); ctx.setSessionTimeout(30); // MIME mappings for (int i = 0; i < DEFAULT_MIME_MAPPINGS.length;) { ctx.addMimeMapping(DEFAULT_MIME_MAPPINGS[i++], DEFAULT_MIME_MAPPINGS[i++]); } // Welcome files ctx.addWelcomeFile("index.html"); ctx.addWelcomeFile("index.htm"); ctx.addWelcomeFile("index.jsp"); }
访问jsp页面tomcat交由JspServlet处理
org.apache.jasper.servlet.JspServlet private void serviceJspFile(HttpServletRequest request, HttpServletResponse response, String jspUri, boolean precompile){ //判断jsp是否已经封装 JspServletWrapper wrapper = rctxt.getWrapper(jspUri); if (wrapper == null) { synchronized(this) { wrapper = rctxt.getWrapper(jspUri); //没有封装得到jsp文件 if (wrapper == null) { // Check if the requested JSP page exists, to avoid // creating unnecessary directories and files. // jsp文件不存在进行错误操作 if (null == context.getResource(jspUri)) { handleMissingResource(request, response, jspUri); return; } //如果存在封装jsp并添加映射 wrapper = new JspServletWrapper(config, options, jspUri, rctxt); rctxt.addWrapper(jspUri,wrapper); } } } try { //执行jsp封装的service //@see org.apache.jasper.servlet.JspServletWrapper#service(HttpServletRequest request, HttpServletResponse response, boolean precompile) wrapper.service(request, response, precompile); } catch (FileNotFoundException fnfe) { handleMissingResource(request, response, jspUri); } }
org.apache.jasper.servlet.JspServletWrapper public void service(HttpServletRequest request, HttpServletResponse response, boolean precompile) throws ServletException, IOException, FileNotFoundException { //...... /* * (1) Compile */ if (options.getDevelopment() || firstTime ) { synchronized (this) { firstTime = false; // The following sets reload to true, if necessary //编译jsp ctxt.compile(); } } else { if (compileException != null) { // Throw cached compilation exception throw compileException; } } /* * (2) (Re)load servlet class file */ //得到jsp编译后的Servlet servlet = getServlet(); //...... /* * (4) Service request */ if (servlet instanceof SingleThreadModel) { // sync on the wrapper so that the freshness // of the page is determined right before servicing synchronized (this) { //单线程执行jsp编译后的Servlet servlet.service(request, response); } } else { //方法线程执行(非单线程) servlet.service(request, response); } }
org.apache.jasper.compiler.Compiler public void compile(boolean compileClass, boolean jspcMode) throws FileNotFoundException, JasperException, Exception { //生成java String[] smap = generateJava(); //生成class generateClass(smap); } protected String[] generateJava() throws Exception { //生成java文件 writer = setupContextWriter(javaFileName); //写入java内容 Generator.generate(writer, this, pageNodes); }
org.apache.jasper.JspCompilationContext public Compiler createCompiler() { //试着将options.getCompilerClassName改为自己重构的类 if (options.getCompilerClassName() != null) { jspCompiler = createCompiler(options.getCompilerClassName()); } else { }
相关推荐
NULL 博文链接:https://michaelee.iteye.com/blog/1603811
jsp编译环境 tomcat5.0 Accp5.0
将工程中的jsp编译成servlet后打成一个jar包,并且自动生成web.xml中的servlet配置。
Jasper模块是Tomcat的JSP核心引擎,我们知道JSP本质上是一个Servlet。 Tomcat使用Jasper对JSP语法进行解析,生成Servlet并生成...另外,在运行的时候,Jasper还会检测JSP文件是否修改,如果修改,则会重新编译JSP文件。
本文介绍了通过编译方式安装Tomcat,访问多个jsp界面,多个域名访问和如何修改端口的方法,仅供大家参考学习。
1.1 目的: 通过本学生信息管理系统软件,能帮助各校指导员及教务人员、利用计算机,快速方便的对学生资料进行管理、输入、输出、查找、... 编译环境:J2SDK 1.5 Web服务器:Tomcat 6.0 数据库:SQL Server 2005
intellij idea 集成tomcat
jsp 自动编译机制详细介绍 总的来说,Jasper的自动检测实现的...上图是一个形象的示意图,我们知道Tomcat架构中有四个级别的容器,Engine、Host、Context和Wrapper,而jsp编译对应在wrapper级别,所以通过StandardWra
在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码...
jsp总结代码,配置Tomcat,jsp的组成 (定义:在html中嵌入java脚本代码)
1,JSP文件先要翻译成Java文件(Servlet),在tomcat中翻译后的java文件在tomcat下的work\Catalina\localhost中相应名字的应用目录里。 2,编译Java文件 3,运行.class文件 3.JSP的特点 1,JSP不需要编译 2,JSP不...
2. Jsp 件会被转换为 Java 件,并随后被编译为 class 3. Jsp 被编译并被加载实例化后,会被封装在个 JspServletWrapper 对
源码安装Tomcat所需文件,Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
Tomcat 7.0的目录结构介绍。...work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果。 Tomcat 7.0是Apache公司开发的一款开源的轻量WEB应用TomCat服务器。是开发和调试的第一选择。
内部它使用Jasper作为jsp编译引擎---tomcat的jsp引擎。对于使用maven作为构建工具的团队或个人,使用非常简单,添加下面的依赖到你的pom文件 <groupId>com.github.lkoskela.jsptest</groupId> <artifactId>...
基于 MySQL+Tomcat+Servlet+JSP 的简单作业管理系统.zip 基于 MySQL+Tomcat+Servlet+JSP 的简单作业管理系统.zip 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目源码...
Apache Tomcat 5.0.x 对于Servlet和JSP的支持是一样的。大量底层代码里的重大修改,带来性能的提升、稳定性的提升及整体成本。 Apache Tomcat 5.0.x在Apache Tomcat 4.1的基础上做了很多改动,包括: · 性能优化和...
与JAR文件的依赖性JSP文件不再重新编译的每个从而提高性能的访问。 * Update to version 1.1.22 of the native component of the AJP and HTTP APR/native connectors.更新到1.1.22版本的AJP和HTTP四月/本地连接器...
如果你的Tomcat安装在C盘里,如:c:\tomcat(在这里切记一下,安装Tomcat时,在其字母周围一定不要存在空格,否则最后可能导致配置不成功) 1,新建变量名:CATALINA_BASE,变量值:C:\tomcat 2,新建变量名:...
4) Deployer 介绍了如何部署web application,预编译,和验证web application。 5) Manager 利用Manager应用程序管理web application部署,以及在tomcat运行时重新部署 6) Realms and AAA 介绍Realms(域)的...