请高手指点一下关于Servlet重定向问题

时间:2021-01-01 21:10:24
我的一个留言板程序,查看留言是由servlet处理逻辑再重定向到JSP页面显示!
一般情况下能正常显示,但为什么我在JSP显示页面里加了一段代码之后,访问Servlet就显示成空白页了?
我只是在JSP页面里加了一个方法:
    public String format(String s)
{
try
{
    s1=s;
    String s2="";
    int rowno=5;
    int allno=s1.length();
    int row=allno/rowno;
    if(allno<rowno)
   {
  s2=s1;
   }
   else
      {
    for(int i=0;i<row;i++)
        {
   s2=s2+s1.substring(i*rowno,(i*rowno+rowno))+"<br/>";
    }

    s2=s2+s1.substring(row*rowno);
  }
  return s2;
}
catch(Exception e)
{
return s;
}
}
%>

然后在后面某个位置调用:<%=format(message.getContent())%>

message.getContent()是从JAVABEAN里取得数据;

如果不调用这个方法,直接在某处显示该数据值:<%=message.getContent()%>
就能正常显示页面,否则就是空白页!


谁能告诉我这是什么原因啊????

有什么方法可以查看出现了什么异常问题

7 个解决方案

#1


把两个JSP页面和servlet类代码都帖出来
我帮你看看..

#2


Servlet代码如下:

package com.iven.mes;

import java.sql.Connection;
import java.sql.Date;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import java.io.IOException;
import javax.servlet.ServletException;
import java.io.PrintWriter;


public class ViewMessageServlet extends HttpServlet
{
    Connection con;

    public ViewMessageServlet()
    {
        String s="com.microsoft.jdbc.sqlserver.SQLServerDriver";
        String s1="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=sczy";
        String s2="iven";
        String s3="ivenhuang";

        try
        {
            Class.forName(s);
            con=DriverManager.getConnection(s1,s2,s3);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        response.setContentType("text/html;charset=gb2312"); //±&Oslash;&ETH;&euml;&Ocirc;&Uacute;·&frac12;·¨&Agrave;&iuml;&micro;&Auml;&micro;&Uacute;&Ograve;&raquo;&ETH;&ETH;&acute;ú&Acirc;&euml;&pound;&not;&Ecirc;&sup1;&ordm;ó&Atilde;&aelig;×&ordf;&Iuml;ò&micro;&Auml;&Ograve;&sup3;&Atilde;&aelig;&Ograve;&sup2;&Auml;&Uuml;&Iacute;&not;&sup2;&frac12;±à&Acirc;&euml;&cedil;&ntilde;&Ecirc;&frac12;&pound;&not;&Egrave;&ccedil;&sup1;&ucirc;&sup2;&raquo;&frac14;&Oacute;&Otilde;&acirc;&frac34;&auml;&pound;&not;
         //×&ordf;&Iuml;ò&micro;&Auml;jsp&Ograve;&sup3;&Atilde;&aelig;&Ouml;&ETH;&micro;&Auml;&ordm;&ordm;×&Ouml;&frac12;&laquo;±&auml;&sup3;&Eacute;&Acirc;&Ograve;&Acirc;&euml;&pound;&iexcl;
        request.setCharacterEncoding("gb2312"); //±à&Acirc;&euml;&acute;&aelig;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Ouml;&ETH;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;&pound;&not;&Ecirc;&sup1;&ordm;&ordm;×&Ouml;&sup2;&raquo;&raquo;á&acute;&aelig;&Ocirc;&Uacute;&Acirc;&Ograve;&Acirc;&euml;&pound;&iexcl;
        PrintWriter out=response.getWriter();
        ArrayList arraylist=new ArrayList();

         try
         {
             Statement stm=con.createStatement();
             ResultSet resultset=stm.executeQuery("select count(*) from sczy_messageboard");
             int i=0;
             if(resultset.next())
             {
                 i=resultset.getInt(1);//&Egrave;&iexcl;&micro;&Atilde;&micro;&Uacute;&Ograve;&raquo;&Igrave;&otilde;&frac14;&Iacute;&Acirc;&frac14;&Ouml;&ETH;&micro;&Auml;&micro;&Uacute;&Ograve;&raquo;&Aacute;&ETH;&pound;¨&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Ouml;&ETH;×&Ouml;&para;&Icirc;&Icirc;&ordf;num&micro;&Auml;×&Ocirc;&Ocirc;&ouml;×&Ouml;&para;&Icirc;&pound;&copy;&micro;&Auml;&Ouml;&micro;&pound;&raquo;
                 resultset.close();
             }

             if(i>0)
             {
                 ResultSet resultset1;
                 MessageBean messagebean;

                 for(resultset1=stm.executeQuery("select * from sczy_messageboard order by thedate desc");resultset1.next();arraylist.add(messagebean))
                 {
                     int num=resultset1.getInt(1);
                     String users=resultset1.getString(2);
                     String phone=resultset1.getString(3);
                     String fax=resultset1.getString(4);
                     String email=resultset1.getString(5);
                     String company=resultset1.getString(6);
                     String heading=resultset1.getString(7);
                     String content=resultset1.getString(8);
                     java.util.Date thedate=resultset1.getDate(9);

                     messagebean=new MessageBean();
                     messagebean.setNum(num);
                     messagebean.setUsers(users);
                     messagebean.setPhone(phone);
                     messagebean.setFax(fax);
                     messagebean.setEmail(email);
                     messagebean.setCompany(company);
                     messagebean.setHeading(heading);
                     messagebean.setContent(content);
                     messagebean.setDate(thedate);
                 }
                 resultset1.close();
                 stm.close();
                 //con.close();
             }
             request.setAttribute("messages",arraylist);
             RequestDispatcher requestdispatcher=request.getRequestDispatcher("/WEB-INF/backcontrol/viewmessage.jsp");
             requestdispatcher.forward(request,response);
         }
         catch(Exception e1)
         {
             e1.printStackTrace();
         }

    }

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


#3


jsp代码如下:


<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%@ page  import="java.lang.*,com.iven.mes.MessageBean,java.sql.*,java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>&sup2;é&iquest;&acute;&Aacute;&ocirc;&Ntilde;&Ocirc;</title>
<style type="text/css">
<!--
.style1 {
font-size: 16px;
font-weight: bold;
}
-->

</style>
</head>

<body>
<center>
<p class="style1">&Euml;ù&Oacute;&ETH;·&Atilde;&iquest;&Iacute;&Aacute;&ocirc;&Ntilde;&Ocirc;</p>
<hr>
<%
  int count=1;
  int pagesize=5;
  int rowcount=0;
  int pagecount=0;

  Collection messagearray=(Collection)request.getAttribute("messages");
  Iterator it=messagearray.iterator();
  if(!it.hasNext())
  {
      out.print("没有记录!");
  }
  else
  {

  rowcount=messagearray.size();
  int showpage=1;
  pagecount=((rowcount%pagesize)==0?(rowcount/pagesize):(rowcount/pagesize)+1);
  String topage=request.getParameter("topage");
  if(topage!=null)
  {
  showpage=Integer.parseInt(topage);

      if(showpage>pagecount)
     {
      showpage=pagecount;
     }
      if(showpage<=0)
     {
      showpage=1;
     }
  }
  int skip=1;
      while(skip<((showpage-1)*pagesize+1))
  {
  it.next();
  ++skip;
  }
  for(int i=1;i<=pagesize;i++)
  {
     MessageBean message=(MessageBean)it.next();
%>
<table width="527" height="175" border="1" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="51" height="25" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="50" height="23" bgcolor="#66CC00"><div align="right">±à&ordm;&Aring;&pound;&ordm;</div></td>
      </tr>
    </table></td>
    <td width="58" height="25"><div align="right"><%=(count+pagesize*(showpage-1))%></div></td>
    <td colspan="3" bgcolor="#66CC00">&nbsp;</td>
    </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">用户名</div></td>
    <td width="211"><%=message.getUsers()%></td>
    <td width="90"><div align="right">联系电话</div></td>
    <td width="105"><%=message.getPhone()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">E-mail:</div></td>
    <td><%=message.getEmail()%></td>
    <td><div align="right">传真</div></td>
    <td><%=message.getFax()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">公司名称</div></td>
    <td colspan="3"><%=message.getCompany()%></td>
    </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言时间</div></td>
    <td colspan="2"><%=message.getDate()%></td>
    <td><div align="center">删除留言</div></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言主题</div></td>
    <td colspan="3"><%=message.getHeading()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言内容</div></td>
    <td colspan="3"><div>
<%    out.print(message.getContent());
  %>
     </div></td>
  </tr>
</table>
<%
  count++;
  out.print("<br/><br/>");

  if(!it.hasNext())
 {break;}

     }
%>
<table width="810">
<tr>
<td width="535" height="25" colspan="8" align="right">
       <a href="/sczy/ViewMessageServlet?topage=<%=1%>">首页</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=showpage-1%>上一页 &nbsp;</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=showpage+1%>">&nbsp;下一页</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=pagecount%>">&nbsp;末页</a>
   <span>这是第<%=showpage%>页&nbsp;共<%=pagecount%>页</span>
</td>
</tr>
</table>
<%
  }
%>
</center>
</body>
</html>

#4


public String format(String s)
{
try
{
    s1=s;
________________________________
s1变量没有定义???

#5


关注

#6


1,在int row=allno/rowno;下面加一句Out.println(s1);
2,把catch语句ramark掉;

然后再测试

#7


j2ee技术交流群
9438177
欢迎朋友们的加入
为的是探讨技术 呵呵

#1


把两个JSP页面和servlet类代码都帖出来
我帮你看看..

#2


Servlet代码如下:

package com.iven.mes;

import java.sql.Connection;
import java.sql.Date;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import java.io.IOException;
import javax.servlet.ServletException;
import java.io.PrintWriter;


public class ViewMessageServlet extends HttpServlet
{
    Connection con;

    public ViewMessageServlet()
    {
        String s="com.microsoft.jdbc.sqlserver.SQLServerDriver";
        String s1="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=sczy";
        String s2="iven";
        String s3="ivenhuang";

        try
        {
            Class.forName(s);
            con=DriverManager.getConnection(s1,s2,s3);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        response.setContentType("text/html;charset=gb2312"); //±&Oslash;&ETH;&euml;&Ocirc;&Uacute;·&frac12;·¨&Agrave;&iuml;&micro;&Auml;&micro;&Uacute;&Ograve;&raquo;&ETH;&ETH;&acute;ú&Acirc;&euml;&pound;&not;&Ecirc;&sup1;&ordm;ó&Atilde;&aelig;×&ordf;&Iuml;ò&micro;&Auml;&Ograve;&sup3;&Atilde;&aelig;&Ograve;&sup2;&Auml;&Uuml;&Iacute;&not;&sup2;&frac12;±à&Acirc;&euml;&cedil;&ntilde;&Ecirc;&frac12;&pound;&not;&Egrave;&ccedil;&sup1;&ucirc;&sup2;&raquo;&frac14;&Oacute;&Otilde;&acirc;&frac34;&auml;&pound;&not;
         //×&ordf;&Iuml;ò&micro;&Auml;jsp&Ograve;&sup3;&Atilde;&aelig;&Ouml;&ETH;&micro;&Auml;&ordm;&ordm;×&Ouml;&frac12;&laquo;±&auml;&sup3;&Eacute;&Acirc;&Ograve;&Acirc;&euml;&pound;&iexcl;
        request.setCharacterEncoding("gb2312"); //±à&Acirc;&euml;&acute;&aelig;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Ouml;&ETH;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;&pound;&not;&Ecirc;&sup1;&ordm;&ordm;×&Ouml;&sup2;&raquo;&raquo;á&acute;&aelig;&Ocirc;&Uacute;&Acirc;&Ograve;&Acirc;&euml;&pound;&iexcl;
        PrintWriter out=response.getWriter();
        ArrayList arraylist=new ArrayList();

         try
         {
             Statement stm=con.createStatement();
             ResultSet resultset=stm.executeQuery("select count(*) from sczy_messageboard");
             int i=0;
             if(resultset.next())
             {
                 i=resultset.getInt(1);//&Egrave;&iexcl;&micro;&Atilde;&micro;&Uacute;&Ograve;&raquo;&Igrave;&otilde;&frac14;&Iacute;&Acirc;&frac14;&Ouml;&ETH;&micro;&Auml;&micro;&Uacute;&Ograve;&raquo;&Aacute;&ETH;&pound;¨&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Ouml;&ETH;×&Ouml;&para;&Icirc;&Icirc;&ordf;num&micro;&Auml;×&Ocirc;&Ocirc;&ouml;×&Ouml;&para;&Icirc;&pound;&copy;&micro;&Auml;&Ouml;&micro;&pound;&raquo;
                 resultset.close();
             }

             if(i>0)
             {
                 ResultSet resultset1;
                 MessageBean messagebean;

                 for(resultset1=stm.executeQuery("select * from sczy_messageboard order by thedate desc");resultset1.next();arraylist.add(messagebean))
                 {
                     int num=resultset1.getInt(1);
                     String users=resultset1.getString(2);
                     String phone=resultset1.getString(3);
                     String fax=resultset1.getString(4);
                     String email=resultset1.getString(5);
                     String company=resultset1.getString(6);
                     String heading=resultset1.getString(7);
                     String content=resultset1.getString(8);
                     java.util.Date thedate=resultset1.getDate(9);

                     messagebean=new MessageBean();
                     messagebean.setNum(num);
                     messagebean.setUsers(users);
                     messagebean.setPhone(phone);
                     messagebean.setFax(fax);
                     messagebean.setEmail(email);
                     messagebean.setCompany(company);
                     messagebean.setHeading(heading);
                     messagebean.setContent(content);
                     messagebean.setDate(thedate);
                 }
                 resultset1.close();
                 stm.close();
                 //con.close();
             }
             request.setAttribute("messages",arraylist);
             RequestDispatcher requestdispatcher=request.getRequestDispatcher("/WEB-INF/backcontrol/viewmessage.jsp");
             requestdispatcher.forward(request,response);
         }
         catch(Exception e1)
         {
             e1.printStackTrace();
         }

    }

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


#3


jsp代码如下:


<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%@ page  import="java.lang.*,com.iven.mes.MessageBean,java.sql.*,java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>&sup2;é&iquest;&acute;&Aacute;&ocirc;&Ntilde;&Ocirc;</title>
<style type="text/css">
<!--
.style1 {
font-size: 16px;
font-weight: bold;
}
-->

</style>
</head>

<body>
<center>
<p class="style1">&Euml;ù&Oacute;&ETH;·&Atilde;&iquest;&Iacute;&Aacute;&ocirc;&Ntilde;&Ocirc;</p>
<hr>
<%
  int count=1;
  int pagesize=5;
  int rowcount=0;
  int pagecount=0;

  Collection messagearray=(Collection)request.getAttribute("messages");
  Iterator it=messagearray.iterator();
  if(!it.hasNext())
  {
      out.print("没有记录!");
  }
  else
  {

  rowcount=messagearray.size();
  int showpage=1;
  pagecount=((rowcount%pagesize)==0?(rowcount/pagesize):(rowcount/pagesize)+1);
  String topage=request.getParameter("topage");
  if(topage!=null)
  {
  showpage=Integer.parseInt(topage);

      if(showpage>pagecount)
     {
      showpage=pagecount;
     }
      if(showpage<=0)
     {
      showpage=1;
     }
  }
  int skip=1;
      while(skip<((showpage-1)*pagesize+1))
  {
  it.next();
  ++skip;
  }
  for(int i=1;i<=pagesize;i++)
  {
     MessageBean message=(MessageBean)it.next();
%>
<table width="527" height="175" border="1" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="51" height="25" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <tr>
        <td width="50" height="23" bgcolor="#66CC00"><div align="right">±à&ordm;&Aring;&pound;&ordm;</div></td>
      </tr>
    </table></td>
    <td width="58" height="25"><div align="right"><%=(count+pagesize*(showpage-1))%></div></td>
    <td colspan="3" bgcolor="#66CC00">&nbsp;</td>
    </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">用户名</div></td>
    <td width="211"><%=message.getUsers()%></td>
    <td width="90"><div align="right">联系电话</div></td>
    <td width="105"><%=message.getPhone()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">E-mail:</div></td>
    <td><%=message.getEmail()%></td>
    <td><div align="right">传真</div></td>
    <td><%=message.getFax()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">公司名称</div></td>
    <td colspan="3"><%=message.getCompany()%></td>
    </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言时间</div></td>
    <td colspan="2"><%=message.getDate()%></td>
    <td><div align="center">删除留言</div></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言主题</div></td>
    <td colspan="3"><%=message.getHeading()%></td>
  </tr>
  <tr>
    <td height="25" colspan="2"><div align="right">留言内容</div></td>
    <td colspan="3"><div>
<%    out.print(message.getContent());
  %>
     </div></td>
  </tr>
</table>
<%
  count++;
  out.print("<br/><br/>");

  if(!it.hasNext())
 {break;}

     }
%>
<table width="810">
<tr>
<td width="535" height="25" colspan="8" align="right">
       <a href="/sczy/ViewMessageServlet?topage=<%=1%>">首页</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=showpage-1%>上一页 &nbsp;</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=showpage+1%>">&nbsp;下一页</a>
   <a href="/sczy/ViewMessageServlet?topage=<%=pagecount%>">&nbsp;末页</a>
   <span>这是第<%=showpage%>页&nbsp;共<%=pagecount%>页</span>
</td>
</tr>
</table>
<%
  }
%>
</center>
</body>
</html>

#4


public String format(String s)
{
try
{
    s1=s;
________________________________
s1变量没有定义???

#5


关注

#6


1,在int row=allno/rowno;下面加一句Out.println(s1);
2,把catch语句ramark掉;

然后再测试

#7


j2ee技术交流群
9438177
欢迎朋友们的加入
为的是探讨技术 呵呵