2016-06-10 67 views
-2

的index.jsp我想請教一下會議JSP

<form action="a.jsp" method="post"> 
    <input type="text" name="a"> 
    <input type="radio" name="b" value="admin">admin <input type="radio" name="b" value="member">member 
    <input type="submit" value="c"> 
</form> 

a.jsp

<% String a=request.getParameter("a"); String b=request.getParameter("b"); 

session.setAttribute("a",a); session.setAttribute("b",b); 

response.sendRedirect("b.jsp"); %> 

b.jsp

<% 
String b = (String)session.getAttribute("b"); 
if(b!="") 
{ 
    if(b.equals("admin")) 
    { 
     out.print(session.getAttribute("a")); 
     out.print("this is admin"); 
    } 
    else if(b.equals("member")) 
    { 
     out.print(session.getAttribute("a")); 
     out.print("this is member"); 
    } 
} 
else 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is guest"); 
} 

%> 
<form action="d.jsp" method="post"> 
    <input type="submit" value="d" /> 
</form> 

d。 JSP

<% 
session.invalidate(); 
response.sendRedirect("index.jsp"); 
%> 

的代碼工作正常,但如果我不選擇adminmember值,它應該理想地去客串條件b.jsp頁,但什麼我得到是在第5行的錯誤。

錯誤 例外發生在線路處理JSP頁/c/b.jsp 5

2: String b = (String)session.getAttribute("b"); 
3: if(b!="") 
4: { 
5: if(b.equals("admin")) 
6: { 
7:  out.print(session.getAttribute("a")); 
8:  out.print("this is admin"); 
+0

1)你準確得到什麼錯誤?它可能是一個NullPointerException? 2)不要使用'!='比較字符串,使用'!(「」。equals(b))' – Thilo

+1

你是JSP新手?然後停止在您的JSP中編寫Java代碼,使用servlet並將一些數據發送到JSP。然後使用EL語言創建動態內容。你的代碼風格是編碼的舊版本,這根本不可讀;) 如果會話存在,如果不重定向到頁面,可以使用Filter Something類檢查每個請求。此過濾器在servlet之前執行。我會稍後再寫一個答案;) – AxelH

回答

0

b.jsp它似乎嘗試檢查會話映射的關鍵是b的條目,然後根據該值確定哪些類型的用戶正在查看該頁面。

的有問題的代碼是的scriptlet在b.jsp的第二行:

if (b!="") 
{ 

當在該會話的地圖爲b沒有條目,這種比較應該是true,引起其檢查管理員或代碼成員將被執行。這反過來將導致bb.equals("admin")等比較中被取消引用,這將導致NullPointerException。我相信您的意圖是檢查會話映射中是否存在b的任何條目。如果沒有找到條目,那麼你將把用戶當作客人。如果在會話中沒有輸入密鑰b,則會返回null,而不是空字符串。所以,你應該檢查null

if (b != null) 
{ 

或者,如果你想也把一個空字符串值作爲一個客人,那麼你可以嘗試:

if (b != null && !b.equals("")) 
{ 
+0

非常感謝你,先生 –

0

異常原因:

當且僅當未設置參數值時,您的b.jsp調用nullPointerException。

如上所述,未經選擇任何單選按鈕的提交表單必須視爲來賓。

因此,這裏是2個解決方法:

解決方案1:

相反

的檢查參數爲

if(b!="") {

下面的代碼工作正常,更換你的灣jsp with this

<% 
String b = (String)session.getAttribute("b"); 
if(b==null) 
{ 
out.print(session.getAttribute("a")); 
out.print("this is guest"); 
} 
else { 
if(b.equals("admin")) 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is admin"); 
} 
else if(b.equals("member")) 
{ 
    out.print(session.getAttribute("a")); 
    out.print("this is member"); 
} 
} 
%> 
<form action="d.jsp" method="post"> 
<input type="submit" value="d" /> 
</form> 

解決方案2:

認沽客人單選鈕也出現在形式,使得客戶的用戶會直接選擇「客戶」選項。 (因爲總是會設置參數「b」的值,所以避免出現nullPointerException)。