怎样查看jsp文件生成的.java文件_查看Jsp编译后生成的Java文件

本帖最后由 liyihongcug 于 2015-3-13 11:49 编辑

能大多数Jsp开发员在写完程序测试通过后,不太会关注Jsp生成的Java文件,其实,通过Java代码,更能体现程序代码的真正含义,对进一步研究程序代码的后台运行情况是非常有帮助的。例如,用Jsp编写代码时,有时候用,有时候用,加不加感叹号,到底有什么不同吗? (Jsp代码加感叹号与不加感叹号的区别)这类问题在教程里一般不会涉及到,从哪里找到问题的突破口呢——Jsp生成的Java文件!所以,对于Jsp开发,有必要知道这点技能。

对于Tomcat而言,JSP页面生成的Java文件放在work路径对应的Web应用下。例如:

D:\Tomcat5.5\webapps\test\test.jsp

生成对应的java文件

D:\Tomcat5.5\work\Standalone\localhost\test\

Jsp与Servlet的关系

1、 JSP文件必须在JSP服务器内运行。

2、 JSP文件必须生成Servlet才能执行。

3、 每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。

4、 JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。

5、 JSP页面的静态内容、JSP脚本都会转换成Servlet的xxxService()方法,类似于自行创建Servlet时service()方法。

6、 JSP声明部分,转换成Servlet的成员部分。所有JSP声明部分可以使用private,protected,public,static等修饰符,其他地方则不行。

7、 JSP的输出表达式(部分),输出表达式会转换成Servlet的xxxService()方法里的输出语句。

8、 九个内置对象要么是xxxService()方法的形参,要么是该方法的局部变量,所以九个内置对象只能在JSP脚本和输出表达式中使用。

从上述第5、6点,其实就可以解释Jsp代码加感叹号与不加感叹号的区别的问题。

如何在Tomcat下指定Jsp生成的Java文件路径?

当需要自定义Jsp生成的Java文件位置时,可以通过如下两种方法来实现:

方法1.在tomcat的配置文件server.xml(路径:tomcat路径\conf下面)里,找到:,添加如上的workDir=""属性,""里写你的要看到.java/.class的路径.

方法2.到conf\Catalina\localhost下找到你项目的.xml培植文件,找到方法1中的代码,后续操作同方法1.

怎样保留Weblogic 中Jsp编译后生成的Java文件?

运行自己配置的web应用,往往只能看见weblogic编译之后的class文件。而看不见编译前的java的文件。为了调试方便,我们有时候是想看编译前的java文件的。

在weblogic.xml中加入:

keepgenerated

true

      即可。如果没有,在WEB-INF中建立一个weblogic.xml文件。增加:

/p>

PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"

"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd" >

keepgenerated

true

      看看web应用在Weblogic中生成临时文件中,有Java文件了吧!

servlet  annotation

import javax.servlet.annotation.WebServlet;

@WebServlet(name="Servlet3.0",urlPatterns={"/Servlet3"})

public class HelloServlet extends HttpServlet {

http://www.cnblogs.com/xdp-gacl/p/4224837.htmlpackage servlet;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

/**

12  * 使用注解标注过滤器

13  * @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器

14  * 属性filterName声明过滤器的名称,可选

15  * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)

16  */

@WebFilter(filterName="Servlet3Filter",urlPatterns="/*")

public class Servlet3Filter implements Filter {

@Override

public void destroy() {

// TODO Auto-generated method stub

System.out.println("过滤器销毁");

}

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

// TODO Auto-generated method stub

System.out.println("执行过滤操作");

arg2.doFilter(arg0, arg1);

}

@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

System.out.println("过滤器初始化");

}

}toLocaleString()这个方法主要的作用是将时间转化成String类型的!

System.out.println(new.Date());输出:Thu Jan 27 14:43:28 CST 2011

System.out.println(new.Date().toLocaleString())输出:2011-1-27 14:45:21

不过可以用SimpleDateFormat这种方法进行转换,也可以使用Calendar来操作日期。Calendar这个更适用于我们开发,简单明了

package me.gacl.web.listener;2 3 import javax.servlet.ServletContextEvent;4 import javax.servlet.ServletContextListener;5 import javax.servlet.annotation.WebListener;6 7 /**8 * 使用@WebListener注解将实现了ServletContextListener接口的MyServletContextListener标注为监听器9  */10 @WebListener11 public class MyServletContextListener implements ServletContextListener {12 13     @Override14     public void contextDestroyed(ServletContextEvent sce) {15         System.out.println("ServletContex销毁");16     }17 18     @Override19     public void contextInitialized(ServletContextEvent sce) {20         System.out.println("ServletContex初始化");21         System.out.println(sce.getServletContext().getServerInfo());22     }23 }

孤傲苍狼DateFormat ddf = DateFormat.getDateInstance();

DateFormat dtf = DateFormat.getTimeInstance();

DateFormat ddtf = DateFormat.getDateTimeInstance();

Date date = new Date();

System.out.println("日期:" + ddf.format(date));

System.out.println("时间:" + dtf.format(date));

System.out.println("日期时间:" + ddtf.format(date));

SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateTimeInstance();

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页