Java——分页 Servlet + Jsp+Jdbc 有点瑕疵

1.创建数据库,插入多条数据
2.java连接DB
3.Person类:
package com.phome.po;
public class Person {
private int id;
private int age;
private String name;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//...Setter() And Getter();
}
4.Dao操作类:
public class PersonDao {
/**
* ADD
* @param person
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public boolean add(Person person) throws ClassNotFoundException, SQLException {
String sql = "Insert into Persons(name,age,sex) values(?,?,?)";
Connection conn = null;
PreparedStatement ps = null;
boolean success = false;
try {
conn = DbUtil.getConnection();
ps = conn.prepareStatement(sql);
//设置参数
ps.setString(1, person.getName());
ps.setInt(2, person.getAge());
ps.setString(3, person.getSex());
//执行sql语句
success = (ps.executeUpdate() > 0);
} catch (SQLException e) {
System.out.println("【PersonDao -> add()发生异常】\n【异常信息】" + e.getErrorCode());
throw e;
} finally {
DbUtil.close(ps);
DbUtil.close(conn);
}
return success;
}
/**
* Page List
* @param pageIndex
* @param pageSize
* @param condition
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public List<Person> findByPaging(int pageIndex,int pageSize,String condition) throws ClassNotFoundException, SQLException{
String sql = "Select * From Persons";
if(condition != null){
sql += " Where " + condition;
}
sql += " limit " + ((pageIndex - 1) * pageSize) + "," + pageSize ;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Person> persons = new ArrayList<Person>();
try {
conn = DbUtil.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
persons.add(rs2Person(rs));
}
} catch (SQLException e) {
System.out.println("【PersonDao -> findByPaging()发生异常】" + "\n【异常信息】"
+ e.getMessage());
throw e;
} finally {
DbUtil.close(rs);
DbUtil.close(ps);
DbUtil.close(conn);
}
return persons;
}
/**
* 得到总数
* @param condition
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public int getCount(String condition) throws ClassNotFoundException, SQLException{
String sql = "Select count(*) From Persons";
if(condition != null){
sql += " Where " + condition;
}
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
int count = 0;
try {
conn = DbUtil.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next()){
count = rs.getInt(1);
}
} catch (SQLException e) {
System.out.println("【PersonDao ->getCount()发生异常】" + "\n【异常信息】"
+ e.getMessage());
throw e;
} finally {
DbUtil.close(rs);
DbUtil.close(ps);
DbUtil.close(conn);
}
return count;
}
/**
* 查询Person的结果集
* @param rs
* @return
* @throws SQLException
*/
private Person rs2Person(ResultSet rs) throws SQLException {
Person person = null;
try {
person = new Person();
person.setId(rs.getInt("Id"));
person.setName(rs.getString("Name"));
person.setAge(rs.getInt("Age"));
person.setSex(rs.getString("Sex"));
} catch (SQLException e) {
System.out.println("【PersonDao -> rs2Person()发生异常】" + "\n【异常信息】"
+ e.getMessage());
throw e;
}
return person;
}
}
5.Servlet类:
public class ShowPageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int pageIndex = 1;
int count = 0;
int pageSize = 10;
PersonDao dao = new PersonDao();
List<Person> list= new ArrayList<Person>();
if(req.getParameter("pageIndex") != null){
pageIndex = Integer.parseInt(req.getParameter("pageIndex"));;
}
try {
count = dao.getCount(null);
list = dao.findByPaging(pageIndex, pageSize, null);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
int pageCount = count/10;
req.setAttribute("pageCount", pageCount);//共 页
req.setAttribute("list", list);
req.setAttribute("pageIndex", pageIndex);//第 页
req.setAttribute("count", count);
req.getRequestDispatcher("showpage.jsp").forward(req, resp);
}
}
6.xml文件配置
<servlet>
<servlet-name>page</servlet-name>
<servlet-class>com.phome.servlet.ShowPageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>page</servlet-name>
<url-pattern>/page</url-pattern>
</servlet-mapping>
7.Jsp
Index.jsp
<form action="${pageContext.request.contextPath}/page" method="post" >
<input type="submit" value="分页显示" />
</form>
showpage.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>分页管理页面</title>
<style>
*{
font-size:12px;
}
table{
width:100%;
height:100%;
border-collapse:collapse;
border:1px solid #78C0D4;
}
td,th{
border:1px solid #78C0D4;
}
.first-line{
height:20px;
background-color:#A5D5E2;
}
</style>
</head> <body>
<div style="width:600px;height:400px;margin-left:300px;">
<table align="center" width="300px">
<tr class="first-line">
<th>
Id
</th>
<th>
姓名
</th>
<th>
年龄
</th>
<th>
性别
</th>
</tr> <c:forEach var="person" items="${list}" varStatus="s">
<tr <c:if test="${s.index mod 2 != 0}">style="background-color:#eee"</c:if> >
<td>
${person.id}
</td>
<td>
${person.name}
</td>
<td>
${person.age}
</td>
<td>
${person.sex}
</td>
</tr>
</c:forEach>
</table>
</div>
<div style="width:600px;height:400px;margin-left:500px;">
<a href="page?pageIndex=1">首页</a>
<a href="page?pageIndex=${pageIndex<=1 ? 1:pageIndex-1 }">上页</a>
<a style="color:red;">第${pageIndex }页</a> /
<a style="color:red;">共${pageCount+1 }页</a>
<a href="page?pageIndex=${pageIndex>=pageCount+1 ? pageCount+1:pageIndex+1 }">下页</a>
<a href="page?pageIndex=${pageCount+1 }">尾页</a>
<form action="${pageContext.request.contextPath}/page">
跳转至<input type="text" name="pageIndex" style="width:25px;"/>页
<input type="submit" value="跳转" />
</form>
</div>
</body>
</html>
效果图:

Java——分页 Servlet + Jsp+Jdbc 有点瑕疵的更多相关文章
- Servlet+JSP+JDBC设计实现图书系统——管理功能实现
写在前面,之前由于种种原因博客好久没有更新.最近打算重拾JavaWeb,所以从头开始,先用servlet+jdbc+bootstrap最基础的代码实现一个图书系统.考虑有管理员端+用户端,项目完成后会 ...
- Servlet+JSP+JDBC综合案例
层级关系: 一.Util包 包里面写一个JDBCTools.java文件 功能:实现数据库连接返回一个Connection对象,并且可以实现数据库相应资源的关闭! 注意事项: 1.定义成员变量 1 p ...
- 天坑 之 java web servlet+jsp项目 配置后 404 (MyEclipse转eclipse)
最近搞一个自己的博客系统玩,用了servlet+jsp,结果发现了两个大问题: 1.无法 Export 出 WAR文件: 2.生成WAR,放置到TOMCAT的 webapps目录后,http://lo ...
- servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目
登录注册界面 这是一个注册和登录的界面 用到了前端页面中自带的一点H5的标签和属性---巩固下 邮箱格式 :type="email" 不能为空: required=" ...
- servlet+jsp+jdbc实现从数据库查询用户信息到页面
工程创建这里就不在累述了,直接从显示User信息列表开始. 备注:我用的是servlet3的注解功能实现的,所以不需要配置web.xml 这是我的工程目录: 首先我们创建实体类: public cla ...
- java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
转自:https://zhangkunnan.iteye.com/blog/2040462 前言 Java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP.Servlet. ...
- javabean+servlet+jsp实现分页
前端实现用ligerUI实现分页,感觉用框架确实简单,闲着无聊,模拟着liger的分页界面实现了一遍(只要是功能,样式什么无视) 这里用基础的三层架构+servlet+jsp实现,思路很简单,把所有分 ...
- JDBC+Servlet+jsp(增删查改)
先在mysql新增数据库和表先,把下面的几句代码复制去到mysql运行就可以创建成功了! 创建数据库 create database jdbc01 character set utf8 collat ...
- MySQL+Service+Servlet+Jsp实现Table表格分页展示数据
下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...
随机推荐
- 无法获得锁 /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
- 给kali linux2.0装一个中文输入法
没有中文输入法好痛苦啊.. 毕竟做了无限网卡,虚拟机和主机可以完完全全当两台设备使用了,所以kali还是需要一个中文输入法才方便. 由于使用的是比较新的kali版本和源,现在安装fcitx已经可以直接 ...
- python学习笔记四——循环及冒泡排序
3.3.3 break 和 continue语句 break:跳出整个循环 continue:跳出当前循环继续后面的循环 例: x=int(input("please input the ' ...
- js數組
數組對象創建: var a=new Array(); var b=new Array(1); var a=new Array(“AA“,”AA“): 相關函數: sort()排序,可以進行字面上排序s ...
- liunx速查
文件和目录 Linux 主要目录速查表 /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目 ...
- share.js轻松分享/邀请
GitHub地址 https://github.com/overtrue/share.js 安装 安装的方法很多,大家选择自己合适的进行安装就好. clone $ git clone https:// ...
- log4net 单独项目
首先参考:http://blog.csdn.net/feiying008/article/details/45440547 有时,我们需要将日志功能作为单独模块,用来以后嫁接到其他项目. 今天就来看看 ...
- jsp操作MySQL时报错:Operation not allowed after ResultSet closed
一个stmt对多个rs进行操作引起的ResultSet关闭的错误 解决办法:创建新的stmt,一个rs对应一个stmt
- 金三银四:蚂蚁金服JAVA开发面试题及答案之一面(持续更新
一面 1.自我介绍.自己做的项目和技术领域 开放题 2.项目中的监控:那个监控指标常见的有哪些? 答:CPU.内存.IO 等等.建议下载个nmon工具,里面有各个指标. 数据库:Mysql(缓存命中. ...
- 自学Zabbix3.12.3-动作Action-自动发现action配置
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.12.3-动作Action-自动发现action配置 1. 首先先学习 Ne ...