我在做jsp程序中,做了一个servlet程序,以前可以正常显示,现在就是出现一个空白页,也没有报错,jsp网页正常显示 先前的程序代码如下(这个能显示):
package bbs.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import bbs.domain.User;
import bbs.persistent.UserInfoDAO;public class UserCtrl extends HttpServlet { public UserCtrl() {
super();
} /*
 *用于处理用户管理,
 *用户登录处理
 * 登出
 * 用户注册
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    //使用约定flag来处理用户管理的业务0代表登录、1代表登出、2代表注册
int flag=Integer.parseInt(request.getParameter("flag")) ;
if(flag==0)
{
login(request,response);
}

else if(flag==1)
{
loginOut(request,response);
}

else if(flag==2)
{
addUser(request,response);
}



}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
     doGet(request,response);

}
//用户登录
    public void login(HttpServletRequest request,HttpServletResponse response)
    {
     try{
     String name=new String(request.getParameter("name").getBytes("ISO-8859-1"));
     String pwd=new String(request.getParameter("pwd").getBytes("iso-8859-1"));
    
     UserInfoDAO udao=new UserInfoDAO();
     User user=new User();
     user.setName(name);
     user.setPassword(pwd);
     user=udao.login(user);
     if(user!=null)
     {
     System.out.println("用户存在");
     //成功将用户对象放到session对象中,使之在会话期间长期保存
     HttpSession session=request.getSession();
     session.setAttribute("user", user);
     //跳转到AllForum.jsp页面中
     response.sendRedirect("forum/AllForum.jsp");
     }
     else
     {
     System.out.println("用户不存在");
     //向session设置一个名为errors的错误信息,以便在Error.jsp中进行显示
     HttpSession session=request.getSession();
     session.setAttribute("errors", "用户名和密码错误");
     //向session设置一个名为back的返回上一页信息。
     request.getSession().setAttribute("back", "../user/Login.jsp");
     response.sendRedirect("common/Error.jsp");
     }
     }
     catch(Exception e)
     {
     e.printStackTrace();
     }
    }
    //////////////////////////////////////////
修改后的代码如下(这个显示的是空白页):package bbs.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import bbs.domain.User;
import bbs.persistent.UserInfoDAO;public class UserCtrl extends HttpServlet { public UserCtrl() {
super();
} /*
 *用于处理用户管理,
 *用户登录处理
 * 登出
 * 用户注册
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    //使用约定flag来处理用户管理的业务0代表登录、1代表登出、2代表注册
int flag=Integer.parseInt(request.getParameter("flag")) ;
if(flag==0)
{
login(request,response);
}

else if(flag==1)
{
loginOut(request,response);
}

else if(flag==2)
{
addUser(request,response);
}



}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
     
doGet(request,response);

}
//用户登录
    public void login(HttpServletRequest request,HttpServletResponse response)
    {
     try{
     String name=new String(request.getParameter("name").getBytes("ISO-8859-1"));
     String pwd=new String(request.getParameter("pwd").getBytes("iso-8859-1"));
    
     UserInfoDAO udao=new UserInfoDAO();
     User user=new User();
     user.setName(name);
     user.setPassword(pwd);
   
     //比较;来自Login.jsp传入用户验证码和保存在session中的验证码是不是一致
    if(!request.getParameter("inputSafeCode").equals(request.getSession()
     .getAttribute("rand")))
     {
     request.getSession().setAttribute("errors", "验证码错误!");
     request.getSession().setAttribute("back", "../user/Login.jsp");
     response.sendRedirect("common/Error.jsp");
     }
     else{
    
     user=udao.login(user);
     if(user!=null)
     {
     System.out.println("用户存在");
     //成功将用户对象放到session对象中,使之在会话期间长期保存
     HttpSession session=request.getSession();
     session.setAttribute("user", user);
     //跳转到AllForum.jsp页面中
     response.sendRedirect("forum/AllForum.jsp");
     }
     else
     {
     System.out.println("用户不存在");
     //向session设置一个名为errors的错误信息,以便在Error.jsp中进行显示
     HttpSession session=request.getSession();
     session.setAttribute("errors", "用户名和密码错误");
     //向session设置一个名为back的返回上一页信息。
     request.getSession().setAttribute("back", "../user/Login.jsp");
     response.sendRedirect("common/Error.jsp");
     }
     }
    
     }
     catch(Exception e)
     {
     e.printStackTrace();
     }
    }
    

解决方案 »

  1.   

    你用debug分部调式嘛,,
    代码不多。。应该问题好找,,
    个人建议从一下两个方面着手找问题:
    1.跳转到的页面是否是空白页面
    2.显示空白也有可能是执行的代码 最后没有进行跳转,也就是 请求到了 servlet里面 但是没有再进行到跳转 就会显示空白
    3.出错的话 会有错误信息,页面跳转但是没找到 会显示404 如果不是这些情况 就肯定在以上两种情况中用
    debug分步调试 应该很容易找
      

  2.   

    出现这种问题 还是debug你的程序。。
      

  3.   

    跟踪一下你的程序执行流程,返回空白页估计是你的程序执行完后,并没有指定返回的页面,还是用Debug调试一下。而且我简单的执行了一下你的程序,是可以返回页面的。
      

  4.   

    我是新手,不懂怎么用debug调试。还是谢谢你们,还以为没有好心人帮助我呢。以后多多指教啊。
      

  5.   

    java.lang.NullPointerException
    at bbs.servlet.UserCtrl.login(UserCtrl.java:70)
    at bbs.servlet.UserCtrl.doGet(UserCtrl.java:33)
    at bbs.servlet.UserCtrl.doPost(UserCtrl.java:54)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)这是他报的异常,是什么意思呢.
      

  6.   

    在线等待,一定要解决这个问题。努力学习JSP中。
      

  7.   

    这是验证码自动生成的Servlet类
    package bbs.servlet;import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Random;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;public class SafeCode extends HttpServlet { private static final String SCHAR[]={"0","1","2","3","4","5","6","7","8","9","a",
    "b","c","d","e","f","g","h","i","j","k","l","m","n",
    "","","","","","","","","","","","","",
    "o","p","q","r","s","t","u","v","w",
    "x","y","z",};

    public SafeCode() {
    super();
    }
    //通过随机数获得相对应的字符
    private String getRandChar(int randNumber)
    {
    return SCHAR[randNumber];
    }
    //使用代表前景色和背景色的随机数来创建图片前景色或背景色的颜色对象
    private Color getRandColor(int fc,int bc)
    {
    Random random=new Random();
    if(fc>255)
    {
    fc=255;
    }
    if(bc>255)
    {
    bc=255;
    }
    int r=fc+random.nextInt(bc-fc);
    int g=fc+random.nextInt(bc-fc);
    int b=fc+random.nextInt(bc-fc);
    return new Color(r,g,b);
    } /*
     * doGet()需要完成的两个事件
     * (生成验证码图片
     * 写验证码随机数字符串到session对象中
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {    response.setContentType("image/jpeg");
       response.setHeader("Cache-Control", "no-cache");
       response.setHeader("Pragma", "No-cache");
       response.setDateHeader("Expires", 0L);
       int width=60;
       int height=20;
       BufferedImage image=new BufferedImage(width,height,1);
       Graphics g=image.getGraphics();
       
       Random random=new Random();  //产生一个随机数
       g.setColor(getRandColor(200,250));//设置背景色
       g.fillRect(0, 0, width, height);
       g.setFont(new Font("Arial",0,19));
       g.setColor(getRandColor(160,200));
       String sRand="";  //存取随机数的字符串
       for(int i=0;i<4;i++)
       {
       String rand=getRandChar(random.nextInt(36));
       sRand=sRand+rand;
       g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),
       20+random.nextInt(110)));
       g.drawString(rand, 13*i+6, 16); //在背景上写字
        
       }
       request.getSession().setAttribute("rand", sRand);
       g.dispose();
       //一下根据上面创建在内存中的随机数图像对象,创建一个JPEG格式的图片文件
       javax.servlet.ServletOutputStream imageOut=
       response.getOutputStream();
       JPEGImageEncoder encoder=
       JPEGCodec.createJPEGEncoder(imageOut);
       encoder.encode(image);
       
       

    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request,response); }}
    //下面是我的Login.jsp代码
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script language="JavaScript">
    function check()
    {
        if(document.form.name.value=="")
        {
        alert("你还没输入用户名");
        return false;
        }
        return true;
    }
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form method="post" name="form" action="../UserCtrl?flag=0" ><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><table height="160" width="500" border="1">
    <tbody><tr>
    <td>&nbsp;用户名:</td>
    <td>&nbsp;<input type="text" size="20" name="name"></td></tr>
    <tr>
    <td>&nbsp;密码:</td>
    <td>&nbsp;<input type="password" size="20" name="pwd"></td></tr>
    <tr>
    <td>&nbsp;验证码:</td>
    <td><input type="text" size="10" name="inputSafeCode/">
    <img src="../SafeCode" id="SafeCode" width="100px" height="30px"></td></tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;<input type="submit" value="确定" name="submit"><input type="reset" value="重置" name="reset"><a href="AddUser.jsp">我要注册</a><br></td></tr>
    </tbody></table><p>&nbsp;</p><p>&nbsp;</p>
    </form></body>
    </html>
      

  8.   

    at bbs.servlet.UserCtrl.login(UserCtrl.java:70) 对应
    if(!request.getParameter("inputSafeCode").equals(request.getSession()
      .getAttribute("rand")))    这句代码,空指针异常。
      

  9.   

    <td><input type="text" size="10" name="inputSafeCode/"> 是否多了个"/"  ?
      

  10.   

    删除部分,然后一部分执行,或者用System.out.println("运行到此行"); 逐个跟踪
      

  11.   

    难道这个网页是被和谐了??http://jfong.diandian.com/ 我听说这个博客可以绑一级域名。 我弄了个试试