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

本文介绍了一个基于JSP的简单登录系统实现,包括登录验证、用户信息展示及分页功能。通过UserbeanCl处理业务逻辑,使用connDB进行数据库连接。

 不说废话,首先,建立要连接的数据库,我的数据库名称是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();
    }
   }
  }

 }

}

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

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

/* * @(#)PageControl.java 1.00 2004-9-22 * * Copyright 2004 2004 . All rights reserved. * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.hexiang.utils; /** * PageControl, 分页控制, 可以判断总页数和是否有上下页. * * 2008-07-22 加入输出上下分页HTML代码功能 * * @author HX * @version 1.1 2008-9-22 */ public class PageBean { /** 每页显示记录数 */ private int pageCount; /** 是否有上一页 */ private boolean hasPrevPage; /** 记录总数 */ private int recordCount; /** 是否有下一页 */ private boolean hasNextPage; /**总页面数 */ private int totalPage; /** 当前页码数 */ private int currentPage; /** * 分页前的页面地址 */ private String pageUrl; /** * 输出分页 HTML 页面跳转代码, 分链接和静态文字两种. * 2008-07-22 * @return HTML 代码 */ public String getPageJumpLinkHtml() { if(StringUtil.isEmpty(pageUrl)) { return ""; } // 检查是否有参数符号, 没有就加上一个? if(pageUrl.indexOf('?') == -1) { pageUrl = pageUrl + '?'; } StringBuffer buff = new StringBuffer("<span id='pageText'>"); // 上一页翻页标记 if(currentPage > 1) { buff.append("[ <a href='" + pageUrl + "&page=" + (currentPage - 1) + "' title='转到第 " + (currentPage - 1) + " 页'>上一页</a> ] "); } else { buff.append("[ 上一页 ] "); } // 下一页翻页标记 if(currentPage < getTotalPage()) { buff.append("[ <a href='" + pageUrl + "&page=" + (currentPage + 1)+ "' title='转到第 " + (currentPage + 1) + " 页'>下一页</a> ] "); } else { buff.append("[ 下一页 ] "); } buff.append("</span>"); return buff.toString(); } /** * 输出页码信息: 第${currentPage}页/共${totalPage}页 * @return */ public String getPageCountHtml() { return "第" + currentPage + "页/共" + getTotalPage() + "页"; } /** * 输出 JavaScript 跳转函数代码 * @return */ public String getJavaScriptJumpCode() { if(StringUtil.isEmpty(pageUrl)) { return ""; } // 检查是否有参数符号, 没有就加上一个? if(pageUrl.indexOf("?") == -1) { pageUrl = pageUrl + '?'; } return "<script>" + "// 页面跳转函数\n" + "// 参数: 包含页码的表单元素,例如输入框,下拉框等\n" + "function jumpPage(input) {\n" + " // 页码相同就不做跳转\n" + " if(input.value == " + currentPage + ") {" + " return;\n" + " }" + " var newUrl = '" + pageUrl + "&page=' + input.value;\n" + " document.location = newUrl;\n" + " }\n" + " </script>"; } /** * 输出页面跳转的选择框和输入框. 示例输出: * <pre> 转到 <!-- 输出 HTML SELECT 元素, 选中当前页面编码 --> <select onchange='jumpPage(this);'> <c:forEach var="i" begin="1" end="${totalPage}"> <option value="${i}" <c:if test="${currentPage == i}"> selected </c:if> >第${i}页</option> </c:forEach> </select> 输入页码:<input type="text" value="${currentPage}" id="jumpPageBox" size="3"> <input type="button" value="跳转" onclick="jumpPage(document.getElementById('jumpPageBox'))"> </pre> * @return */ public String getPageFormJumpHtml() { String s = "转到\n" + "\t <!-- 输出 HTML SELECT 元素, 选中当前页面编码 -->\n" + " <select onchange='jumpPage(this);'>\n" + " \n"; for(int i = 1; i <= getTotalPage(); i++ ) { s += "<option value=" + i + "\n"; if(currentPage == i) { s+= " selected "; } s += "\t>第" + i + "页</option>\n"; } s+= " </select>\n" + " 输入页码:<input type=\"text\" value=\"" + currentPage + "\" id=\"jumpPageBox\" size=\"3\"> \n" + " <input type=\"button\" value=\"跳转\" onclick=\"jumpPage(document.getElementById('jumpPageBox'))\"> "; return s; } /** * 进行分页计算. */ private void calculate() { if (getPageCount() == 0) { setPageCount(1); } totalPage = (int) Math.ceil(1.0 * getRecordCount() / getPageCount()); // 总页面数 if (totalPage == 0) totalPage = 1; // Check current page range, 2006-08-03 if(currentPage > totalPage) { currentPage = totalPage; } // System.out.println("currentPage=" + currentPage); // System.out.println("maxPage=" + maxPage); // // Fixed logic error at 2004-09-25 hasNextPage = currentPage < totalPage; hasPrevPage = currentPage > 1; return; } /** * @return Returns the 最大页面数. */ public int getTotalPage() { calculate(); return totalPage; } /** * @param currentPage * The 最大页面数 to set. */ @SuppressWarnings("unused") private void setTotalPage(int maxPage) { this.totalPage = maxPage; } /** * 是否有上一页数据 */ public boolean hasPrevPage() { calculate(); return hasPrevPage; } /** * 是否有下一页数据 */ public boolean hasNextPage() { calculate(); return hasNextPage; } // Test public static void main(String[] args) { PageBean pc = new PageBean(); pc.setCurrentPage(2); pc.setPageCount(4); pc.setRecordCount(5); pc.setPageUrl("product/list.do"); System.out.println("当前页 " + pc.getCurrentPage()); System.out.println("有上一页 " + pc.hasPrevPage()); System.out.println("有下一页 " + pc.hasNextPage()); System.out.println("总页面数 " + pc.getTotalPage()); System.out.println("分页 HTML 代码 " + pc.getPageJumpLinkHtml()); } /** * @return Returns the 当前页码数. */ public int getCurrentPage() { return currentPage; } /** * 设置当前页码, 从 1 开始. * @param currentPage * The 当前页码数 to set. */ public void setCurrentPage(int currentPage) { if (currentPage <= 0) { currentPage = 1; } this.currentPage = currentPage; } /** * @return Returns the recordCount. */ public int getRecordCount() { return recordCount; } /** * @param recordCount * The recordCount to set. */ public void setRecordCount(int property1) { this.recordCount = property1; } /** * @return Returns the 每页显示记录数. */ public int getPageCount() { return pageCount; } /** * @param pageCount * The 每页显示记录数 to set. */ public void setPageCount(int pageCount) { this.pageCount = pageCount; } public String getPageUrl() { return pageUrl; } public void setPageUrl(String value) { pageUrl = value; } }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值