调试Servlet代码

 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在这里很重要;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值