Eclipse中JSP生成的class文件去了哪里?
转自:http://www.cnblogs.com/xing901022/p/4352999.html
首先应该了解的是Tomcat在Eclipse的映射关系,参考前一篇博文所述:Tomcat的服务器目录配置
可以了解到,Tomcat在Eclipse中提供了三种位置配置选项:
1 Use workspace metadata
2 Use Tomcat installation
3 Use custom location
分别对应三种情况说一下,注意要把Server中发布的目录全部删除,然后clean后才能修改该配置项。
如果你在Eclipse中双击Server配置选项,在Server Location中分别选了如下的选项:
如果Server Locations选择了第一项Use workspace metadata
选了上面这项,你的服务器目录和发布目录将会如下:
服务器目录,即生成的字节码和java文件所在的目录。它在你的eclipse的工作目录中,比如我的工作目录是在F://workspace,那么在该目录下就可以看到这个.metadata目录了。
参考上面的配置目录F:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
这就是Tomcat映射的目录,在这个目录中有一个work目录和一个wtpwebapps目录
work目录中顺着:work\Catalina\localhost\项目名字\org\apache\jsp 就可以找到你的项目对应的java文件和class文件(注意要访问jsp后才会出现!)
wtpwebapps目录则存放对应的部署资源文件
如果选择的是第二项,Use Tomcat installation
如果勾选的use tomcat installation,那么你的tomcat目录将被选定为tomcat所安装的目录。
还是推荐选择这个吧,毕竟好找一点。
如果勾选第三项,Use custom location
目录的结构与上面的类似,上面这两个都是不可以修改的,要么是workspace所在的目录,要么是tomcat的目录。
选择该项,可以自定义生成的空间。
另外说一点,JSP的生命周期
这是老生常谈的问题了,用户把工程部署到tomcat中,然后启动tomcat!此时就可以访问jsp了、
1 第一次访问JSP,会验证一下是否第一次访问,然后把JSP转化成java(Servlet),再编译成class文件。
2 生成的class文件中会自动生成几个方法:jspInit()、jspDestroy()、jspService().Tomcat仅仅在第一次请求时,调用jspInit方法,然后调用jspService进行处理。
3 之后的每个请求,都会分配一个线程调用jspService方法。
4 如果页面被销毁或者关闭,都会调用jspDestroy
由于该文件是常驻内存的,又是多线程调用,所以访问的效率和速度都会很快。
按照前面所述的方法,就可以看到生成的文件结构了。
为了展示,这里给出一个样例的JSP
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>
<%--
language 脚本使用的语言
import 加载类文件
contentType 编码方式
--%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSP</h1> <!-- 客户端可见 -->
<%-- 客户端不可见 --%>
<%!
String s = "xingoo";//声明变量
int add(int a,int b){//声明函数
return a+b;
}
%>
s=<%=s %><br> <%--表达式不以分号结束 --%>
1+2=<%=add(1,2) %><br>
<%
//单行注释 ————————————————快捷键ctrl+/
/* 多行注释 ____________快捷键ctrl+shift+/ */
out.println("s="+s+"<br>");
%>
</body>
</html>
里面含有一些注释,变量声明和打印输出等等。
在生成.java文件中,可以看到生成的java文件:
package org.apache.jsp; import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
import java.io.*; public final class test1_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent { String s = "xingoo";//声明变量
int add(int a,int b){//声明函数
return a+b;
} private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.List _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory;
private org.apache.AnnotationProcessor _jsp_annotationprocessor; public Object getDependants() {
return _jspx_dependants;
} public void _jspInit() {
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
} public void _jspDestroy() {
} public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException { PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null; try {
response.setContentType("text/html; charset=utf-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out; out.write('\r');
out.write('\n');
out.write(' ');
out.write("\r\n");
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("\t<h1>JSP</h1>\r\n");
out.write("\t\r\n");
out.write("\t<!-- 客户端可见 -->\r\n");
out.write("\t");
out.write('\r');
out.write('\n');
out.write(' ');
out.write("\r\n");
out.write("\ts=");
out.print(s );
out.write("<br> ");
out.write("\r\n");
out.write("\t1+2=");
out.print(add(1,2) );
out.write("<br>\r\n");
out.write("\t"); //单行注释 ————————————————快捷键ctrl+/
/* 多行注释 ____________快捷键ctrl+shift+/ */
out.println("s="+s+"<br>"); out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else log(t.getMessage(), t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}
声明注释,都可以很详细的看到。
Eclipse中JSP生成的class文件去了哪里?的更多相关文章
- Eclipse中JSP生成的类文件存放在哪
Jsp页面看上去和HTML相似,但它实际上是作为Servlet运行的. 当JSP页面第一次被访问时,web容器解析jsp文件并将其转化为相应的java文件,该文件声明了一个servlet类,该类称为页 ...
- 设置eclipse中jsp/html文件好看的自动排版
注:本文转载于ieayoio,原文链接:https://blog.csdn.net/ieayoio/article/details/49930587#8912689 eclipse中jsp文件代码的排 ...
- ubuntu下整合eclipse和javah生成jni头文件开发android的native程序
0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...
- eclipse中自动生成注释
eclipse中自动生成注释 包前缀设置的地方 注释模板设置的地方 Eclipse自动生成方法注释 快捷键 自动生成方法的注释格式,例如 /*** @param str* @return* @thro ...
- Eclipse中自动生成get/set时携带注释给get/set
Eclipse中自动生成get/set时携带注释给get/set 编码的时候通常要用到 JavaBean ,而在我们经常把注释写在字段上面,但生成的Get/Set方法不会生成,通过修改Eclips ...
- 更改eclipse中jsp默认编码格式为UTF-8
本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/cartoon-blog 近段时间一直在学java三大框架,遇到了一个问 ...
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 windo ...
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总(转)
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 win ...
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
准备工作:Eclipse ADT IDE 开发工具,NDK .Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, ND ...
随机推荐
- C#3.0:新特性
1.自动属性 下面两种写法作用相同 1 public int Age { get; set;} 1 2 3 4 5 6 private int age; public int Age { get { ...
- Combobox中禁止鼠标中键滚动list列表
//第1种方法 procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; Mo ...
- xe5 android 控制蓝牙[转]
用以下代码中的接口实现控制蓝牙的开.关及详细信息 unit Androidapi.JNI.BluetoothAdapter; // (c) RedTitan Technology 2013// JNI ...
- css文字链接滑过向上移动1像素
方法一:行高 a{line-height:22px;} a:hover{line-height:21px;} 方法二:定位 a{position:absolute;top:0;} a:hover{ ...
- 关于string.Template的简单介绍
一.简介 string模块定义了一种新字符串类型Template,它简化了特定的字符串置换操作. 何谓“简化”?我们可以先想一下我们之前比较常用的有关字符串的“置换”操作有哪些:一种是利用%操作符实现 ...
- [UE4]制作按钮小技巧
Normal和Pressed一样的图片和大小,Hovered也是一样的图片但是大小比Normal稍微大一点,这样点击按钮的时候就会产生按钮被按下去的感觉.
- [UE4]获得特定类型的所有Actor:Get All Actors Of Class、Get All Actors with Interface、Get All Actors with Tag
- [UE4]子弹穿透多个机器人
一.将机器人的碰撞类型改成“OverLap” 二.使用“MultiLineTraceByChannel”这个是可以穿透检测,可以检测到多个物体(前提是被检测物体的碰撞类型是“OverLap”).“Li ...
- python浅copy和深copy
import copy person =["name",[count,3000]] husband=copy.copy(person) wife=copy.copy(perso ...
- switch case 变量初始化问题
今天再写alsa的时候遇到一个稀奇古怪的问题,网上看了下资料,摘出来入下 代码: int main() { ; switch(a) { : ; break; : break; default: bre ...