`

<%%>、<%! %>、<%= %>的区别

 
阅读更多
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>Test</title>
</head>
<body>
   <%! String test1 = "定义一些成员变量或者方法"; %>
   <%  String test2 = "定义局部变量或者一些逻辑操作"; %>
   
   <%="test" %> 
   equals
   <% out.println("test"); %>
</body>
</html>

 

这里列举了三个标签<%%>、<%! %>、<%= %>。这里kk从编译成的Servlet来PK下这三者的区别。

 

  • <%  %> PK <%! %>

<%  %>: 用来放入一些逻辑操作和局部变量,其中的一些逻辑将会放入到_jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)方法中(如下图),上面的jsp中<% String test1 = "定义局部变量或者一些逻辑操作"; %>就是方法中的局部变量。

 

<%!  %>: 用来定义成员变量或者成员方法,<%! String test2 = "定义一些成员变量或者方法"; %>将会最终编译成Servlet中的成员变量(如下图)。

 

  • <%  %> PK <%=   %>

<%=123   %> 相当于 <% out.println("123");%>,会在前台页面输出指定的内容。

注:在使用<%= %>时其后不能有封号。

 

令附上jsp在tomcat中编译成的Servlet(jsp页面在程序tomcat启动后并访问该页面会在tomcat path\work\Catalina\localhost\KKWebTest\org\apache\jsp中编译成Servlet)如下: 

package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

 String test1 = "定义一些成员变量或者方法"; 
  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.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\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>Test</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("   ");
      out.write("\r\n");
      out.write("   ");
  String test2 = "定义局部变量或者一些逻辑操作"; 
      out.write("\r\n");
      out.write("   \r\n");
      out.write("   ");
      out.print("test" );
      out.write(" \r\n");
      out.write("   equals\r\n");
      out.write("   ");
 out.println("test"); 
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.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 throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

 

 

 

 

0
2
分享到:
评论

相关推荐

    <%# %> 、<% %>、<%= %>和<%@ %>的区别

    asp.net 中&lt;%# %&gt; 、&lt;% %&gt;、&lt;%= %&gt;和&lt;%@ %&gt;的区别

    <br> 和 <p> 标签的区别

    &lt;br&gt; 和 &lt;p&gt; 标签的区别 , 快速了解 &lt;br&gt; 标签 和 &lt;p&gt; 标签...

    C/C++面试题目及解答.doc

    j&lt;=i; j++) //倒置&lt;br&gt; { &lt;br&gt; pval[j] = strval[i-j]; &lt;br&gt; } &lt;br&gt; pval[j] = '\0'; &lt;br&gt; }&lt;br&gt; d)请编写一个 C 函数,该函数将一个字符串逆序。&lt;br&gt;void AntitoneValue(char* father, char* child) &lt;br&gt; { &lt;br&gt; ...

    ASP.NET WebForm中%=%与%#%的区别

    =%&gt;相当于Response.Write(),是输出变量的值 &lt;&#37;#%&gt;专门用于数据绑定,可以绑定一些变量或者数据源中的信息,中间绑定是数据源的条目,若想让它起作用,必须调用DataBind()方法 您可能感兴趣的文章:HighCharts图表...

    自测试卷5.doc1.简述C#、Java和C++的比较。 2.已知变量x的初值为24,则表达式x+=x--+=x%=17运算的结果值为( )。

    6.成员变量和成员方法前加static的作用是什么? 7.using和new有什么区别? 8.如何理解面向对象的多态性?...9.有一个泛型类class List&lt;T&gt;{},则正确实例化该泛型类的语句是( ...D)List&lt;int&gt; t=new List&lt;int&gt;();

    ArcIMS地图配置文件,地图服务,请求和响应之间的关系

    &gt;&lt;br&gt;&lt;ARCXML version="1.1"&gt;&lt;br&gt;&lt;REQUEST&gt;&lt;br&gt;&lt;GET_IMAGE&gt;&lt;br&gt;&lt;PROPERTIES&gt;&lt;br&gt;&lt;ENVELOPE minx="-125" miny="25" maxx="-67" maxy="50" /&gt;&lt;br&gt;&lt;IMAGESIZE width="700" height="500" /&gt;&lt;br&gt;&lt;/PROPERTIES&gt;&lt;br&gt;&lt;/GET_...

    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;...

    C#编程经验技巧宝典

    88&lt;br&gt;&lt;br&gt;0136 如何进行文本加密与解密 88&lt;br&gt;&lt;br&gt;0137 如何区别0、空字符串、Null、Empty和Nothing 89&lt;br&gt;&lt;br&gt;0138 从字符串中分离文件路径、文件名及扩展名 89&lt;br&gt;&lt;br&gt;0139 如何批量替换某一类字符串 89...

    <em> <i> <dfn>标签的区别

    &lt;em&gt; &lt;i&gt; &lt;dfn&gt;标签的区别

    无敌英语语法

    状语从句和宾语从句 &lt;br&gt;&lt;br&gt;实力测验 &lt;br&gt;&lt;br&gt;附录 &lt;br&gt;&lt;br&gt;英语语法Q&A &lt;br&gt;&lt;br&gt;名词 Q1 &lt;br&gt;&lt;br&gt;代词 Q6 &lt;br&gt;&lt;br&gt;冠词·形容词·副词 Q10 &lt;br&gt;&lt;br&gt;动词 Q19 &lt;br&gt;&lt;br&gt;现在时·过去时 Q22 &lt;br&gt;&lt;br&gt;进行时 Q27 &lt;br&gt;...

    电脑百科全书-----217个电脑知识和实用问题解决集锦

    (55#)&lt;br&gt;&lt;br&gt;处理冲击波(56#)&lt;br&gt;&lt;br&gt;磁盘格式的问题(57#)&lt;br&gt;&lt;br&gt;电脑死机故障分析(58#)&lt;br&gt;&lt;br&gt;更改IE的默认搜索引擎(59#)&lt;br&gt;&lt;br&gt;更改临时文件夹的路径(60#)&lt;br&gt;&lt;br&gt;更改屏幕保护程序关联方式(61#...

    WinSW.NET4.exe

    Winsw将jar包部署为windows服务: 1.下载winsw官网上的xml文件和.exe文件(已下载...&lt;executable&gt;E:\jdk\bin\java.exe&lt;/executable&gt; &lt;arguments&gt;-jar testjar.jar&lt;/arguments&gt; &lt;startmode&gt;Automatic&lt;/startmode&gt; &lt;logpa

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    本文给大家解析使用&lt;![CDATA[ ]]&gt;解决xml文件不被转义的问题, 对mybatis 中的&lt;![CDATA[ ]]&gt;相关知识感兴趣的朋友一起看看吧

    两中包含的区别.txt

    1.&lt;%@include file="head.jsp" %&gt; 2.&lt;jsp:include page="head.jsp" /&gt; 或者: &lt;jsp:include page="jieshou.jsp"&gt; &lt;jsp:param name="canshu" value="magci" /&gt; &lt;/jsp:include&gt; 两者的区别: 1.&lt;%@include ...

    中国站长报总第五期

    &lt;br&gt; 2004年度中文非主流网站100强评选结果揭晓√ &lt;br&gt; 广告联盟看起来很“完美” &lt;br&gt; Google AdSense与其他广告联盟的区别是什么? &lt;br&gt; 当当失算于Email营销 &lt;br&gt; 知己知彼分析:何防止google adsense fraud ...

    浅谈JS中的!=、== 、!==、===的用法和区别

    var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 相同值 test !== num //false test与num类型相同,其值也相同, 非运算肯定是false ...

    Web应用安全:HTTP协议GET和POST的使用区别实验.docx

    &lt;script type="text/javascript" src="jquery-1.8.0.min.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;form action="a2.php" name="form1" method="post"&gt; 姓名:&lt;input type="text" name="username" value="wjj"&gt; 年龄:&lt;input ...

    freemarker总结

    &lt;=或者lte:判断左边值是否小于等于右边值 注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比 较,"x","x ","X"是不等的.其它的运行符可以...

Global site tag (gtag.js) - Google Analytics