我有一个jsp页面。页面以字符串形式显示请求的字段。
<% String token = ""+request.getParameter(); %>
在这个jsp页面中还有一个测试类。
<%!
public static String usetoken()
{
String testtoken = ""+token;
}
%>
这个usetoken类无法解析令牌字符串。我怎么解决这个问题?我需要在一个jsp页面内的类中调用一个字符串。
谢谢,
答案 0 :(得分:1)
首先,您可能知道,jsp将被编译为servlet。所有scriptlet代码都将“插入”到service()方法中,所有声明都将插入到servlet类中。所以,对于你的情况,我们会有类似的东西(简化):
public class FooServlet extends HttpServlet {
public static String useToken() {
String testtoken = ""+ token;
return testtoken;
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String token = ""+ request.getParameter();
}
}
如您所见,userToken()方法无法知道service()方法中的'token'局部变量。
此外,您无法在jsp声明中访问HttpServletRequest,因为它是service()方法的参数。
<强> BUT 强>
你可以使用JSTL这样的东西。您可以声明变量:
<c:set var="token" value="${requestScope.token}"/>
使用表达式语言(EL)访问jsp中的任何位置:
${token}
<小时/> 如果您不知道,请在jsp considered bad practice中编写scriptlet。你需要在外面的某个地方做业务逻辑并提供jsp视图。因此,请使用JSTL,您的自定义标签和EL。