`

jsp <%! %> 与 <% %> 区别

    博客分类:
  • JAVA
 
阅读更多
Jsp代码  收藏代码
  1. <body>  
  2. <%!  
  3.   
  4. //1、可定义方法  
  5. public String outMethod(){  
  6.     return "outMethod";  
  7. }  
  8. //2、可定义static方法  
  9. public static String outStaticMethod(){  
  10.     return "outStaticMethod";  
  11. }  
  12. //3、可定义static属性  
  13. public static int count = 0;  
  14.   
  15. //4、不可以使用out对象  
  16. %>  
  17.   
  18. <%  
  19. //1、不可定义方法  
  20. //2、不可定义static方法  
  21. //3、不可定义static属性  
  22.   
  23. //可以使用out对象  
  24. out.print(outMethod());  
  25. out.print("<br>");  
  26. out.print(outStaticMethod());  
  27. out.print("<br>");  
  28. out.print(count);  
  29. %>  
  30. </body>  

 

经Tomcat编译后,生成的java文件如下:

Java代码  收藏代码
  1. package org.apache.jsp;  
  2.   
  3. import javax.servlet.*;  
  4. import javax.servlet.http.*;  
  5. import javax.servlet.jsp.*;  
  6.   
  7. public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase  
  8.     implements org.apache.jasper.runtime.JspSourceDependent {  
  9.   
  10.   
  11.   
  12. //1、可定义方法  
  13. public String outMethod(){  
  14.     return "outMethod";  
  15. }  
  16. //2、可定义static方法  
  17. public static String outStaticMethod(){  
  18.     return "outStaticMethod";  
  19. }  
  20. //3、可定义static属性  
  21. public static int count = 0;  
  22.   
  23. //4、不可以使用out对象  
  24.   
  25.   private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();  
  26.   
  27.   private static java.util.List _jspx_dependants;  
  28.   
  29.   private javax.el.ExpressionFactory _el_expressionfactory;  
  30.   private org.apache.AnnotationProcessor _jsp_annotationprocessor;  
  31.   
  32.   public Object getDependants() {  
  33.     return _jspx_dependants;  
  34.   }  
  35.   
  36.   public void _jspInit() {  
  37.     _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();  
  38.     _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());  
  39.   }  
  40.   
  41.   public void _jspDestroy() {  
  42.   }  
  43.   
  44.   public void _jspService(HttpServletRequest request, HttpServletResponse response)  
  45.         throws java.io.IOException, ServletException {  
  46.   
  47.     PageContext pageContext = null;  
  48.     HttpSession session = null;  
  49.     ServletContext application = null;  
  50.     ServletConfig config = null;  
  51.     JspWriter out = null;  
  52.     Object page = this;  
  53.     JspWriter _jspx_out = null;  
  54.     PageContext _jspx_page_context = null;  
  55.   
  56.   
  57.     try {  
  58.       response.setContentType("text/html; charset=utf-8");  
  59.       pageContext = _jspxFactory.getPageContext(this, request, response,  
  60.                 null, true, 8192, true);  
  61.       _jspx_page_context = pageContext;  
  62.       application = pageContext.getServletContext();  
  63.       config = pageContext.getServletConfig();  
  64.       session = pageContext.getSession();  
  65.       out = pageContext.getOut();  
  66.       _jspx_out = out;  
  67.   
  68.       out.write("\r\n");  
  69.       out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");  
  70.       out.write("<html>\r\n");  
  71.       out.write("<head>\r\n");  
  72.       out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n");  
  73.       out.write("<title>Insert title here</title>\r\n");  
  74.       out.write("</head>\r\n");  
  75.       out.write("<body>\r\n");  
  76.       out.write("\r\n");  
  77.       out.write("\r\n");  
  78.   
  79. //1、不可定义方法  
  80. //2、不可定义static方法  
  81. //3、不可定义static属性  
  82.   
  83. //可以使用out对象  
  84. out.print(outMethod());  
  85. out.print("<br>");  
  86. out.print(outStaticMethod());  
  87. out.print("<br>");  
  88. out.print(count);  
  89.   
  90.       out.write("\r\n");  
  91.       out.write("</body>\r\n");  
  92.       out.write("</html>");  
  93.     } catch (Throwable t) {  
  94.       if (!(t instanceof SkipPageException)){  
  95.         out = _jspx_out;  
  96.         if (out != null && out.getBufferSize() != 0)  
  97.           try { out.clearBuffer(); } catch (java.io.IOException e) {}  
  98.         if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);  
  99.       }  
  100.     } finally {  
  101.       _jspxFactory.releasePageContext(_jspx_page_context);  
  102.     }  
  103.   }  
  104. }  

 

在生成的java文件中,我们可以看到,<%! %>中的代码对应于java类文件的成员方法、静态方法,静态变量,而<%  %>中的代码对应于java类文件的_jspService方法中的代码(_jspService对应于servlet中的service方法),这也就是为什么在<% %>中不能声明方法、静态变量的原因了(方法中是不可以

分享到:
评论

相关推荐

    jsp里怎么读取我java里写的函数.

    jsp里怎么读取我java里...这个java函数跟普通的函数有那一点点的区别,他是需要添加一个包,在jsp里调用是通过包来找到你要调用的函数。 下面我们编写一个简单得再简单不过的小函数,设置一个字符串,返回一个字符串。

    两中包含的区别.txt

    JSP中有两种包含语句: 1.&lt;%@include file="head.jsp...如果资源为静态资源则直接将资源包含处理与&lt;%@include file="uri"%&gt;相同。 ⑵.如果请求资源为动态,则先各自处理资源,之后将处理后的结果包含在一起进行显示。

    JSTL详细标签库介绍

    发生异常时,异常周围信息(抛出对象本身类型)-------------异常处理程序&lt;BR&gt;&lt;BR&gt;12.5一个异常处理的简单实例:除数为0&lt;BR&gt;&lt;BR&gt;需求:使用一个小应用程序,完成两数相除的计算&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;...

    AutoJava Java代码自动生成工具

    &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;2、AutoJava与其它类似工具的区别&lt;br&gt;&lt;br&gt;&lt;br&gt;AutoJava只能生成Java、JSP代码及相关配置文件。&lt;br&gt;AutoJava生成的代码是根据O/R Mapping规则生成的面向对象的代码。&lt;br&gt;AutoJava生成的代码是高度...

    拦截器和控制器的区别

    &lt;result name="invalid.token"&gt;/demo02/error.jsp&lt;/result&gt; &lt;/action&gt; &lt;/package&gt; &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt; &lt;s:token&gt;&lt;/s:token&gt; 3、500字struts2的科学说明文 每人一份 2018-...

    J2EE面试题

    9) aa.jsp与bb.jsp属于同一应用,在aa.jsp中使用&lt;jsp:useBean id="beanName" scope="session" class="mypackage.mybean" /&gt;标记,在bb.jsp中要把beanName这个bean对象变量所引用的对象取出来。那么对于以下描述,...

    tree树形数据结构

    Jive是著名的open source论坛,这次我们来研究其帖子结构,论坛是由一个个帖子组成,一个帖子后跟一个或几个回帖,这是一个典型的树形结构,有枝有叶,如下:&lt;br&gt; &lt;br&gt; 1&lt;br&gt; |-- 3&lt;br&gt; |-- |--4&lt;br&gt; |-- |--6&lt;br&gt; |-...

    快逸报表在J2EE部署中最简实例

    &lt;load-on-startup&gt;2&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet&gt; &lt;servlet-name&gt;reportServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.runqian.report4.view.ReportServlet&lt;/servlet-class&gt; &lt;init-param&gt;  ...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:&lt;#if (x&gt;y)&gt; ...

    [jstl-1.2.jar]和[jstl-api-1.2.jar、standard.jar]两个版本.zip

    standard.jar和jstl-api-1.2.jar是一个版本,导入时需要将两个都导入,jstl-1.2.jar是高版本的,是将低版本的两个文件合成一个了,故只需要导入一个文件即可,导入的同时在jsp文件首行写入 &lt;%@ taglib prefix="c" ...

    ASP.NET+程序习题答案+上机答案+模拟题+尚俊杰编著

    第1章 ASP.NET概述 1.思考题 1.名词解释 ...所有人浏览到的同一网页不会有任何区别。... &lt;title&gt;test&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;center&gt; &lt;asp:Label ID=message Runat=server/&gt; &lt;/center&gt; &lt;/body&gt; &lt;/html&gt;

    EL表达式 (详解)

    EL表达式 (详解) EL表达式 1、EL简介 1)语法结构 ${expression} 2)[]与.... EL 提供.... 当要存取的属性名称中包含一些特殊...=或ne、&lt;或lt、&gt;或gt、&lt;=或le、&gt;=或ge 3.逻辑运算符有三个:&&或and、||或or、!或not ...

    Java学习题答案

    知识很简单,&lt;br&gt;但从面试的角度看,被试者不仅要能知道它们的区别,而且要能比较准确地表达出来(以&lt;br&gt;后写文档要能让别人看得懂,不产生歧义),回答"jsp编译后就是servlet"视为错误,回答&lt;br&gt;"jsp用于视图,servlet用于...

    基于JAVA的企业级应用开发复习资料

    一、 简答题 1)解释下面关于J2EE的名词 1、 RMI:2、JTA:3、...3) &lt;%@ include file="filename" %&gt; 和&lt;jsp:include page="includedPage" /&gt; 的区别是? 4) JSP中动态INCLUDE与静态INCLUDE的区别? 5) 什么是Web容器?

    AIC的Java课程1-6章

    第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 高 中&lt;br&gt;控制结构...br&gt;IO和串行化 高 中 难&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;&lt;br&gt;第1章...

    jstl标签在jsp中使用问题

    所使用的web应用服务器resin与tomcat有所区别 resin\lib目录下存在jstl-1.2.jar、jta-101.jar包 而tomcat目录下不存在这两个jar包 结论:在使用tomcat里要在web工程中引入以上两个jar包 以解决...

    JSP:include和include指令区别

    JSP:include和include指令区别,对应我的博客 blog.csdn.net/svitter

    ssh(structs,spring,hibernate)框架中的上传下载

    21. <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> 22. <prop key="hibernate.cglib.use_reflection_optimizer">true</prop> 23. </props> 24. </property> 25. </bean>...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    看上面的"结构树",其中&lt;myfile&gt;是父元素,&lt;title&gt;,&lt;author&gt;是它的子元素,而&lt;myfile&gt;又是&lt;filelist&gt;的子元素。象&lt;title&gt;这样没有包含任何子元素的最后一级元素我们也称之为"页元素"。 4.Parser(解析软件) Parser...

    abstract class和interface有什么区别?

    25、JSP中动态INCLUDE与静态INCLUDE的区别?  动态INCLUDE用jsp:include动作实现 &lt;jsp:in clude page="included.jsp" flush="true" / &gt;它总是会检查所含文件中的变化,适合用于包含动 态页面,并且可以带参数。 ...

Global site tag (gtag.js) - Google Analytics