首先,你可能知道,一个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()方法的局部变量。
此外,您不能在您的jsp声明中访问HttpServletRequest,因为它是service()方法的参数。
但
您可以使用JSTL这样的事情。使用表达式语言(EL)在你的JSP中的任何地方
<c:set var="token" value="${requestScope.token}"/>
,并获得:您可以声明变量
${token}
如果你不知道,写你的JSP
considered bad practice内部小脚本。你需要在外面的某个地方做业务逻辑,并提供视图为jsp。所以使用JSTL,您的自定义标签和EL。
我希望这对你有用https://stackoverflow.com/questions/33183108/how-to-print-a-java-string-in-a-jsp-file – ottis79
@ ottis79不,它不是。请认真阅读。我可以这样使用。但我无法将标记字符串插入到类中。 – Emin
'token'是一个局部变量,不存在于定义的上下文中(即'<%! ... %>'区块内) –