jsp+servlet写的小程序出现了500错误

问题描述

packagecn.cp9.homework.demo;importjava.io.IOException;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Map;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.jspsmart.upload.*;publicclassEmpServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("GBK");SmartUploadsmart=null;Stringstatus=request.getParameter("status");//万一接收不到,在使用smartupload接收一次if(status==null||"".equals(status)){try{smart=newSmartUpload();smart.initialize(super.getServletConfig(),request,response);smart.upload();status=smart.getRequest().getParameter("status");}catch(Exceptione){e.printStackTrace();}}if(!(status==null||"".equals(status))){if("insert".equals(status)){this.insert(request,response,smart);}/*if("update".equals(status)){this.update(request,response,smart);}if("delete".equals(status)){this.delete(request,response);}if("show".equals(status)){this.show(request,response);}*/}}publicvoidinsert(HttpServletRequestrequest,HttpServletResponseresponse,SmartUploadsmart)throwsServletException,IOException{//Stringpages="../../../errors.jsp";Stringpages=null;try{Stringempno=smart.getRequest().getParameter("empno");Stringename=smart.getRequest().getParameter("ename");Stringjob=smart.getRequest().getParameter("job");java.util.Datehiredate=newSimpleDateFormat("yyyy-MM-dd").parse(smart.getRequest().getParameter("hiredate"));doublesal=Double.parseDouble(smart.getRequest().getParameter("sal"));doublecomm=Double.parseDouble(smart.getRequest().getParameter("comm"));Stringnote=smart.getRequest().getParameter("note");Empemp=newEmp();emp.setEmpno(empno);emp.setEname(ename);emp.setJob(job);emp.setHiredate(hiredate);emp.setSal(sal);emp.setComm(comm);emp.setNote(note);StringtempMgr=smart.getRequest().getParameter("mgr");emp.setMgr(tempMgr);inttempDeptno=Integer.parseInt(smart.getRequest().getParameter("deptno"));emp.setDeptno(tempDeptno);//设置关系StringfileName=null;StringfilePath=null;if(smart.getFiles().getSize()>0){//有文件上传,则自动生成新的图片名称IPTimeStampits=newIPTimeStamp(request.getRemoteAddr());fileName=its.getIPTimeRand()+"."+smart.getFiles().getFile(0).getFileExt();filePath=this.getServletContext().getRealPath("/")+"uploadfile"+java.io.File.separator+fileName;emp.setPhoto(fileName);}else{emp.setPhoto("nophoto.jpg");}if(DAOEmpFactory.getIEmpDaoInstance().insert(emp)){if(smart.getFiles().getSize()>0){smart.getFiles().getFile(0).saveAs(filePath);//保存文件}pages="success.jsp";}}catch(Exceptione){e.printStackTrace();}request.getRequestDispatcher(pages).forward(request,response);}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{this.doGet(request,response);}}

<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>insert</title></head><body><formaction="EmpServlet"method="post"><table><tr><td>增加雇员信息</td></tr><tr><td>雇员编号:</td><td><inputtype="text"name="empno"></td></tr><tr><td>雇员姓名:</td><td><inputtype="text"name="ename"></td></tr><tr><td>雇员工作:</td><td><inputtype="text"name="job"></td></tr><tr><td>雇员日期:</td><td><inputtype="text"name="hiredate"></td></tr><tr><td>雇员工资:</td><td><inputtype="text"name="sal"></td></tr><tr><td>雇员奖金:</td><td><inputtype="text"name="comm"></td></tr><tr><td>雇员上级:</td><td><inputtype="text"name="mgr"></td></tr><tr><td>雇员部门:</td><td><inputtype="text"name="deptno"></td></tr><tr><td>雇员照片:</td><td><inputtype="file"name="photo"></td></tr><tr><td>雇员简介:</td><td><textareaid="note"name="note"style="width:650px;height:200px;"></textarea></td></tr><tr><td><inputtype="hidden"name="status"value="insert"></td><td><inputtype="submit"value="提交"></td><td><inputtype="reset"value="重置"></td></tr></table></form></body></html>

createtableemp(empnovarchar(8)primarykey,enamevarchar(10),jobvarchar(10),hiredatedatetime,salnumeric(10,2),commnumeric(10,2),mgrvarchar(8),deptnoint,photovarchar(100),notevarchar(100),)

通过jsp页面提交后,就会出现500错误。求大神指点~~为什么会出现那个空指针异常?通过下面这个测试又可以加入相应的雇员信息,packagecn.cp9.homework.demo;importjava.util.Date;importjava.util.Calendar;publicclassTest{publicstaticvoidmain(String[]args){Empemp=newEmp();emp.setEmpno("110210");emp.setEname("FiShelly");emp.setJob("ADC");emp.setSal(110210);emp.setComm(0210);emp.setDeptno(0210);emp.setMgr("Shelly");emp.setPhoto("love.jpg");emp.setNote("。。。.");emp.setHiredate(newDate());try{System.out.println(DAOEmpFactory.getIEmpDaoInstance().insert(emp));}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}

很纠结,求大神指点~~~~

解决方案

解决方案二:
会用debug模式不?打断点看具体哪边nullpointer然后再判断页面name是否与后台一致
解决方案三:
pages="success.jsp";这句话没有执行导致request.getRequestDispatcher(pages).forward(request,response);的pages为null
解决方案四:
2楼说的有道理,断点if(DAOEmpFactory.getIEmpDaoInstance().insert(emp)){if(smart.getFiles().getSize()>0){smart.getFiles().getFile(0).saveAs(filePath);//保存文件}pages="success.jsp";}看代码有没有走到这个if内,如果没有走进来那么pages就是null了
解决方案五:
引用2楼sc6231565的回复:

pages="success.jsp";这句话没有执行导致request.getRequestDispatcher(pages).forward(request,response);的pages为null

那请问下为什么会没有执行?要怎么改?
解决方案六:
87--93行:if(DAOEmpFactory.getIEmpDaoInstance().insert(emp)){if(smart.getFiles().getSize()>0){smart.getFiles().getFile(0).saveAs(filePath);//保存文件}pages="success.jsp";}-------------------------------49行://Stringpages="../../../errors.jsp";------------------------------DAOEmpFactory.getIEmpDaoInstance().insert(emp)有可能是这个emp对象没有插入到数据库,所以没进入if(){}中。也有可能是进入了if(){},是pages="success.jsp"不对。即页面不在这个目录下,找不到页面,也是空指针。这个猜测是基于49行的注释信息。----建议:Empemp=newEmp();emp.setEmpno(empno);emp.setEname(ename);emp属性赋值,应该写到构造里面。这里只要一句Empemp=newEmp(no,name,....)就可以,我觉得这样比较清晰。String对象赋初值用null有待商榷。88-89行也有点问题,是先保存对象后保存文件吗。另外,初学就不要用工厂了,直接JDBC好些。
解决方案七:
引用3楼magi1201的回复:

2楼说的有道理,断点if(DAOEmpFactory.getIEmpDaoInstance().insert(emp)){if(smart.getFiles().getSize()>0){smart.getFiles().getFile(0).saveAs(filePath);//保存文件}pages="success.jsp";}看代码有没有走到这个if内,如果没有走进来那么pages就是null了

怎么判断有没有走进来?
解决方案八:
引用2楼sc6231565的回复:

pages="success.jsp";这句话没有执行导致request.getRequestDispatcher(pages).forward(request,response);的pages为null


解决方案九:
引用7楼wyx100的回复:

Quote: 引用2楼sc6231565的回复:
pages="success.jsp";这句话没有执行导致request.getRequestDispatcher(pages).forward(request,response);的pages为null

为什么会没执行?是哪里有问题么?
解决方案十:
引用8楼u013246140的回复:

Quote: 引用7楼wyx100的回复:
Quote: 引用2楼sc6231565的回复:
pages="success.jsp";这句话没有执行导致request.getRequestDispatcher(pages).forward(request,response);的pages为null

为什么会没执行?是哪里有问题么?

打个断点就知道了
解决方案十一:
会用debug模式不?打断点看具体哪边nullpointer然后再判断页面name是否与后台一致

时间: 2024-09-03 21:09:22

jsp+servlet写的小程序出现了500错误的相关文章

visual studio 2008-看了个vc6写的小程序用vc2008写就出错了,请帮我看看出错在哪里?

问题描述 看了个vc6写的小程序用vc2008写就出错了,请帮我看看出错在哪里? 我在vc2008里写了个简单的DLL,并希望调用它,结果出错了,不知道出错在哪里,希望知道的朋友指点,谢谢! dll代码: int myadd(int a, int b)//自定义的函数,返回俩数之和 { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); return a+b; } ; myadd.def : 声明 DLL 的模块参数. LIBRARY "myadd&q

context-小白求大神帮忙,刚写的小程序

问题描述 小白求大神帮忙,刚写的小程序 [2014-12-21 16:35:58,846] main INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started [2014-12-21 16:35:58,908] main ERROR org.springframework.web.context.ContextLoader - Context in

vs2008-c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊

问题描述 c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊 c++怎么写一个小程序 让他能自动发邮件,用什么接口 或者是类啊 解决方案 http://blog.csdn.net/ybjx111/article/details/7031055 解决方案二: http://download.csdn.net/detail/glc22/4128319http://blog.csdn.net/ybjx111/article/details/7031055http://blog.csdn.

学习servlet,写一个简单的Helloword出现404错误

问题描述 学习servlet,写一个简单的Helloword出现404错误 解决方案 不需要 /servlet 解决方案二: 解决方案三: web.xml内容贴下来看看. 可以参考 我写的http://blog.csdn.net/evankaka/article/details/45151569 解决方案四: url里把[/Hello]改成[/HelloServlet] 和你Web.xml里配置的url-pattern一样. 解决方案五: 一个简单的Servlet 解决方案六: 采用servle

JSP中内建exception对象时出现500错误的解决方法_JSP编程

本文实例讲述了JSP中内建exception对象时出现500错误的解决方法.分享给大家供大家参考,具体如下: 尝试使用JSP的内建exception对象,写了下面三个文件.思路很简单,文件index若提交字串为空,则get抛出异常,交由error.jsp处理.但实际却不能正常运行,会出现IE的500错误页面.环境为Tomcat 5.5,IE6.0. 在sun的论坛上有人贴出了原因,是IE的某个设置.Tomcat5.0以后的版本error page在处理时会返回error code 500.而IE

【leveldb果断学习系列-1】模仿写个小程序体验一下

从今日起开始学习google大神开发的高性能key-value数据库leveldb,版本1.12,并不定期地分享学习心得.之所以取名为果断学习,是有点给自己施压的意思,其实很早就想学了,只是由于时间关系拖到现在.如今要狠下心来把此开源技术吃透,并不一定要懂得全部源码,但要知道它是怎么设计的,这一点为什么要这么做,设计者是怎么想的等等,这才是真正应该学习的地方. 基本介绍网上都有,我就不说太多了.虽然个人学习免不了要先学习别人的,但既然自己要做,就要做得个性化,把别人东西直接复制粘贴这种事,懒得做

菜鸟求助,做满天星小程序,总是提示错误

问题描述 就这个错误,应该怎么改正才能实现最终效果 解决方案 解决方案二:试试把这句放在main方法的外面.另外推荐你用MyEclipse解决方案三:因为你的内部类不是静态的,不能在main方法内使用,改为staticclassMyPanelextendsPanel解决方案四:或者将MyPanelshen作为外部类解决方案五:MyPanel你声明的是内部类,把成名改下就好了.staticclassMyPanel这样声明就可以用了.解决方案六:两种方法:1.把MyPanel类移出Test类(推荐使

java-jsp+servlet写了一个简单的注册,但是出现找不到页面

问题描述 jsp+servlet写了一个简单的注册,但是出现找不到页面 小菜鸟刚写了一个简单的注册页面,但是配置好servlet以后出现找不到页面,找了好长时 间没有发现问题在哪里,希望有明白的给解释解释 解决方案 你写的是相对路径 ,一般用绝对路径 form 在 项目/page 下找相应页面,你的servlet 是映射在 项目/ 下的 你可以 在form 的action 改为 ../addUser 试试 解决方案二: 看看这个: 路径总结: 路径分为两种情况: 1.客户端路径 ==> 给浏览器

广告过滤小程序

这几天,在使用某个软件试用版的过程中,经常弹出广告,真是不甚烦恼,如何写个小程序把他去掉呢?请和我一起来吧! 思路是这样的:首先需要知道要消灭窗体的标题(比如MyWindow),然后获取窗体的句柄,判断它的标题是否和需要消灭的窗体的标题一样,如果是的话将它关闭.道理很简单,实现也不难,看看下面的代码: CPoint MP; char str[256]; HWND hWnd; GetCursorPos(&MP); hWnd = ::WindowFromPoint(MP); ::SendMessag