首先,你可能知道,一個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'是一個局部變量,不存在於定義的上下文中(即'<%! ... %>'區塊內) –