`

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

 
阅读更多
<%@ 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;的区别

    JSP:include和include指令区别

    总结一下,`&lt;jsp:include&gt;` 和 `&lt;%@ include %&gt;` 的主要区别在于: 1. 动态与静态:`&lt;jsp:include&gt;` 动态包含,`&lt;%@ include %&gt;` 静态包含。 2. 执行时机:`&lt;jsp:include&gt;` 在请求时,`&lt;%@ include %&gt;` 在编译时。 3...

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

    `&lt;p&gt;`和`&lt;/p&gt;`成对出现,它们之间包裹的内容被视为一个段落,浏览器默认会为`&lt;p&gt;`标签添加一定的上下外边距(margin),使得段落间有一定的间距。在没有设置CSS样式的情况下,一个`&lt;p&gt;`标签相当于两个`&lt;br&gt;`标签的...

    Jsp脚本元素指令以及动作课后作业

    &lt;td&gt;&lt;%=birthday%&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt; ``` **8. 编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用0做除数,并使用page指令将该错误信息显示在另一个jsp页面上,产生的错误信息为...

    xml教程<<无废话xml>>

    &lt;title&gt;无废话XML&lt;/title&gt; &lt;author&gt;张三&lt;/author&gt; &lt;/book&gt; ``` #### 3. 属性 - 元素可以带有属性,提供额外的信息。例如: ```xml &lt;book id="001"&gt; &lt;title&gt;无废话XML&lt;/title&gt; &lt;author&gt;张三&lt;/author&gt; &lt;/...

    web课堂笔记

    2. **JSP指令元素**(Directive Elements): 控制JSP页面的行为,如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`. 3. **JSP动作元素**(Action Elements): 提供了一种将动作与JSP页面集成的方法,例如插入...

    jsp中各种连接数据库方式

    &lt;%@ page import="java.sql.*" %&gt; &lt;html&gt; &lt;body&gt; &lt;% Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl 为 Oracle SID String...

    ASP.NET中形式的用法

    在ASP.NET中,`&lt;%%&gt;` 标签的使用方式与ASP中的`&lt;% %&gt;`非常相似,主要区别在于内部所使用的编程语言不同。在ASP中,我们通常使用的是VBScript或JavaScript,而在ASP.NET中则可以使用.NET框架支持的各种语言,例如C#、...

    Jsp语法详解快速入门

    &lt;head&gt;&lt;title&gt;A Comment Test&lt;/title&gt;&lt;/head&gt; &lt;body&gt; &lt;h2&gt;A Test of Comments&lt;/h2&gt; &lt;%--This comment will not be visible in the page source--%&gt; &lt;/body&gt; &lt;/html&gt; ``` #### 三、声明 在JSP中声明变量和方法是...

    jsp连接数据库大全

    第二列为 &lt;%= rs.getString(2) %&gt; &lt;br/&gt; &lt;% } %&gt; &lt;% out.print("数据库连接成功"); %&gt; &lt;% rs.close(); %&gt; &lt;% stmt.close(); %&gt; &lt;% conn.close(); %&gt; &lt;/body&gt; &lt;/html&gt; ``` ##### 2. 代码解析 - `Class.for...

    JSP基本语法总结(1)---(12)

    %&gt;`**:静态地包含另一个文件,与`&lt;jsp:include&gt;`的区别在于包含在编译时完成。 - **`&lt;%@ taglib ... %&gt;`**:引入自定义标签库,指定URI和别名。 ### 4. JSP脚本元素 - **`&lt;%-- ... --%&gt;`**:JSP注释,服务器端...

    JSP页面简介

    i &lt;= 9; i++) { %&gt; &lt;tr&gt; &lt;% for (int j = 1; j &lt;= 9; j++) { %&gt; &lt;td&gt;&lt;%= i * j %&gt;&lt;/td&gt; &lt;% } %&gt; &lt;/tr&gt; &lt;% } %&gt; &lt;/table&gt; &lt;/body&gt; ``` #### 动作元素 动作元素在请求处理阶段生效,主要包括: - **`&lt;jsp:...

    jsp连接各种数据库

    &lt;%@ page import="java.sql.*" %&gt; &lt;html&gt; &lt;body&gt; &lt;% Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为数据库SID String user...

    JSP基本教程课件和源代码

    2. **JSP指令(Directives)** - 如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`, 它们定义页面的属性,包含其他文件,以及引入自定义标签库。 3. **脚本元素(Scriptlets)** - `&lt;% %&gt;`之间的Java代码,用于...

    JSP基础语法

    %&gt;和 &lt;%= %&gt; 2.1 &lt;% %&gt;:标记中可以定义变量、编写程序 例如:scriptletdemo01.jsp 2.2 &lt;%! %&gt;:定义全局变量,编写方法,编写类 例如:scriptletdemo02.jsp、scriptletdemo03.jsp 2.3 &lt;%= %&gt;:表达式输出 ...

    Jsp使用技巧 (实用技巧程序)

    % %&gt;`用于声明变量或方法;`&lt;% %&gt;`执行Java代码;`&lt;%= %&gt;`将表达式的结果输出到页面。 3. **JSP内置对象的运用**: JSP有九个内置对象,如`request`, `response`, `session`, `application`等。理解它们的功能和...

    jsp课件

    2. **JSP指令**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, 和`&lt;%@ taglib %&gt;`,它们提供了关于页面配置、包含其他文件以及引入自定义标签库的信息。 3. **JSP动作**:如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:params...

    web开发期末考试试题

    6. 与page指令"&lt;%@ page import="java.util.*,java.text.*"%&gt;"等价的是"&lt;%@ page import="java.util.*" ;%&gt;&lt;%@ page import="java.text.*"; %&gt;"。 7. 正确的表达式是"&lt;%= "hello world"%&gt;"。 8. 若要获得用户的选择...

    小程序testjsp

    同时,它也可能包含`&lt;jsp:include&gt;`、`&lt;jsp:useBean&gt;`、`&lt;%...%&gt;`等JSP指令和脚本元素,用于动态生成内容和调用Java类。 在JSP中,开发者可以通过`&lt;%!...%&gt;`声明Java变量和方法,`&lt;%=...%&gt;`用于输出表达式的值,而`...

Global site tag (gtag.js) - Google Analytics