まず、JSPはサーブレットにコンパイルされます。すべてのスクリプトレットコードはservice()メソッドに "挿入"され、すべての宣言はサーブレットクラスに挿入されます。だから、あなたの状況に、私たちはこのような何か(簡体字)があります:あなたが見たよう
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にアクセスすることはできません。
しかし、あなたはこのような何かのためにJSTLを使用することができます
。あなたは、JSP
considered bad practice内のスクリプトレットを書いて、わからない場合
${token}
:式言語(EL)を使用して
<c:set var="token" value="${requestScope.token}"/>
どこでもあなたのJSPでアクセスして:あなたは、変数を宣言することができます。あなたはビジネスロジックを外部のどこかで行い、jspとしてビューを提供する必要があります。だから、JSTL、あなたのカスタムタグとELを使用してください。
これはあなたにとって有益です。https://stackoverflow.com/questions/33183108/how-to-print-a-java-string-in-a-jsp-file – ottis79
@ ottis79いいえ、そうではありません。軽くお読みください。私はそのように使うことができます。しかし、私はクラスにトークン文字列を挿入することはできません。 – Emin
'token'はローカル変数で、定義コンテキストには存在しません(つまり、 '<%! ... %>'ブロック内) –