<%!%>里面只能有声明<%%>里面既可以有声明,也可以有执行语句

解决方案 »

  1.   

    对,去掉的话就当是一般的java语句,是自然可以执行的。
      

  2.   

    比如说你要申明一个函数
    fun1
    然后并调用这个函数,你不用!你怎么搞?
      

  3.   

    所有在<%!...%>内创建的对象和变量都是持久的,同一Servlet的所有线程共享持久的变量和对象。对这些持久对象的改变被反映到所有线程中。
      

  4.   

    JSP可以单独定义函数?怎么定义呢?
      

  5.   

    hxzg001(丢掉幻想,准备辞职) 可能说到关键处!!
      

  6.   

    就放在你的<%!...%>这个里面啊,你怎么循环问问题啊?
      

  7.   

    所有在<%!...%>内创建的对象和变量都是持久的
    -----------------------------------------
    没试成功!
      

  8.   

    用来
    <%! 定义doGet属性与方法 %>
      

  9.   

    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不是,应该能看出他们的区别了吧
      

  10.   

    %@ 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当前这个根类扩充“方法”与“属性”
    如此而已!
      

  11.   

    <%!%>里面声明的变量是全局变量,而且只能用于声明
    <%%>声明的变量是局部的,可以用于写其他java代码
      

  12.   

    .jsp都会编译为class.
    你看一下jsp编译后生成的class就明白了.
    <%!%>声明的是类的属性
    <%%>中是内部方法的.
    最关键的是,class在jsp container中运行时,只有一个实例.