为什么我收到此错误?HTTP状态500 - Servlet执行引发了异常?

时间:2014-02-12 07:33:20

标签: java mysql servlets post

我创建了数据库,表名是1.employee(master),2.department。我使用SQL内部联接方法以连接格式显示结果。然后我正在尝试更新员工表,我遇到了这种错误。

错误是:

>     HTTP Status 500 - Servlet execution threw an exception
>     
>     type Exception report
>     
>     message Servlet execution threw an exception
>     
>     description The server encountered an internal error that prevented it from fulfilling this request.
>     
>     exception 
>     
>     javax.servlet.ServletException: Servlet execution threw an exception
>     
>     root cause 
>     
>     java.lang.Error: Unresolved compilation problem:      

>     setDep_id cannot be resolved or is not a field
>     
>   com.controller.UserController.doPost(UserController.java:85)    
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

在错误中跟随以下行:

1.controller.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
    User user=new User();
    user.setEmpName(request.getParameter("empName"));
    user.setEmpAddress(request.getParameter("empAddress"));
    user.setDep_id(request.getParameter("dep_id"));

    String emp_id=request.getParameter("emp_id");
        if(emp_id!=null && !emp_id.toString().equalsIgnoreCase(""))
        {
            user.setEmp_id(Integer.parseInt(emp_id));
            dao.updateUser(user);
        }
        else
        {
            dao.addUser(user);
        }
    RequestDispatcher view=request.getRequestDispatcher(EMPLOYEE_LIST);
    request.setAttribute("users", dao.getAllUsers());
    view.forward(request, response);
    }

2.User.java:

package;
class

    public int dep_id;

    public int getDep_id()
    {
        return dep_id;
    }
    public void setDep_id(int dep_id)
    {
        this.dep_id=dep_id;
    }

    public String toString()
    {
        return "User[emp_id="+emp_id+"]";
    }

4 个答案:

答案 0 :(得分:1)

因为在这里:

user.setDep_id=request.getParameter("dep_id");

您正在写入不存在的字段。你确实定义了一个setter:

user.setDep_id(request.getParameter("dep_id"));

答案 1 :(得分:1)

请注意,只要存在HTTP状态500状态,就会在某处编写错误的代码,因此servlet无法编译它。 它代码你没有将值传递给方法。

您正在将字符串传递给setDep_id(),    你必须先将字符串转换为整数。

int depId = Integer.parseInt(request.getParameter("dep_id"))
user.setDep_id(depId );

答案 2 :(得分:0)

如果您先编译了代码,那么您之前会遇到错误(他与servlet或HTTP状态代码无关)。

答案 3 :(得分:0)

您无法通过直接指定值来设置Dep_id

您必须将值传递给setDep_id方法:

//first you need to cast to int because request.getParameter("dep_id") return a String
int depId = Integer.parseInt(request.getParameter("dep_id"))
user.setDep_id(depId );