利用MVC模式简单设计jsp分页效果
利用Mysql创建一个表Car

用Eclipse创建一个Dynamic Web Project
在lib目录下导入Mysql的jar包

创建如下文件

package com.bean;
public class Car {
private String code;
private String name;
private String brand;
private String time;
private double oil;
private int powers;
private int exhaust;
private double price;
private String image;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public double getOil() {
return oil;
}
public void setOil(double oil) {
this.oil = oil;
}
public int getPowers() {
return powers;
}
public void setPowers(int powers) {
this.powers = powers;
}
public int getExhaust() {
return exhaust;
}
public void setExhaust(int exhaust) {
this.exhaust = exhaust;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
package com.dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import com.bean.Car; public class CarDao {
private Connection conn;
private PreparedStatement stat;
private ResultSet rs; //获取总页数
public int getPageCount(int pageSize) throws Exception{
conn= DBConnection.getconnection();
String sql= "select count(*) from car";
stat=conn.prepareStatement(sql);
rs= stat.executeQuery();
rs.next();
int rowCount = rs.getInt(1);
int pageCount = (int)Math.ceil((1.0*rowCount/pageSize));
conn.close();
return pageCount; }
//获取第几页的数据
public ArrayList<Car> getPageCar(int pageNo,int pageSize){
ArrayList<Car> list = new ArrayList<Car>();
try {
conn=DBConnection.getconnection();
String sql="select * from car limit ?,?";
stat=conn.prepareStatement(sql);
stat.setInt(1, (pageNo-1)*pageSize);
stat.setInt(2, pageSize);
rs=stat.executeQuery();
while(rs.next()){
Car c = new Car();
c.setCode(rs.getString(1));
c.setName(rs.getString(2));
c.setBrand(rs.getString(3));
c.setTime(rs.getString(4));
c.setOil(rs.getDouble(5));
c.setPowers(rs.getInt(6));
c.setExhaust(rs.getInt(7));
c.setPrice(rs.getDouble(8));
c.setImage(rs.getString(9));
list.add(c);
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally{
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} return list; } public ArrayList<Car> select(){
ArrayList<Car> list = new ArrayList<Car>();
try {
conn=DBConnection.getconnection();
String sql= "select * from car";
stat=conn.prepareStatement(sql);
rs = stat.executeQuery(); while(rs.next()){
Car c = new Car();
c.setCode(rs.getString(1));
c.setName(rs.getString(2));
c.setBrand(rs.getString(3));
c.setTime(rs.getString(4));
c.setOil(rs.getDouble(5));
c.setPowers(rs.getInt(6));
c.setExhaust(rs.getInt(7));
c.setPrice(rs.getDouble(8));
c.setImage(rs.getString(9));
list.add(c);
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally{
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} return list; }
public Car select(String key){
Car c = null;
try {
conn= DBConnection.getconnection();
String sql = "select * from car where code=?";
stat= conn.prepareStatement(sql);
stat.setString(1, key);
rs= stat.executeQuery();
while(rs.next()){
c = new Car();
c.setCode(rs.getString(1));
c.setName(rs.getString(2));
c.setBrand(rs.getString(3));
c.setTime(rs.getString(4));
c.setOil(rs.getDouble(5));
c.setPowers(rs.getInt(6));
c.setExhaust(rs.getInt(7));
c.setPrice(rs.getDouble(8));
c.setImage(rs.getString(9)); }
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return c; }
}
package com.dao; import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ResourceBundle; public class DBConnection {
public static Connection getconnection() throws Exception{
String drv = ResourceBundle.getBundle("db").getString("drv");
String url = ResourceBundle.getBundle("db").getString("url");
String uid = ResourceBundle.getBundle("db").getString("uid");
String pwd = ResourceBundle.getBundle("db").getString("pwd"); Class.forName(drv);
Connection conn = DriverManager.getConnection(url,uid,pwd);
return conn; }
}
db.properties文件是保护文件,里面要写用户密码。如下:
drv=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK
uid=root
pwd=
com.servlet包下的文件都是servlet类型的
package com.servlet; import java.io.IOException;
import java.util.ArrayList; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.bean.Car;
import com.dao.CarDao; /**
* Servlet implementation class Showservlet
*/
@WebServlet("/show")
public class Showservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private final int PAGESIZE =3;
/**
* @see HttpServlet#HttpServlet()
*/
public Showservlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取数据
int pageNo = 1;
String s = request.getParameter("pg");
if(s !=null){
pageNo=Integer.parseInt(s);
}
//处理数据
try {
int pageCount = new CarDao().getPageCount(PAGESIZE);
ArrayList<Car> list = new CarDao().getPageCar(pageNo, PAGESIZE); int pagePrev = pageNo>1?pageNo-1:1;
int pageNext = pageNo<pageCount?pageNo+1:pageCount; request.setAttribute("pageNow", pageNo);
request.setAttribute("pagePrev", pagePrev);
request.setAttribute("pageNext", pageNext);
request.setAttribute("pageCount", pageCount);
request.setAttribute("cars",list);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//跳转
request.getRequestDispatcher("index.jsp").forward(request, response);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
index.jsp内容如下:
<%@page import="com.bean.Car"%>
<%@page import="java.util.ArrayList"%>
<%@ 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>Insert title here</title>
<script>
function a(){
document.getElementById("ff").submit();
}
</script>
</head>
<body>
<h1>显示分页</h1>
<%
ArrayList<Car> list =(ArrayList<Car>)request.getAttribute("cars");
for(Car c : list){
%>
<div>
<span style="width:100px; display:inline-block;"><%=c.getCode() %></span>
<span style="width:300px; display:inline-block;"><%=c.getName() %></span>
<span style="width:100px; display:inline-block;"><%=c.getOil() %></span>
</div>
<%
}
%>
<%--分页内容 --%>
<a href="show?pg=1">首页</a>
<a href="show?pg=<%=request.getAttribute("pagePrev") %>">上一页</a>
<%
int pageCount = (int)request.getAttribute("pageCount");
for(int i=1; i<=pageCount;i++){
%>
<a href="show?pg=<%=i %>"><%=i %></a>
<%
}
%>
<a href="show?pg=<%=request.getAttribute("pageNext") %>">下一页</a>
<a href="show?pg=<%=pageCount%>">末页</a>
<form id="ff" method="get" action="show">
<select name="pg" onchange="a()">
<%
for(int i=1;i<=pageCount;i++){
int p = (int)request.getAttribute("pageNow");
if(p==i){
%>
<option value="<%=i %>" selected="selected"><%=i %></option>
<%
}
else{
%>
<option value="<%=i %>" ><%=i %></option>
<%
}
}
%>
</select>
<%-- <input type="submit" value="GO"/>--%>
</form>
</body>
</html>
显示如下:

利用MVC模式简单设计jsp分页效果的更多相关文章
- 利用mvc模式,实现用户的注册
实现功能:利用mvc模式,实现用户的登陆注册功能 1.程序的框架结构 2个包,bean,以及servlet 3个jsp页面,注册页面,注册成功页面,注册失败页面 mysql驱动 2.编程思想 通过js ...
- 再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
精炼并增补于:界面之下:还原真实的MV*模式 图形界面的应用程序提供给用户可视化的操作界面,这个界面提供给数据和信息.用户输入行为(键盘,鼠标等)会执行一些应用逻辑,应用逻辑(application ...
- 3.NetDh框架之缓存操作类和二次开发模式简单设计(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- 基于jsp+servlet+javabean的MVC模式简单应用
原先写在CSDN的一篇,我直接扒过来吧.之前打算在CSDN的,结果写了几回,发现他那个发布系统简直烂到家,经常丢失图片各种.所以很长一段时间我也没写什么. 一.MVC模式 1.M : javabea ...
- 【转】利用MVC模式开发Java应用程序[组图]
Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...
- asp.net下利用MVC模式实现Extjs表格增删改查
在网上看到有很多人写extjs下的表格控件的增删改查,但是大多数都是直接从后台读取数据,很少有跟数据库进行交互的模式. 今天就来写一个这样的例子.欢迎大家交流指正. 首先简单介绍一下MVC模式,MVC ...
- 利用JS实现简单的瀑布流效果
哈哈, 我又来啦, 在这一段时间里, 我简单的学习了一下javascript(JS), 虽然不是很懂啦, 但是我也简单的尝试着做了点小东西, 就比如现在流行的瀑布流效果, 经过我的努力终于成功的完成了 ...
- MVC模式简单介绍
模型-视图-控件(model-View-Controller)MVC结构是一种开发模块的方法,它将数据存储和数据处理从数据的可视化表示中分离出来.存储和处理数据的组件称为模型,它包括模块的实际内容.表 ...
- 简单的JSP分页显示
1.mysql的limit关键字 (DAO) select * from tablename limit startPoint, numberPerPage; tablename 就是要分页显示的那张 ...
随机推荐
- HYSBZ 1010 玩具装箱toy (决策单调DP)
题意: 有n个玩具,要将它们分为若干组,玩具长度C可能不同.给出n个玩具的摆放顺序,连续的任意多个玩具都可以成为一组.区间[i,j]成为一组的费用是cost=(j-i+Sigma(Ck)-L)2且i& ...
- Arria II GX FPGA开法套件——初步使用
1. 从官网下载使用手册和参考手册,以及开发包 下载地址:https://www.altera.com.cn/products/boards_and_kits/dev-kits/a ...
- [OpenMP] 并行计算入门
OpenMP并行计算入门 个人理解 OpenMP是一种通过共享内存并行系统的多处理器程序设计的编译处理方案,通过预编译指令告诉编译器哪些代码块需要被并行化,通过拷贝代码块实现并行程序.对于循环的并行化 ...
- vue axios 请求 https 的特殊处理
最近遇到自签发的CA证书,在前端axios请求https请求时,无法自动加载证书. 解决方法:将无法加载的请求在浏览器新窗口手动加载,选择继续连接. 重新加载,问题解决. 根本原因:因为自签发证书,浏 ...
- springboot超详细笔记
一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...
- Newtonsoft.Json初探
1.序列化 VehicleModelSearchingModel model = new VehicleModelSearchingModel() { brandId = , modelIds=&qu ...
- Java微信公众号开发----关键字自动回复消息
在配置好开发者配置后,本人第一个想要实现的是自动回复消息的功能,说明以下几点: 1. url 仍然不变,还是开发配置里的url 2. 微信采用 xml 格式传输数据 3.微信服务器传给我们的参数主要有 ...
- 【上下界网络流 二分】bzoj2406: 矩阵
感觉考试碰到上下界网络流也还是写不来啊 Description Input 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. Output 第一行,输出 ...
- 【哈希 二分】bzoj2084: [Poi2010]Antisymmetry
可以用manacher或者SA搞过去的:非常有趣的hash题 Description 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串.比如0000 ...
- (69)zabbix监控惠普打印机
假设公司有多个楼层或者分布在不同楼,打印机自然分布很广泛,打印机缺少油墨或者卡纸了,都需要员工找IT部门.我们使用zabbix对打印机进行监控,一旦缺少油墨,zabbix发出报警,it人员能够及时更换 ...