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 { }
相关推荐
【标题】"Tomcat的JSP编译参数" 在Java Web开发中,Tomcat服务器扮演着重要的角色,尤其是对于处理JSP(JavaServer Pages)页面。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现动态...
编译源码时,会用到`ecj.jar`,这是Eclipse Java Compiler的jar包,用于编译JSP文件。 6. **其他依赖库**:Tomcat源码中还包括了其他一些必要的库,如`servlet-api.jar`、`jsp-api.jar`等,这些都是Java Web应用的...
通过引入特定依赖,如`tomcat-jsp-api`,可以简化项目的部署流程,使得开发者能够在本地环境中快速启动Tomcat服务器进行测试或调试。 #### Maven与Tomcat集成的关键点 - **Maven**: 是一个流行的Java项目管理工具...
【手工编译jsp】是一个关于Java Web开发中的特殊主题,主要涉及如何在没有使用Web容器(如Tomcat、Jetty等)的情况下,直接对JSP(JavaServer Pages)页面进行预编译为Java类的过程。这个过程对于理解JSP的工作原理...
本文将详细介绍如何在Java平台上配置Tomcat服务器以支持JSP和Servlet的开发,适合初学者学习。配置主要包括以下几个步骤: 1. **Java SDK的安装与配置** - 首先,需要从Sun官方网站下载适用于Windows的J2SDK(现已...
Tomcat作为JSP容器,能够编译JSP文件为Servlet,然后执行这些Servlet来生成动态内容。 “标签”中提到了“tomcat6.0”、“JSP”和“测试”,这进一步强调了这个压缩包的重点内容。Tomcat 6.0是Tomcat的一个版本,...
以上步骤展示了如何在Tomcat环境下配置JSP和Servlet的基本流程,涉及J2SDK的安装与验证、Tomcat的安装与配置、JSP与Servlet的创建与部署。通过这些实践,开发者可以更好地理解Java Web应用程序的构建过程,为后续的...
8. **学习价值**:编译Tomcat6不仅可以提升对Java Web服务器内部机制的理解,还有助于深入学习Java编程、软件构建流程以及服务器管理和优化技巧。 总的来说,“Tomcat6编译”是一个涉及Java Web开发基础、软件工程...
总的来说,将JSP编译打包成jar是一个将静态的JSP文件转换为可执行的Servlet代码,并利用构建工具Ant完成打包的过程,这样可以方便地在不支持JSP的环境中运行和部署。这个过程涉及到JSP、Servlet、Ant构建工具以及web...
总结,"jsp.rar_JSP TOMCAT SQL_jsp sql_jsp sql tomcat_tomcat server jsp_"这个项目涵盖了JSP动态网页技术、Tomcat服务器的使用、SQL Server数据库的管理和JSP与SQL的交互等多个关键知识点,是一个综合性的Web应用...
### Tomcat+JSP经典配置实例详解 #### 一、开发环境配置 为了帮助初学者更好地理解如何在Tomcat服务器上配置JSP、Servlet和Bean,本文将详细介绍配置过程及注意事项。 ##### 第一步:下载与准备J2SDK和Tomcat - ...
但如果你想修改JSP版本或者配置JSP的编译选项,可以在Tomcat的conf目录下的`web.xml`文件中找到相关的servlet配置。 **四、部署JSP应用** 1. 创建Web应用目录结构:在Tomcat的webapps目录下创建一个新的文件夹,...
在编译Tomcat时,通常会依赖于servlet-api.jar和jsp-api.jar这两个文件,它们通常位于Tomcat的lib目录下。 五、Apache Tomcat Native Library 为了提高性能,Tomcat提供了一个原生库(Tomcat Native),它允许...
"tomcat编译依赖Jar"指的是在编译Tomcat源码时需要的一系列外部Java档案(.jar文件),这些文件包含了编译过程所需的类库和工具。了解这些依赖关系对于开发者来说至关重要,因为它们确保了Tomcat能够正确构建并运行...
在Tomcat中,JSP文件被编译成Servlet,然后执行生成动态内容。JSP使得开发者能够将表现层和业务逻辑分离,提高代码的可维护性和复用性。 4. 集成与应用:在实际开发中,开发者通常会在JSP页面中编写HTML结构,然后...
### Tomcat下JSP、Servlet和JavaBean的配置详解 #### 一、引言 随着互联网技术的发展,Java Server Pages (JSP)、Servlet 和 JavaBean 成为了开发动态Web应用程序的重要组成部分。对于初学者而言,如何在Apache ...