request.getRequestDispatcher("../empinfo.jsp").forward(request, respons)空指针异常

bengniaoxianfei 2016-07-27 02:53:20
由jsp提交的表单数据,传递给servlet处理,servlet处理完后返回原来的jsp界面,弹出操作成功或失败的提示框。现在报错说有空指针,不知道该怎么办,下面是我的代码:

在empinfo.jsp页面提交表单数据:
<form method="post" action="../emp_addservlet">
<table width="327" height="320" border="1" align="center">
<tr>
<td width="143" align="center" valign="middle">工号</td>
<td width="168">
<label for="add_emp_no"></label>
<input type="text" name="add_emp_no" id="add_emp_no" />
</td>
</tr>
<tr>
<td align="center" valign="middle">姓名</td>
<td><input type="text" name="add_emp_name" id="add_emp_name" /></td>
</tr>
<tr>
<td align="center" valign="middle">性别</td>
<td><input type="text" name="add_emp_gender" id="add_emp_gender" /></td>
</tr>
<tr>
<td align="center" valign="middle">电话</td>
<td><input type="text" name="add_emp_tell" id="add_emp_tell" /></td>
</tr>
<tr>
<td align="center" valign="middle">职务</td>
<td><input type="text" name="add_emp_job" id="add_emp_job" /></td>
</tr>
<tr>
<td align="center" valign="middle">部门编号</td>
<td><input type="text" name="add_dep_no" id="add_dep_no" /></td>
</tr>
<tr>
<td align="center" valign="middle">入职日期</td>
<td><input type="text" name="add_emp_hiredata" id="add_emp_hiredata" /></td>
</tr>
<tr>
<td height="41" align="center" valign="middle">
<input type="reset" name="rewrite" id="rewrite" value="重置" />
</td>
<td align="center" valign="middle">
<input type="submit" name="add_button" id="add_button" value="确定" />
</td>
</tr>
</table>
</form>

在servlet中接收表单数据,插入数据库,servlet的代码:
public class emp_addservlet extends HttpServlet {

/**
* Constructor of the object.
*/
public emp_addservlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//设置请求字符编码格式
response.setContentType("text/html;charset=UTF-8");
PrintWriter outPrintWriter = response.getWriter();
/**以下是获得表单提交过来的值*/
String emp_no =request.getParameter("add_emp_no");
String emp_name = request.getParameter("add_emp_name");
String emp_gender= request.getParameter("add_emp_gender");
String emp_tell =request.getParameter("add_emp_tell");
String emp_job = request.getParameter("add_emp_job");
String dep_no= request.getParameter("add_dep_no");
String emp_hirdata = request.getParameter("add_emp_hiredata");
/**以下代码将获得的表单值封装到用户信息对象中*/
employeinfo employer = new employeinfo();
employer.setNo(emp_no);
employer.setName(emp_name);
employer.setGender(emp_gender);
employer.setTell(emp_tell);
employer.setJob(emp_job);
employer.setDep_no(dep_no);
employer.setHiredata(emp_hirdata);
/**一下代码判断表单值是否合法*/
if(emp_no==null||emp_name==null)
return;
if(emp_no.equals("")||emp_name.equals(""))
{return;}
/*一下是调用数据库操作*/
int num = addempinfodao.getInstance().insertemployer(employer);//插入信息
/**一下代码判断表单值是否合法*/
if(emp_no==null||emp_name==null)
return;
if(emp_no.equals("")||emp_name.equals(""))
{return;}
/*一下是调用数据库操作*/
int num = addempinfodao.getInstance().insertemployer(employer);//插入信息
/*以下是判断数据库操作结果,成功插入需要在原JSP页面弹出插入成功的提示框,插入失败弹出失败的提示框*/
String message ="false";
if(num<0){
System.out.println("插入失败");
message="false";
request.setAttribute("insertalter",message);
request.getRequestDispatcher("../user/empinfo.jsp").forward(request, response);
}
else{
System.out.println("插入成功");
message ="true";
request.setAttribute("insertalter",message);
request.getRequestDispatcher("../empinfo.jsp").forward(request, response); //这是第81行
}
}
public void init() throws ServletException {
}
}

在原来的empinfo.jsp中添加如下代码:
<script type="text/JavaScript">
<%
String message=(String)request.getAttribute("message");
if("true".equals(message)){
%>
alert("添加成功!");
<%
}
%>

报错如下:
插入成功
2016-7-27 14:42:26 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet emp_addservlet threw exception
java.lang.NullPointerException
at hrmanager.servlet.emp_addservlet.doPost(emp_addservlet.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
...全文
329 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大雨将至 2016-07-28
  • 打赏
  • 举报
回复
引用 6 楼 bengniaoxianfei 的回复:
[quote=引用 5 楼 autfish 的回复:] 显然你加多了目录层次 request.getRequestDispatcher(request.getContextPath() + "/user/empinfo.jsp").forward(request, response); 就可以了 /hrsystem/ 对应的是WebRoot/ 目录
用了你的方法改了路径,还是报错404: [/quote] 呃,好久不搞Servlet这套,记混了 request.getRequestDispatcher("/user/empinfo.jsp").forward(request, response); 这样应该就可以了
bengniaoxianfei 2016-07-28
  • 打赏
  • 举报
回复
引用 8 楼 qq_35565386 的回复:
if(emp_no.equals("")||emp_name.equals("")) {return;} emp_no如果为空,他怎么能调equals()方法? 你需要写成("").equals(emp_no);
[quote=引用 8 楼 qq_35565386 的回复:] if(emp_no.equals("")||emp_name.equals("")) {return;} emp_no如果为空,他怎么能调equals()方法? 你需要写成("").equals(emp_no);[/quote 这个问题还真没注意到,谢谢提醒啊
bengniaoxianfei 2016-07-28
  • 打赏
  • 举报
回复
可以跳转了!太感谢了
qq_35565386 2016-07-28
  • 打赏
  • 举报
回复
if(emp_no.equals("")||emp_name.equals("")) {return;} emp_no如果为空,他怎么能调equals()方法? 你需要写成("").equals(emp_no);
bengniaoxianfei 2016-07-27
  • 打赏
  • 举报
回复
会不会是我的web.xml配置有问题?跪求指点
bengniaoxianfei 2016-07-27
  • 打赏
  • 举报
回复
引用 5 楼 autfish 的回复:
显然你加多了目录层次

request.getRequestDispatcher(request.getContextPath() + "/user/empinfo.jsp").forward(request, response);
就可以了
/hrsystem/ 对应的是WebRoot/ 目录

用了你的方法改了路径,还是报错404:
大雨将至 2016-07-27
  • 打赏
  • 举报
回复
显然你加多了目录层次 request.getRequestDispatcher(request.getContextPath() + "/user/empinfo.jsp").forward(request, response); 就可以了 /hrsystem/ 对应的是WebRoot/ 目录
bengniaoxianfei 2016-07-27
  • 打赏
  • 举报
回复
引用 3 楼 autfish 的回复:
request.getContextPath()得到的是项目的根目录,例如
http://localhost:8080/examples/
得到的是/examples

你可以改成
request.getRequestDispatcher(request.getContextPath() + "/xxx/user/empinfo.jsp").forward(request, response);
不知道你实际目录是什么样的,你自己替换 /xxx 部分

我的目录是这样的

按照你的方法改了,反而报了404错误,之前不报404,报空指针异常错误
大雨将至 2016-07-27
  • 打赏
  • 举报
回复
request.getContextPath()得到的是项目的根目录,例如 http://localhost:8080/examples/ 得到的是/examples 你可以改成 request.getRequestDispatcher(request.getContextPath() + "/xxx/user/empinfo.jsp").forward(request, response); 不知道你实际目录是什么样的,你自己替换 /xxx 部分
bengniaoxianfei 2016-07-27
  • 打赏
  • 举报
回复
刚开始学java web 开发,各种混乱,这些都是这几天看
引用 1 楼 autfish 的回复:
jsp路径不对吧,你可以改成以request.getContextPath()开始的完整url
怎么改啊?刚开始学。能给出代码吗?
大雨将至 2016-07-27
  • 打赏
  • 举报
回复
jsp路径不对吧,你可以改成以request.getContextPath()开始的完整url

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧