2017-09-15 50 views
0

我有一個jsp頁面。頁面有一個請求的字段作爲字符串。JSP字符串到Java類

<% String token = ""+request.getParameter(); %> 

在這個jsp頁面中也有一個測試類。

<%! 
     public static String usetoken() 
      { 
       String testtoken = ""+token; 
      } 

%> 

此usetoken類不能解決令牌字符串。我該如何解決這個問題?我需要在一個jsp頁面內的類中調用一個字符串。

謝謝,

+0

我希望這對你有用https://stackoverflow.com/questions/33183108/how-to-print-a-java-string-in-a-jsp-file – ottis79

+0

@ ottis79不,它不是。請認真閱讀。我可以這樣使用。但我無法將標記字符串插入到類中。 – Emin

+0

'token'是一個局部變量,不存在於定義的上下文中(即'<%! ... %>'區塊內) –

回答

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()方法的局部變量。

此外,您不能在您的jsp聲明中訪問HttpServletRequest,因爲它是service()方法的參數。

您可以使用JSTL這樣的事情。使用表達式語言(EL)在你的JSP中的任何地方

<c:set var="token" value="${requestScope.token}"/> 

,並獲得:您可以聲明變量

${token} 


如果你不知道,寫你的JSP considered bad practice內部小腳本。你需要在外面的某個地方做業務邏輯,並提供視圖爲jsp。所以使用JSTL,您的自定義標籤和EL。