JSP scriptlet中的方法是否合法?

bba*_*bba 30 java methods jsp scriptlet

我知道它不推荐,我应该使用标签库等.

但是我仍然想知道在JSP scriplet中声明方法是否合法:

<%
   public String doSomething(String param) {
      //
   }

   String test = doSomething("test");

%>
Run Code Online (Sandbox Code Playgroud)

这合法吗?我得到一些a ; is expected似乎不合适的奇怪的编译错误(如).谢谢.

axt*_*avt 53

您需要使用声明语法(<%! ... %>):

<%! 
   public String doSomething(String param) { 
      // 
   } 
%>
<%
   String test = doSomething("test"); 
%> 
Run Code Online (Sandbox Code Playgroud)

  • 我想添加http://download.oracle.com/javaee/5/tutorial/doc/bnajq.html (4认同)

Sau*_*ain 15

理解jsp的工作:Tomcat将整个JSP转换为Java类.这个Java类只不过是Servlet.因此,最终将运行的是servlet.

现在考虑你正在编写一个Jsp代码,它打印一个方法中传递的2个nos的总和

<body>
  <%!               
  public int add(int a,int b)           
          {                                     
    return a+b;
          } 
   %>

  <% 
  int k;                
      k=add(5,6);
  %>

  <%=                   
      k                     
  %>

</body>
Run Code Online (Sandbox Code Playgroud)

因此,如果您要编写在servlet中打印出2个n的总和的相同代码,您可能会在doGet()方法中编写它.

您得到错误的原因是您在另一个方法中定义了一个方法(违反了方法定义的规则).

因此,我们将该方法放在定义标记中,以便在形成新方法时使用