2012-03-24 31 views
0

當用戶通過他的userid登錄時,我正在提取username from database。所以如果userid可以說是mat正在記錄,那麼我在userhome.jsp中顯示Mathews這個名字。java類中的代碼錯誤

我有5個jsp頁面,在每個頁面上而不是寫一個sql查詢(通過他們的id從數據庫中獲取用戶名)我正在定義一個類Username.java並且想要將userName返回給每個jsp頁面。但是,這個錯誤即將到來:

`HttpSession session1 = request.getSession(false);` 

該錯誤告訴我要定義一個request class。我該如何解決它?

public class Username { 

    public String getUserName(Long userId) { 

     HttpSession session1 = request.getSession(false);// error is coming here for request   
     String userid = (String)session1.getAttribute("userid"); 
    // I want to fetch user name from database by the userid above 
    String userName = ""; 
    //all my sql code here 
    return userName; 
    } 
    } 

我寫了下面的代碼在jsp:

Username uName = new Username(); 
    uName.getUserName (userId); 
+0

您需要將當前請求的參考。另外:不要在JSP中編寫Java代碼。 http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – 2012-03-24 06:30:02

+0

最初我使用jsp,但會用jstl替換jsp。我怎樣才能獲得對當前'request'的引用?我會定義一個單獨的'request class'嗎? – saroj 2012-03-24 06:31:59

+0

你能發佈你的異常嗎?你可能想要使用request.getAttribute。很難理解你想要達到什麼目標,看起來你並不真正瞭解課程。理想的用戶名應該是類User內的字符串。 – Aubergine 2012-03-24 06:43:34

回答

0

隱含的對象「請求」只在你的JSP頁面可用。對於你正在定義的類,該對象不存在。你將不得不明確地定義它。

一個解決方案是在JSP頁面中獲取Session並將其作爲參數(可能是構造函數)傳遞給您的類。

對於例如,你可以在這樣的類定義構造函數: -

public class Username { 

    private HttpSession session; 

    Username(HttpSession session){ 
     this.session = session; 
    } 

    public String getUserName(Long userId) { 

     /* remove the following line */ 
     //HttpSession session1 = request.getSession(false);// error is coming here for request 

     String userid = (String)session.getAttribute("userid"); 

     // i want to fetch user name from database by the userid above 

     String userName = ""; 
     //all my sql code here 
     return userName; 
    } 

} 

然後修改JSP頁面,如代碼: -

Username uName = new Username(request.getSession()); 
uName.getUserName(userId); 
+0

讓我試試這個 – saroj 2012-03-24 07:56:00

+0

一個錯誤即將到來'在'uName.getUserName(userId)'中找不到符號:變量userId'''我認爲''長userId'是否使用,所以我用'userid/userName'替換'userId',但是同樣的錯誤出現 – saroj 2012-03-24 08:13:00

+0

您是否在JSP頁面中看到錯誤?仔細檢查聲明。特別是變量名稱。像userId和userid一樣。 – vaisakh 2012-03-24 08:19:50

0

在servlet:

User yourUser = new User (1,"Mathews"); 

request.setAttribute("userMegaUserOrWhateverYouCall", yourUser); // 

在JSP腳本:

<% User u = (User) request.getAttribute("userMegaUserOrWhateverYouCall"); // may need casting %> 

一些HTML代碼

<%= u.getUserName() %> 

更新:從你的班級判斷,你需要通過教程。你必須使用HttpServlet類。在servlet的

例子:http://www.servlets.com/jservlet2/examples/

還要考慮使用你的TA幫助,他們是專門在那裏幫助你爲你;-)

+0

我欣賞你的答案,但這不是我在找什麼,我想要在jsp頁面調用java類,servlet不存在於我的問題中。登錄後我通過用戶id從數據庫中獲取用戶名,所以這個sql語句代替了每次我想在java類中定義一個sql語句並想將用戶名返回給所有jsp頁面 – saroj 2012-03-24 07:10:44

+0

servlet是處理請求/響應。我不記得是否可以在JSP中實現,但JSP的唯一目的是呈現,而不是請求的控制流。您可以通過谷歌尋找jsp教程,並且隨處可以看到servlet,因爲無論如何JSP都被轉換爲servlet。 http://en.wikipedia.org/wiki/Java_Servlet – Aubergine 2012-03-24 07:22:37