书上讲解JSP的句型,其中句型2用来定义变量:<%! int k=0; %> 这感吧号!不加也没事,为何? <%!%>里面只能有声明<%%>里面既可以有声明,也可以有执行语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对,去掉的话就当是一般的java语句,是自然可以执行的。 比如说你要申明一个函数fun1然后并调用这个函数,你不用!你怎么搞? 所有在<%!...%>内创建的对象和变量都是持久的,同一Servlet的所有线程共享持久的变量和对象。对这些持久对象的改变被反映到所有线程中。 JSP可以单独定义函数?怎么定义呢? hxzg001(丢掉幻想,准备辞职) 可能说到关键处!! 就放在你的<%!...%>这个里面啊,你怎么循环问问题啊? 所有在<%!...%>内创建的对象和变量都是持久的-----------------------------------------没试成功! 用来<%! 定义doGet属性与方法 %> package org.apache.jsp;import struts1.SomeBean;import java.util.HashMap;import java.util.Vector;import org.apache.struts.Globals;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionMessage;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;import org.apache.jasper.runtime.*;public class jsp1$jsp extends HttpJspBase { // begin [file="/jsp1.jsp";from=(26,3);to=(28,0)] int i =0; // end static { } public jsp1$jsp( ) { } private static boolean _jspx_inited = false; public final void _jspx_init() throws org.apache.jasper.runtime.JspException { } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { int j=0;}}仔细看一下两个int变量,这个是容器把jsp转换成servlet后的java文件,int i是在<%!%>中定义的,int j不是,应该能看出他们的区别了吧 %@ page language="java" %><%@ page contentType ="text/html;charset =gb2312" %><html><body> <h5><% out.println("<br>Hello,This is JSP Program!<br>");%><%! String sub1(String s) %><%! { %><%! return(s); %><%! } %><%-- 上次为所在类扩充一个方法sub1 --%> <% String s="<br>试验子程序subs<br>"; %><% out.println(sub1(s)); %><%= sub1("<br>再次调用子程序subs<br>") %><hr></body></html><!--------------------------------------------------------------------->传统子程序的写法在java中是不支持,但也不能不用子程序吧,在JAVA中一般的做法是在当前类扩充一些子程序(即“方法”),而JSP与servlet有一些差别,它省略了所在的类(继承HttpServlet),造成你没法为它扩充新的“方法”与“属性”,为了解决这个问题,JSP用了标记“<!”表示为JSP当前这个根类扩充“方法”与“属性”如此而已! <%!%>里面声明的变量是全局变量,而且只能用于声明<%%>声明的变量是局部的,可以用于写其他java代码 .jsp都会编译为class.你看一下jsp编译后生成的class就明白了.<%!%>声明的是类的属性<%%>中是内部方法的.最关键的是,class在jsp container中运行时,只有一个实例. JAVA运行后显示问题 java图形界面的问题,点运行会报错,求高人指点下,改好就更好了 急!! 求救 正则表达式截取字符串 什么是负载均衡? 求购跪求:数据挖掘之Apriori算法源代码,需用C++/JAVA语言编辑 两个关于多线程的问题,对多线程熟悉的朋友解答 applet问题 发现jcertify4.0答案有错误,同意者请举手 哪位高手能告诉我,得到一个目录下的所有文件名 海康SDK开发求解:海康预览时候可以设置OSD字符串,那么请问下预览时可以设置自定义的图标嘛? 关于Button的基础问题 太简单的问题,都不好意思问。
fun1
然后并调用这个函数,你不用!你怎么搞?
-----------------------------------------
没试成功!
<%! 定义doGet属性与方法 %>
import java.util.HashMap;
import java.util.Vector;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
public class jsp1$jsp extends HttpJspBase { // begin [file="/jsp1.jsp";from=(26,3);to=(28,0)]
int i =0;
// end static {
}
public jsp1$jsp( ) {
} private static boolean _jspx_inited = false; public final void _jspx_init() throws org.apache.jasper.runtime.JspException {
} public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
int j=0;
}
}
仔细看一下两个int变量,这个是容器把jsp转换成servlet后的java文件,int i是在<%!%>中定义的,int j不是,应该能看出他们的区别了吧
<%@ page contentType ="text/html;charset =gb2312" %>
<html>
<body>
<h5>
<% out.println("<br>Hello,This is JSP Program!<br>");%><%! String sub1(String s) %>
<%! { %>
<%! return(s); %>
<%! } %>
<%-- 上次为所在类扩充一个方法sub1 --%> <% String s="<br>试验子程序subs<br>"; %>
<% out.println(sub1(s)); %>
<%= sub1("<br>再次调用子程序subs<br>") %>
<hr>
</body>
</html>
<!--------------------------------------------------------------------->
传统子程序的写法在java中是不支持,但也不能不用子程序吧,在JAVA中一般的做法
是在当前类扩充一些子程序(即“方法”),而JSP与servlet有一些差别,它省略了
所在的类(继承HttpServlet),造成你没法为它扩充新的“方法”与“属性”,为了
解决这个问题,JSP用了标记“<!”表示为JSP当前这个根类扩充“方法”与“属性”
如此而已!
<%%>声明的变量是局部的,可以用于写其他java代码
你看一下jsp编译后生成的class就明白了.
<%!%>声明的是类的属性
<%%>中是内部方法的.
最关键的是,class在jsp container中运行时,只有一个实例.