【问题标题】:Are methods legal inside JSP scriptlet?JSP scriptlet 中的方法合法吗?
【发布时间】:2011-04-15 16:58:36
【问题描述】:
我知道它不推荐,我应该使用标签库等。
但我还是想知道在 JSP 脚本中声明方法是否合法:
<%
public String doSomething(String param) {
//
}
String test = doSomething("test");
%>
这合法吗?我收到了一些似乎不合适的奇怪编译错误(如a ; is expected)。谢谢。
【问题讨论】:
标签:
java
jsp
methods
scriptlet
【解决方案1】:
你需要使用声明语法(<%! ... %>):
<%!
public String doSomething(String param) {
//
}
%>
<%
String test = doSomething("test");
%>
【解决方案2】:
了解jsp的工作原理:整个JSP被Tomcat转换成Java类。这个 Java 类不过是 Servlet。因此,您将在最后运行 servlet。
现在考虑您正在编写一个 Jsp 代码,该代码打印 2 个数字的总和,并传入一个方法
<body>
<%!
public int add(int a,int b)
{
return a+b;
}
%>
<%
int k;
k=add(5,6);
%>
<%=
k
%>
</body>
因此,如果您要编写在 servlet 中打印出 2 个数的总和的相同代码,您可能会在 doGet() 方法中编写它。
您会收到错误的原因是您在另一个方法中定义一个方法(这违反了方法定义的规则)。
因此我们将方法放在定义标签中,以便 if 形成一个新方法