分页技术具体代码及其实现效果(基于java连接mysql)
1.用户登录界面 Login3.java
package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class Login3 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) { try { res.setContentType("text/html;charset=utf8"); PrintWriter pw = res.getWriter(); String info1 = req.getParameter("info1"); String info2 = req.getParameter("info2"); String info3 = req.getParameter("info3"); pw.println("<html>"); pw.println("<body>"); //用户尚未登录提醒 if(info1!=null) { pw.println("<span>您还没有登录</span>"); } if(info2 != null) { pw.println("<span>您的密码错误</span>"); } if(info3 != null) { pw.println("<span>您的用户名错误</span>"); } pw.println("<h1>用户登录</h1>"); pw.println("<form action=loginCl3>"); pw.println("用户名:<input type=text name=username><br/>"); pw.println("密码:<input type=pasword name=passwd><br/>"); pw.println("<input type=submit value=login>"); pw.println("</form>"); pw.println("</body>"); pw.println("</html>"); }catch(Exception ex) { ex.printStackTrace(); } } public void doPost(HttpServletRequest req,HttpServletResponse res) { this.doGet(req,res); } }
2.业务逻辑处理 LoginCl3.java
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginCl3 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res) {
//声明Connection对象
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try {
String user = req.getParameter("username");
String pass = req.getParameter("passwd");
//加载JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库(数据库url,数据库的用户名,数据库密码)
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_user","root","");
//创建Statement类对象,用于执行sql语句
stmt = con.createStatement();
//返回记录结果
//rs = stmt.executeQuery("select * from users where username='"+user+"' and passwd='"+pass+"'");
//修改sql漏洞
rs = stmt.executeQuery("select passwd from users where username='"+user+"' limit 1");
//存在该用户
if(rs.next()){
//得到数据库中该用户的密码
String dbPasswd = rs.getString(1);
if(dbPasswd.equals(pass)) {
HttpSession hs = req.getSession(true);
//添加session属性
hs.setAttribute("uname",user);
//设置存在时间
hs.setMaxInactiveInterval(20);
//跳转到欢迎页面
res.sendRedirect("wel3?user="+user);
}else {
res.sendRedirect("login3?info2=err2");
}
}else {
res.sendRedirect("login3?info3=err3");
}
}catch(Exception ex) {
ex.printStackTrace();
}finally {
try {
if(rs!=null) {
rs.close();
}
if(stmt!=null) {
stmt.close();
}
if(con!=null) {
con.close();
}
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res) {
this.doGet(req,res);
}
}
3.用户欢迎界面 Wel3.java
package com.tsinghua; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class Wel3 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) { //数据库 Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try {
//html格式 res.setContentType("text/html;charset=utf8"); //分页 int pageCount=0; //总共页数 int pageSize=3; //每页记录数 int rowCount=0; //总共记录数 int pageNow=1; //希望当前页数 //动态的接收pageNow String sPageNow = req.getParameter("pageCur"); if(sPageNow!=null) { pageNow = Integer.parseInt(sPageNow); } PrintWriter pw = res.getWriter(); //获取session属性 HttpSession hs = req.getSession(true); String name = (String)hs.getAttribute("uname"); //session不存在 if(name==null) { //跳转登陆页面,提醒用户未登录 res.sendRedirect("login3?info1=err1"); } //session存在 //数据库连接 Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_user","root",""); ps = con.prepareStatement("select count(*) from users"); rs = ps.executeQuery(); if(rs.next()) { rowCount = rs.getInt(1); } ps = con.prepareStatement("select * from users limit ?,?"); //给?赋值 ps.setInt(1,(pageNow-1)*pageSize); ps.setInt(2,pageSize); rs=ps.executeQuery(); //欢迎用户(用户名) pw.println("Welcome your coming,"+name+"<br/>"); //图片 pw.println("<img width=100px height=100px src=imgs/KSYoon.jpg>"); //输出分页后users表中信息 pw.println("<table border=1>"); pw.println("<tr>"); pw.println("<th>userid</th>"); pw.println("<th>username</th>"); pw.println("<th>passwd</th>"); pw.println("<th>email</th>"); pw.println("<th>priority</th>"); pw.println("</tr>"); while(rs.next()) { pw.println("<tr>"); pw.println("<td>"+rs.getInt(1)+"</td>"); pw.println("<td>"+rs.getString(2)+"</td>"); pw.println("<td>"+rs.getString(3)+"</td>"); pw.println("<td>"+rs.getString(4)+"</td>"); pw.println("<td>"+rs.getInt(5)+"</td>"); pw.println("</tr>"); } pw.println("</table>"); //计算pageCount if(rowCount % pageSize == 0) { pageCount = rowCount / pageSize; }else { pageCount = rowCount / pageSize + 1; } //上一页 if(pageNow!=1) { pw.println("<a href=wel3?pageCur="+(pageNow-1)+">上一页</a>"); } //页数链接 for(int i=pageNow;i<pageNow+10;i++) { //想要显示的当前页 pw.println("<a href=wel3?pageCur="+i+">"+i+"</a>"); } //下一页 if(pageNow!=pageCount) { pw.println("<a href=wel3?pageCur="+(pageNow+1)+">下一页</a>"); } }catch(Exception ex) { ex.printStackTrace(); }finally { try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(con!=null) { con.close(); } }catch(Exception ex) { ex.printStackTrace(); } } } public void doPost(HttpServletRequest req,HttpServletResponse res) { this.doGet(req,res); } }
4.mysql数据库
CREATE DATABASE db_user CHARACTER SET utf8; CREATE TABLE users ( userid TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username varchar(20), passwd varchar(20), email varchar(30), priority int ); DROP TABLE users; SELECT * FROM users; INSERT INTO users(username,passwd,email,priority) VALUES('admin','admin','admin@sohu.com',1); INSERT INTO users(username,passwd,email,priority) VALUES('shunping','shunping','shunping@sohu.com',1); INSERT INTO users(username,passwd,email,priority) VALUES('tester1','tester2','tester1@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester2','tester2','tseter2@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester3','tester3','tester3@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester4','tester4','tester4@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester5','tester5','tester5@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester6','tester6','tester6@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester7','tester7','tester7@sohu.com',5); INSERT INTO users(username,passwd,email,priority) VALUES('tester8','tester8','tester8@sohu.com',5);
注意点:
(1)mysql.jar需要添加,该包下载地址mysql.jar下载
(2) 生成大量记录sql语句:
insert into users(username,passwd,email,priority) select users(username,passwd,email,priority) from users;
实现效果:
(1)开启tomcat,在登录界面输入用户信息(此处填写的信息是与数据库某条记录一致),若信息正确可跳转到欢迎界面
(2)欢迎界面将用户名输出,默认显示第一页users表中前三条记录
(3)当点击下一页时,当前页递增(显示的记录信息也随着改变),若点击某个页数(该页数非1)时,该页数左边会出现上一页链接,并且该页数为可显示的最小页数