将值从jsp传输到servlet时出现空指针异常

时间:2012-12-29 15:40:35

标签: java jsp servlets

我的项目概念取决于控件将转移到相关jsp页面的下拉值。

我创建了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);
        }
    }
}

2 个答案:

答案 0 :(得分:4)

你的名字和价值令人困惑。您需要<select name="lang">,您的选项应该是<option value="spring">

答案 1 :(得分:1)

要正确使用它,你必须重新编写像bellow

这样的选择
<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了解详情

另请注意,在调用s

之前,最好先检查equals是否为null
if(s !=null) {
// do my checks
}