jsp java实现分页处理_JSP实现添加功能和分页显示实例分析

本文实例讲述了JSP实现添加功能和分页显示的方法。分享给大家供大家参考。具体如下:

学习目标:

① 进一步掌握MVC设计模式;

② 掌握添加功能的实现;

③ 掌握分页显示功能的实现。

主要内容:

① 通过用户信息添加功能进一步介绍MVC模式;

② 通过用户信息的分页显示介绍分页显示功能的原理和实现。

1、如何采用MVC模式完成用户添加?

首先考虑与人如何交互:应该有一个输入用户信息的界面,包含用户名和口令,另外需要一反馈的界面。

然后考虑功能如何实现:需要在User类中添加一个方法,完成用户信息的添加。

最后考虑控制器:获取信息;调用JavaBean;传值;选择界面响应。

2、添加用户的界面

实际应用中的信息项比较多,并且需要对用户输入信息进行验证。这里重点强调添加过程,所以对问题进行简化。可以在登录界面的基础上修改,参考代码如下:

添加用户

用户ID:

口令:

3、在User中增加方法

public boolean addUser()

{

Connection con = null;

Statement stmt = null;

boolean b; // 表示添加成功与否

try{

// 指出连接数据库所需要的驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

// 建立与数据库之间的连接

// 需要把myserver修改为自己的数据库服务器的IP地址

// 把mydb修改成自己的数据库)

con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");

// 编写查询数据库信息的SQL语句

String sql="insert into usertable(username,userpass) values('"+username+"','"+userpass+"')";

// 创建语句对象,用于执行SQL语句

stmt = con.createStatement();

// 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数

int n = stmt.executeUpdate(sql);

if(n>0)

b = true;

else

b = false;

}catch(Exception e){

b = false;

}

finally{

// 关闭相关对象

if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}

if(con!=null) try{ con.close(); }catch(Exception ee){}

}

return b;

}

4、使用Servlet进行控制

参考代码如下:

package servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javabean.*;

import java.util.*;

public class AddUser extends HttpServlet

{

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

request.setCharacterEncoding("gb2312");

// 第一步:获取用户的输入信息

String username = request.getParameter("username");

String userpass = request.getParameter("userpass");

// 第二步:调用JavaBean

User user = new User();

user.setUsername(username);

user.setUserpass(userpass);

boolean b = user.addUser();

// 第三步:传值

String info;

if(b)

info="添加成功!";

else

info="添加失败!";

request.setAttribute("addinfo",info);

// 第四步:选择一个界面对用户进行响应

String forward="getAllUser";

RequestDispatcher rd = request.getRequestDispatcher(forward);

rd.forward(request,response);

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

doGet(request,response);

}

}

此处添加完成之后跳转到userlist.jsp文件处理,但是在显示之前需要获取数据,所以需要先执行Servlet,所以专向了getAllUser控制器。

5、修改配置文件

addUser

servlet.AddUser

addUser

/addUser

6、在列表界面显示提示信息

修改userlist.jsp代码如下,红色部分为增加的内容:

${addinfo}

用户名:${user.username} 口令:${user.userpass}

7、运行测试

输入正确的用户名和口令测试;

输出已经存在的用户名进行测试。

8、 添加分页显示

经过不断的添加,数据库表中已经有大量的记录。当记录比较多的时候就应该进行分页显示。分页显示可以采用多种方式:

① 在SQL中进行控制,只查询需要的记录;

② 在遍历结果集的时候,只封装相关的记录;

③ 在显示的时候进行控制。

第一种方式对开发人员的SQL水平要求比较高,第三种方式传递的数据量比较大,所以我们介绍第二种。

要完成分页显示,需要做3个方面的修改:

① 界面上增加分页显示的超链接;

② 修改User.java,在遍历结果集的时候进行控制,另外需要增加获取页码数的方法;

③ 在控制器中传递需要的页码和总页码。

9、 在界面上增加分页显示功能

${addinfo}

第一页

上一页

下一页

最后一页

用户名:${user.username} 口令:${user.userpass}

其中,pageNo表示当前页码,pageCount表示总页数。

10、在User.java中增加获取总页码的方法

public int getPageCount()

{

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

try{

// 指出连接数据库所需要的驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

// 建立与数据库之间的连接

con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger");

// 编写查询数据库信息的SQL语句

String sql="select count(*) from usertable";

// 创建语句对象,用于执行SQL语句

stmt = con.createStatement();

// 执行SQL语句得到结果集

rs = stmt.executeQuery(sql);

rs.next();

// 得到总的记录数

int number = rs.getInt(1);

return (number-1)/10+1;

}catch(Exception e){

return 0;

}

finally{

// 关闭相关对象

if(rs!=null) try{ rs.close(); }catch(Exception ee){}

if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}

if(con!=null) try{ con.close(); }catch(Exception ee){}

}

}

11、增加按照页码获取信息的方法

public ArrayList getUserByPage(int pageNo)

{

int number=10;

// 每一页显示的记录数

int begin = (pageNo * number) - 9;

int end = pageNo * number;

int index=1;

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

ArrayList users = new ArrayList();

try{

// 指出连接数据库所需要的驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

// 建立与数据库之间的连接

con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.170:1521:fhdn","scott","tiger");

// 编写查询数据库信息的SQL语句

String sql="select * from usertable";

// 创建语句对象,用于执行SQL语句

stmt = con.createStatement();

// 执行SQL语句得到结果集

rs = stmt.executeQuery(sql);

// 遍历结果集

while(rs.next())

{

// 在begin之前的记录是不显示的

if(index

index++;

continue;

}

// 在end之后的记录也不显示

if(index>end)

break;

index++;

String username = rs.getString(1);

String userpass = rs.getString(2);

// java.util.Date birthday = rs.getDate(3);

// int age = rs.getInt(4);

User user = new User();

user.setUsername(username);

user.setUserpass(userpass);

users.add(user);

}

}catch(Exception e){

System.out.println(e.getMessage());

}

finally{

// 关闭相关对象

if(rs!=null) try{ rs.close(); }catch(Exception ee){}

if(stmt!=null) try{ stmt.close(); }catch(Exception ee){}

if(con!=null) try{ con.close(); }catch(Exception ee){}

}

return users;

}

12、修改控制器

package servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javabean.*;

import java.util.*;

public class GetAllUser extends HttpServlet

{

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

// 第一步:获取用户的输入信息

String pageNo=request.getParameter("pageNo");

int iPageNo=1;

if(pageNo!=null)

{

iPageNo = Integer.parseInt(pageNo);

}

// 第二步:调用JavaBean

User user = new User();

ArrayList users=null;

users = user.getUserByPage(iPageNo);

int pageCount=user.getPageCount();

// 第三步:传值

request.setAttribute("users",users);

request.setAttribute("pageNo",new Integer(iPageNo));

request.setAttribute("pageCounter",new Integer(pageCount));

// 第四步:选择一个界面对用户进行响应

String forward="userlist.jsp";

RequestDispatcher rd = request.getRequestDispatcher(forward);

rd.forward(request,response);

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws IOException,ServletException

{

doGet(request,response);

}

}

13、之后再进行测试运行

14、增加对第一页和最后一页的控制

如果已经在第一页,就不能再点击第一页或者首页。如果已经在最后一页,就不能再点击最后一页或者下一页。修改userlist.jsp中代码如下(部分代码):

第一页

上一页

下一页

最后一页

这里设置为不显示,也可以设置为不添加超链接。

15、增加对异常的处理

如果用户按照这样的方式访问:http://127.0.0.1:8080/ch8/getAllUser?pageNo=aaa,将产生异常。因为页码不是数字,所以需要进行异常处理。修改:

iPageNo = Integer.parseInt(pageNo);

为:

try{ iPageNo = Integer.parseInt(pageNo); }catch(Exception e){}

希望本文所述对大家的JSP程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值