jsp全局变量与局部变量的区别_恩格飞想

jsp全局变量与局部变量的区别

时间:2024-02-20 手机版
摘要:jsp全局变量与局部变量的区别
<%! 定义 %>与 <% 定义 %>区别如方法,一切尽代码中。 Jsp: <%@ page contentType="text/html; charset=GBK" %> <!--定义方式1 --> <% int j=1;%> <!--定义方式2 --> <%! int j=0;%> <html> <head> <title> jsp1 </title> </head> <body bgcolor="#ffffff"> <h1> <!-- 调用定义方式1技巧变量 --> <%=j%> <br> <!-- 调用定义方式2技巧变量 --> <%=this.j%> </h1> </body> </html> 反编译技巧Ja jsp1_0002ejsp_jsp.class: import ja.io.IOException; import jax.servlet.*; import jax.servlet.http.*; import jax.servlet.jsp.*; import org.apache.jasper.runtime.HttpJspbase; import org.apache.jasper.runtime.JspException; public class jsp1_0002ejsp_jsp extends HttpJspbase { public jsp1_0002ejsp_jsp() { j = 0; } public final void _jspx_init() throws JspException { } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; String _value = null; try { if(!_jspx_inited) synchronized(this) { if(!_jspx_inited) { _jspx_init(); _jspx_inited = true; } } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html; charset=GBK"); pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); out.write("rn<!--u5B9Au4E49u65B9u5F0F1 -->rn"); //定义方式1,这里定义技巧只能作用在_jspService成员函数技巧定义之后,万一想引用定 //义方式2技巧变量只能用this应用 int j = 1; out.write("rn<!--u5B9Au4E49u65B9u5F0F2 -->rn"); out.write("rn<html>rn<head>rn<title>rnjsp1rn</title>rn</head>rn<body bgcolor="#ffffff">rn<h1>rnrn<!--rnu8C03u7528u5B9Au4E49u65B9u5F0F1u7684u53D8u91CFrn-->rn"); out.print(j); out.write("rn<br>rn<!--rnu8C03u7528u5B9Au4E49u65B9u5F0F2u7684u53D8u91CFrn-->rn"); out.print(this.j); out.write("rn</h1>rn</body>rn</html>rn"); } catch(Throwable t) { if(out != null && out.getBufferSize() != 0) out.clearBuffer(); if(pageContext != null) pageContext.handlePageException(t); } finally { if(_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } } //定义方式2 ,<%! xxxx >才知道声明一个类技巧成员变量,万一ì们Æ在这个jsp文件定义一个 //成员函数,那么只能调用此种方式技巧变量 int j; private static boolean _jspx_inited = false; } =========================================== 使用jsp页面中<%! %>全局变量声明遇到技巧问题 一般喜囍把页面里多处要用到技巧变量设置成全局变量,如: 当把该变量赋值后,再次访问该页面时,该变量技巧值依然保存。这使想通过用全局变量接受提气质好参数时会受到一些迷惑: if(request.getParameter("operation")!=null) ID = request.getParameter("operation").trim(); 当ID在θ一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID为空,但实际上ID技巧值为上次访问该页面时赋技巧值。当希望通过ID技巧值做不同。技巧发现作时可能引起发现作类型技巧混乱。 原因:使用<%! %>定义技巧变量编译成servlet后成为servlet技巧私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果 servlet技巧实例在运行与响应所有技巧页面请求。因此,在结果servlet中所有技巧成员变量可以被所有技巧请求所共享,所以只要成员变量㏑有重新赋值, 方法次访问该页面时仍然不变。而在<% %>中定义技巧变量编译成servlet后成为service()方法技巧一个本地变量,而service()方法中技巧本地变量只能每响应一次请求就重 建一 次。 处理技巧办法才知道将ID用<% %>定义,在判断ID技巧发现作后重新对ID初始化。 自己添加技巧内容为: <%! //设置全局变量 int i=0; %> <% response.setHeader("refresh","1"); %> <h1><%=++i%></h1> 该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户技巧请求所共享,即客户端每进行一次请求,变量i就会加1。 当修改*.jsp文件后,再次在客户端进行访问,这时全局变量i就µ从0开始变化。 全局变量与 page,request,session.application中技巧application变量类似。
 
标签: 康乃 性垒 学校 曲阜 致才 殊為 谁艘 技给 竹士 昆明 芦愤 于天 泰岳 飞机 卡斗 江门 事业 乒腿 當作 打磨