当前位置: 首页 >> 程序设计 >> 调试Servlet代码
 

调试Servlet代码

作者:      来源:http://blog.csdn.net/lijackly_lingtu     发表时间:2007-01-11     浏览次数:      字号:    

servlet中的跳转

    今天写个发布公告的系统时,写了个Servlet的跳转,发现了几个异常情况:

      1、要注意在Jsp页面的Form表单中,要判断得到的数据的情况,

                          如:String title=request.getParameter("title");

                                 if(title.equals(" ")){}  <==============>而不是if(title==""){}

        2、出现IllegalStateException异常,还有空指针异常;

      3、报错:Cannot forward after response has been committed

          (  因为我是在if------else代码里的:所以出现了现在的异常情况。)

           处理方法:在request.getRequestDispatcher(errorJsp).forward(request,response);后加个  return;

         基于以上的情况,可以用另外一种方式:(以下是我的全部代码)

 public class AdminPublishGongGaoServlet extends HttpServlet {  
 
 private static String errorJsp="/admin/gonggaoError.jsp";
 private static String successJsp="/admin/publishSuccess.jsp";
 
 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  
  RequestDispatcher rdsp = null;
  response.setCharacterEncoding("GBK"); 
  String title=request.getParameter("title");
  String content=request.getParameter("content");
  String manager=(String)request.getSession().getAttribute("adminUserNa"); 
  
  if(title.equals("")){
   String msg="标题不能为空";
   request.setAttribute("GongGaoMsg",msg );
   request.getRequestDispatcher(errorJsp).forward(request, response);
   rdsp = request.getRequestDispatcher(errorJsp);     //这里不先提交

  }
  if(content.equals("")){
   String msg="公告内容不能为空";
   request.setAttribute("GongGaoMsg",msg );
   rdsp = request.getRequestDispatcher(errorJsp);
  }
  if(content.length()>500){
   String msg="公告内容字数请控制在500个以内!";
   request.setAttribute("GongGaoMsg",msg );
   rdsp = request.getRequestDispatcher(errorJsp);
  }
  
  GongGaoBean gonggao=new GongGaoBean(title,content,manager);  
  
  try {
   AddGonggaoBPO.addGonggao(gonggao);
   String msg="您的公告已经发布成功!";
   request.setAttribute("GongGaoMsg",msg);
   rdsp = request.getRequestDispatcher(successJsp);
  } catch (Exception e) { 
   String msg="对不起,系统错误。请稍候!";
   request.setAttribute("GongGaoMsg",msg);
   rdsp = request.getRequestDispatcher(errorJsp);
  }finally{
   if(rdsp != null){
    rdsp.forward(request, response);               //这里才提交
   }
  }
 }
 
 
 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  doGet(request, response);
 }
}

但是的话:在最后才提交,会使try里面的代码也执行了。这样不对。

所以代码还只能是这样:

  if(title.equals("")){
   String msg="标题不能为空";
   request.setAttribute("GongGaoMsg",msg );
   request.getRequestDispatcher(errorJsp).forward(request, response);
 
  return;                          //return在这里很重要;

}

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •