JSP页面跳转后,分页显示失败,SOS!

ilove581314 2009-06-17 02:25:54
分页显示的功能是由一个JavaBean实现的,它从SQL2000数据库里面提取数据,没有使用Servlet,在主页上直接调用JavaBean,显示相关内容,点击“上一页”,“下一页”,“直接跳转到第...页”按钮都没有问题。
主页上有一个登录按钮,由Servlet控制转到登录页面,在登录页面,输入用户名和密码后,由Servlet控制转到相应的一个界面(成功),在这个界面,调用JavaBean显示分页数据,可以显示默认的第一页,但“上一页”,“下一页”,“直接跳转到第...页”都不起作用,错误提示如下:
exception

java.lang.NullPointerException
bokeeservlet.control.login.doPost(login.java:45)
bokeeservlet.control.login.doGet(login.java:90)
javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
login.java是控制输入用户名和密码后跳转的Servlet
提示的是空指针,可是参数的确传过来了,那一行代码是:
String loginName=request.getParameter("LoginName").trim();
我把它换成下面的代码:
String loginName=request.getParameter("LoginName")!=null?request.getParameter("LoginName").trim():"";
然后一点击“上一页”,“下一页”,“直接跳转到第...页”,就直接跳到用户名或密码输入错误的情况下的错误提示页面loginError.jsp了。
Servlet代码如下:
package bokeeservlet.control;
import database.operation.*;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class login extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
super.init(config);
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e){}
}
public String handleString(String s)
{
try
{
byte bb[]=s.getBytes("ISO-8859-1");
s=new String(bb);
}
catch(Exception e){}
return s;
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
Connection con;
PreparedStatement sql;
ResultSet rs;
loginBean loginbean=null;
HttpSession session=request.getSession(true);
try
{
loginbean=new loginBean();//用于存储登录信息的Bean
session.setAttribute("login",loginbean);
}
catch(Exception e)
{
loginbean=new loginBean();
session.setAttribute("login",loginbean);
}
String loginName=request.getParameter("LoginName")!=null?request.getParameter("LoginName").trim():"";
String password=request.getParameter("Password")!=null?request.getParameter("Password").trim():"";
boolean ok=loginbean.getSuccess();
loginName=handleString(loginName);
password=handleString(password);
boolean boo=(loginName.length()>0)&&(password.length()>0);
try
{
String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=bokee";
con=DriverManager.getConnection(uri,"******","******");
String condition="select * from login where name=? and password=?";
sql=con.prepareStatement(condition);
if(boo)
{
sql.setString(1,loginName);
sql.setString(2,password);
rs=sql.executeQuery();
boolean m=rs.next();
if(m==true)
{
loginbean.setLoginName(loginName);
loginbean.setPassword(password);
loginbean.setSuccess(true);
RequestDispatcher dispatcher=request.getRequestDispatcher("loginIndex.jsp");
dispatcher.forward(request,response);
}
else
{
loginbean.setSuccess(false);
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}
}
else
{
loginbean.setSuccess(false);
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}
con.close();
}
catch(SQLException e){}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
doPost(request,response);
}
}

loginIndex.jsp代码如下:
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.sql.*" %>
<%@ page import="database.operation.*" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="WEB-INF/tlds/myTag.tld" prefix="myInformation"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%>
<html>
<body bgcolor="#FFFBF0">
<tags:topLogin/>
<tags:informationdb/>
<jsp:useBean id="look" class="database.operation.ShowRecordByPage" scope="request" />
<jsp:setProperty name="look" property="databaseName" value="bokee" />
<jsp:setProperty name="look" property="tableName" value="diary" />
<jsp:setProperty name="look" property="user" value="******" />
<jsp:setProperty name="look" property="password" value="******" />
<jsp:setProperty name="look" property="pageSize" value="3" />
<jsp:setProperty name="look" property="showPage" />


<table width="510" height="300" border="0" cellspacing="0" cellpadding="5" style="position:absolute; left:225px; top:171px;">
${look.presentPageResult}
</table>

<table width="510" border="0" cellspacing="0" cellpadding="0" style="position:absolute; left:225px; top:830;">
<tr><td><form action="">
<input type="hidden" name="showPage" value="<%=look.getShowPage()-1 %>" >
<input type="submit" name="g" value="前一页">
</form>
</td>
<td><form action="">
<input type="hidden" name="showPage" value="<%=look.getShowPage()+1 %>" >
<input type="submit" name="g" value="后一页">
</form>
</td>
<td> <form action="">
输入页码:<input type="text" name="showPage" size=5 >
<input type="submit" name="g" value="提交">
</form>
</td>
</tr>
</table>

<tags:photo/>
<br />
<myInformation:information/>
<tags:bottom/>
</body>
</html>
用于实现分页的Bean的代码如下:
package database.operation;
import java.sql.*;
import com.sun.rowset.*;
public class ShowRecordByPage
{ int pageSize=10; //每页显示的记录数
int pageAllCount=0; //分页后的总页数
int showPage=1 ; //当前显示页
StringBuffer presentPageResult; //显示当前页内容
CachedRowSetImpl rowSet; //用于存储ResultSet对象
String databaseName=""; //数据库名称
String tableName=""; //表的名字
String user="" ; //用户
String password="" ; //密码
public ShowRecordByPage()
{ presentPageResult=new StringBuffer();
try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
}
catch(Exception e){}
}
public void setPageSize(int size)
{ pageSize=size;
String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;
try{
Connection con=DriverManager.getConnection(uri,user,password);
Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=sql.executeQuery("SELECT * FROM "+tableName);
rowSet=new CachedRowSetImpl(); //创建行集对象
rowSet.populate(rs);
con.close(); //关闭连接
rowSet.last();
int m=rowSet.getRow(); //总行数
int n=pageSize;
pageAllCount=((m%n)==0)?(m/n):(m/n+1);
}
catch(Exception exp){}
}
public int getPageSize()
{ return pageSize;
}
public int getPageAllCount()
{ return pageAllCount;
}
public void setShowPage(int n)
{ showPage=n;
}
public int getShowPage()
{ return showPage;
}
public StringBuffer getPresentPageResult()
{ if(showPage>pageAllCount)
showPage=1;
if(showPage<=0)
showPage=pageAllCount;
presentPageResult=show(showPage);
return presentPageResult;
}
public StringBuffer show(int page)
{ StringBuffer str=new StringBuffer();
try{ rowSet.absolute((page-1)*pageSize+1);
for(int i=1;i<=pageSize;i++)
{
str.append("<tr>");
str.append("<td height=28 bgcolor=#CCCCCC>"+rowSet.getString(1)+"("+rowSet.getString(2)+")"+"</td>");
str.append("</tr>");
str.append("<tr>");
str.append("<td height=20 bgcolor=#EBEBEB style=font-size:12px>"+"分类:"+rowSet.getString(3)+"</td>");
str.append("</tr>");
str.append("<tr>");
str.append("<td height=20 bgcolor=#EBEBEB style=font-size:12px>"+"标签:"+rowSet.getString(4)+"</td>");
str.append("</tr>");
str.append("<tr>");
if(rowSet.getString(5).length()>=100)
str.append("<td height=60 bgcolor=#EBEBEB style=font-family:楷体_GB2312;font-size:18px>"+rowSet.getString(5).substring(0,100)+"......"+"</td>");
else
str.append("<td height=60 bgcolor=#EBEBEB style=font-family:楷体_GB2312;font-size:18px>"+rowSet.getString(5)+"</td>");
str.append("</tr>");
str.append("<tr>");
str.append("<td height=25 bgcolor=#EBEBEB align=right><form><input type=button value=评论 name=rowSet.getString(1) /></form></td>");
str.append("</tr>");
rowSet.next();
}
}
catch(SQLException exp){}
return str;
}
public void setDatabaseName(String s)
{ databaseName=s.trim();
}
public String getDatabaseName()
{ return databaseName;
}
public void setTableName(String s)
{ tableName=s.trim();
}
public String getTableName()
{ return tableName;
}
public void setPassword(String s)
{ password=s.trim();;
}
public void setUser(String s)
{ user=s.trim();
}
public String getUser()
{ return user;
}
}
请高手帮帮忙啊,急啊,是课程设计
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilove581314 2009-06-17
  • 打赏
  • 举报
回复
问题不在这,但是已经解决了,还是非常感谢你们!
jzy19880106 2009-06-17
  • 打赏
  • 举报
回复
up
ouyangxiaokang6 2009-06-17
  • 打赏
  • 举报
回复
很明显呀,就是你得那个request.getParameter("LoginName")=null了,你根本就没有把LoginName的值传过来,所以出错了。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧