基于JavaBean,JSP实现登录并显示分页信息的小系统

 不说废话,首先,建立要连接的数据库,我的数据库名称是collage,要显示的数据表是students,有六列,要学习并测试的可以自己建立数据库。
id:int

name:varchar

grade:int

batch:int

password:int

gxqm:varchar

 JSP页面,有三个,login.jsp,loginhandle.jsp,welcome.jsp。java类有三个,Userbean用于映射数据对象,UserbeanCl用于业务逻辑处理,connDB用于建立数据库连接。直接上代码吧

login.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Login in and then enjoy yourself!</title>
</head>
<body>
<center>
请登录
<form name="form1" action="loginhandle.jsp">
<hr color="cc00aa">
用户名: <input type="text" name="user">
<br>
密&nbsp;&nbsp;码: <input type="password" name="password">
<br>
<input type="submit" value="登录">
<input type="reset" name="重置">
</form>
</center>
</body>
</html>

loginhandle页面:

<%@ page language="java" import="java.sql.*" import="java.util.*,com.ly.model.UserbeanCl" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>here</title>

</head>
<body>
<center>
  <br>
  <%
   String u = request.getParameter("user");
   String p = request.getParameter("password");
   
      // 一、普通验证
/*     if(u.equals("Liyong")&&p.equals("woaini")){
    response.sendRedirect("welcome.jsp?user="+u);//跳转到欢迎界面并传递出用户名user 
    }
    else{  
    response.sendRedirect("login.jsp");
    }
     */
   // 二、直接到数据库中验证
   // DriverManager.registerDriver(new com.mysql.jdbc.Driver());
   //  Class.forName("com.mysql.jdbc.Driver");
/*   
   try {
    Class.forName("com.mysql.jdbc.Driver");
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
   }
   Connection ct = DriverManager.getConnection(
     "jdbc:mysql://localhost:3306/collage", "root", "");
   Statement st = ct.createStatement();
   ResultSet rs = st.executeQuery("select password from students where name='"
       + u + "'");
   if (rs.next()) {
    //说明用户名存在
    if (rs.getString(1).equals(p)) {
     //密码正确
     response.sendRedirect("welcome.jsp?user=" + u);//跳转到欢迎界面并传递出用户名user 
    } else {
     response.sendRedirect("login.jsp");

    }
   }
   rs.close();
   st.close();
   ct.close();
*/
   // 三、通过userbeanCl对用户进行验证
   UserbeanCl ubc=new UserbeanCl();
  
   if(ubc.checkUser(u,p))
   {
    response.sendRedirect("welcome.jsp?user=" + u);
    
   }else {
    
    out.println("<script>alert('密码或者用户名错误!');</script>");
    Thread.sleep(1000);
    response.sendRedirect("login.jsp");
    // return;
        
   }

  %>
 </center>
</body>
</html>

welcome页面:

<%@ page language="java" import="java.util.*,com.ly.model.*"
 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Welcome your mother!</title>
</head>
<body>
 <center>
  Hello,world! <br>
  <%=request.getParameter("user")%>
  <br> <a href="login.jsp">返回重新登录</a>
  <hr color="silver">
  <br> 用户信息列表 <br>
  <%
  int pageNow=1;
  String u=request.getParameter("user");
  String s_pageNow=request.getParameter("pageNow");
  if(s_pageNow!=null){
   pageNow=Integer.parseInt(s_pageNow);  
   
  }
  // 调用UserbeanCl的方法,完成分页显示
  UserbeanCl ubc=new UserbeanCl();
  int pageCount=ubc.pageCount();
  ArrayList al=ubc.getUsersByPage(pageNow);
   
  %>
  <table border="1">
   <tr>
    <td>用户Id</td>
    <td>姓名</td>
    <td>班级</td>
    <td>批次</td>
    <td>密码</td>
    <td>个性签名</td>
   </tr>
   <%
  for(int i=0;i<al.size();i++){
   Userbean usb=(Userbean)al.get(i);
   // System.out.println("-----------------"+usb.getGxqm());
   %>
   <tr>
    <td><%=usb.getId() %></td>
    <td><%=usb.getName() %></td>
    <td><%=usb.getGrade() %></td>
    <td><%=usb.getBatch() %></td>
    <td><%=usb.getPassword() %></td>
    <td><%=usb.getGxqm() %></td>
   </tr>
   <%

   }
   
   %>
   
  </table>
  <br><hr color="blue"><br>
  <%
  //显示上一页
  out.println("<a href=welcome.jsp?pageNow="+1+"&user="+u+">首页</a>");
  if(pageNow!=1){
   out.println("<a href=welcome.jsp?pageNow="+(pageNow-1)+"&user="+u+">上一页</a>");
   
  }
  // 显示页码
  for(int i=pageNow;i<=(pageCount<(pageNow+5)?pageCount:(pageNow+5));i++){
   
   out.println("<a href=welcome.jsp?pageNow="+i+"&user="+u+">["+i+"]</a>");
   
  }
  if(pageNow!=pageCount){
   out.println("<a href=welcome.jsp?pageNow="+(pageNow+1)+"&user="+u+">下一页</a>");
   
  }
  out.println("<a href=welcome.jsp?pageNow="+pageCount+"&user="+u+">尾页</a>");
  %>
  
 </center>
</body>
</html>

Userbean.java实现数据对象的封装

package com.ly.model;

public class Userbean {
 private int id;
 private String name;
 private int grade;
 private int batch;
 private int password;
 private String gxqm;
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getGrade() {
  return grade;
 }
 public void setGrade(int grade) {
  this.grade = grade;
 }
 public int getBatch() {
  return batch;
 }
 public void setBatch(int batch) {
  this.batch = batch;
 }
 public int getPassword() {
  return password;
 }
 public void setPassword(int password) {
  this.password = password;
 }
 public String getGxqm() {
  return gxqm;
 }
 public void setGxqm(String gxqm) {
  this.gxqm = gxqm;
 }
 
}


connDB.java实现数据库的连接//得到数据库的连接

//得到数据库的连接
package com.ly.model;
import java.sql.*;
import java.util.*;
public class connDB {
 private Connection ct=null;
 
 
 public Connection getConn(){
  
  
   try {
    Class.forName("com.mysql.jdbc.Driver");
    ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/collage", "root", "");
   } catch (Exception e) {
    
    e.printStackTrace();
   }
   
 
  return ct;
 }
}

UserbeanCl.java实现业务逻辑的处理

//这是一个处理类,主要封装对User表的各种操作,包括增删改查

package com.ly.model;

import java.sql.*;
import java.util.ArrayList;

public class UserbeanCl {
 private Statement st = null;
 private ResultSet rs = null;
 private Connection ct = null;
 private int pageSize = 10;
 private int rowCount = 0;
 private int pageCount = 0;

 // 验证用户是否存在
 public int pageCount() {
  try {
   // 得到连接
   ct = new connDB().getConn();
   st=ct.createStatement();
   rs = st.executeQuery("select count(*) from students");
   //
   if(rs.next()){
    
    rowCount=rs.getInt(1);
   }
   if(rowCount%pageSize==0){
    pageCount=rowCount/pageSize;
    
   }else{
    pageCount=rowCount/pageSize+1;    
   }
   
   
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   shutup();
  }
  return pageCount;

 }

 public ArrayList getUsersByPage(int PageNow) {
  pageCount = pageCount(); 
  
  ct = new connDB().getConn();
  int startRow=(PageNow-1)*pageSize;
  ArrayList al = new ArrayList();
  
  try {
   st = ct.createStatement();
   rs=st.executeQuery("SELECT id,name,grade,batch,password,gxqm FROM `students` LIMIT "+startRow+","+pageSize);
   while(rs.next()){
    
    Userbean ub=new Userbean();
    ub.setId(rs.getInt(1));
    ub.setName(rs.getString(2));
    ub.setGrade(rs.getInt(3));
    ub.setBatch(rs.getInt(4));
    ub.setPassword(rs.getInt(5));
    ub.setGxqm(rs.getString(6));
    
    // System.out.println(rs.getString(6));
    
    
    al.add(ub);
    
   }

  } catch (Exception e) {
    e.printStackTrace();
  } finally {
   shutup();
  }

  return al;

 }

 public boolean checkUser(String u, String p) {
  boolean b = false;
  ct = new connDB().getConn();
  try {
   st = ct.createStatement();
   ResultSet rs = st
     .executeQuery("select password from students where name='"
       + u + "'");
   if (rs.next()) {
    // 说明用户名存在
    if (rs.getString(1).equals(p)) {
     // 密码正确
     b = true;
    } else {
     return false;
    }
   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   shutup();
  }
  return b;

 }

 public void shutup() {

  try {
   if (rs != null)
    rs.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   try {
    if (st != null)
     st.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } finally {
    try {
     if (ct != null)
      ct.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }

 }

}

最终现实的简单分页效果如图

好了,基本效果就这样,当然怎么改善就随你自己的意愿了!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP实现分页显示数据的步骤如下: 1. 在JSP页面使用JSTL标签库的<c:forEach>标签或者JSP自带的<% %>标签,遍历数据集合并将数据显示在页面上。 2. 在页面上添加分页导航条,用于用户切换不同页面的数据。可以通过<a>标签或者<button>标签来实现。 3. 在后台代码,根据用户请求的当前页码以及每页显示的数据量,计算出要显示的数据的起始位置和结束位置。 4. 从数据源查询数据,并根据起始位置和结束位置来限制查询结果的数量。 5. 将查询结果封装成JavaBean对象,然后将JavaBean对象放入请求作用域(request),以便在JSP页面遍历和显示。 6. 在JSP页面根据分页导航条传递的参数,重新查询数据并显示在页面上。 示例代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP分页显示数据</title> </head> <body> <h1>用户列表</h1> <table> <tr> <th>ID</th> <th>用户名</th> <th>邮箱</th> </tr> <c:forEach var="user" items="${users}"> <tr> <td>${user.id}</td> <td>${user.username}</td> <td>${user.email}</td> </tr> </c:forEach> </table> <br> <div> <c:if test="${currentPage > 1}"> <a href="list.jsp?page=${currentPage - 1}">上一页</a> </c:if> <c:forEach begin="1" end="${totalPage}" varStatus="status"> <c:choose> <c:when test="${status.index == currentPage}"> <span>${status.index}</span> </c:when> <c:otherwise> <a href="list.jsp?page=${status.index}">${status.index}</a> </c:otherwise> </c:choose> </c:forEach> <c:if test="${currentPage < totalPage}"> <a href="list.jsp?page=${currentPage + 1}">下一页</a> </c:if> </div> </body> </html> ``` 在后台代码,我们需要根据参数page和pageSize来计算出要查询的数据的起始位置和结束位置,然后从数据源查询数据,并将查询结果封装成JavaBean对象放入请求作用域。 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="com.example.User" %> <% int currentPage = Integer.parseInt(request.getParameter("page")); int pageSize = 10; int totalCount = 100; int totalPage = (totalCount + pageSize - 1) / pageSize; int startIndex = (currentPage - 1) * pageSize; int endIndex = startIndex + pageSize; List<User> users = new ArrayList<User>(); for (int i = startIndex; i < endIndex && i < totalCount; i++) { User user = new User(); user.setId(i + 1); user.setUsername("user" + (i + 1)); user.setEmail("user" + (i + 1) + "@example.com"); users.add(user); } request.setAttribute("users", users); request.setAttribute("currentPage", currentPage); request.setAttribute("totalPage", totalPage); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP分页显示数据</title> </head> <body> <%@ include file="list.jsp" %> </body> </html> ``` 在JSP页面,我们需要根据请求作用域的数据来渲染分页导航条和数据列表。 注意:为了防止SQL注入等安全问题,我们在实际开发应该使用PreparedStatement来查询数据,并对用户输入的参数进行过滤和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值