2012-12-29 96 views
-1

我的項目概念取決於控件將傳送到相關jsp頁面的下拉值。將jsp中的值傳遞給servlet時的空指針異常

我創建4下拉值

1.andriod

2.struts

3.spring

4.hibernate

和4 jsp頁面

1 .andriod.jsp

2.struts.jsp

3.spring.jsp

4.hibernate.jsp

,如果我選擇的Andriod並點擊提交按鈕意味着控制將轉移到andriod.jsp頁同樣其他價值也轉移,

我的問題是

如果我選擇的Andriod並點擊提交按鈕,它總是顯示空指針異常...

請任何人解決我的問題。

我創建

1.jsp頁面頁(Filename.jsp)

2.Servlet頁(CatServ.java)

NewFile.jsp

<body> 
<form action="test" method="post"> 
<table> 
<tr> 
<td> 
Select the category</td> 
<td> 
<select> 
    <option name="andriod"  value="lang">Andriod</option> 
    <option name="java"   value="lang">Java</option> 
    <option name="struts"   value="lang">Struts</option> 
    <option name="spring"  value="lang">Spring</option> 
    <option name="hybernate" value="lang">Hybernate</option> 
</select> 
</td> 
</tr> 
<tr> 
<td><center> 
<input type="submit" value="Submit"></center> 
</td> 
</tr> 
</table> 
</form> 
</body> 

CatServ .java

package container; 
import java.io.IOException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class CatServ 
*/ 
@WebServlet("/CatServ") 
public class CatServ extends HttpServlet 
{ 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     // TODO Auto-generated method stub 
     String s=request.getParameter("lang"); 
     System.out.println(s); 

     if(s.equals("andriod")) 
     { 
      RequestDispatcher rd=request.getRequestDispatcher("AndriodServ.jsp"); 
      rd.forward(request, response); 
     } 
     else if(s.equals("java")) 
     { 
      RequestDispatcher rd=request.getRequestDispatcher("JavaServ.jsp"); 
      rd.forward(request, response); 
     } 
     else if(s.equals("struts")) 
     { 
      RequestDispatcher rd=request.getRequestDispatcher("StrutsServ.jsp"); 
      rd.forward(request, response); 
     } 
     else if(s.equals("spring")) 
     { 
      RequestDispatcher rd=request.getRequestDispatcher("SpringServ.jsp"); 
      rd.forward(request, response); 
     } 
     else if(s.equals("hibernate")) 
     { 
      RequestDispatcher rd=request.getRequestDispatcher("Hybernate.jsp"); 
      rd.forward(request, response); 
     } 
    } 
} 
+0

我張貼我的html代碼,但我會禁用,請任何一個啓用我的html代碼,我不知道如何啓用它... – Giri

+1

將代碼放在代碼塊中(帶有大括號的按鈕)。此外,不要忘記正確格式化您的代碼。 – Makoto

+1

閱讀,然後給我們例外的完整堆棧跟蹤。它會準確告訴你錯誤發生在哪個文件的哪一行。錯誤不僅僅是紅旗。他們提供有意義的錯誤消息,供開發人員(YOU)閱讀。 –

回答

4

你在混淆名稱和價值。你需要<select name="lang">,你的選擇應該像<option value="spring">

1

要正常工作,它必須重新寫你選擇像波紋管

<select name="lang"> 
<option value="andriod">Andriod</option> 
<option value="java">Java</option> 
<option value="struts">Struts</option> 
<option value="spring">Spring</option> 
<option value="hybernate">Hybernate</option> 
</select> 

你可以檢查this更多信息

還要注意它是很好的做法通話equals

前檢查 s爲空
if(s !=null) { 
// do my checks 
} 
+0

如果您顛倒了順序(即''android「.equals(s)'),那麼您將不需要檢查null;如果's'確實爲空,則等於將評估爲假。 – Makoto