思路
新建一个list文件夹
- js/jquery-2.1.4.min.js // js 文件
- WEB-INF/lib //用来放jar包
既然要连接数据库
mysql-connector-java-5.1.13-bin.jar 是用来连接数据库的
- 增加2个页面
一个是写页面的
一个是用来写java代码实现添加的
删除 1个 批删1 个 修改 2个
遇到的问题
<!-- 解决乱码 -->
<%@ page contentType="text/html;charset=utf-8" %>
<!-- 导包 -->
<%@ page import="java.sql.*"%>
request.getParameter() 返回的 String 类型
分页 limit 初始页,每页大小
//分页 传2个东西
int pageNumber;//第几页
int pageSize;//页数尺寸
if(request.getParameter("pageNumber")==null||request.getParameter("pageNumber").equals("")){
pageNumber =1;
}else{
pageNumber = Integer.valueOf(request.getParameter("pageNumber"));
}
if(request.getParameter("pageSize")==null||request.getParameter("pageSize").equals("")){
pageSize = 3;
}else{
pageSize = Integer.valueOf(request.getParameter("pageSize"));
}
//计算 分页的初始下标
int current = (pageNumber-1)*pageSize;
// 为了防止在你上一页的是时候往回走 0 -1
//判断 如果 第几页的数小于1 的话
if(pageNumber<1){
pageNumber =1;
}
//在这里写java代码 写计数
String sql = "select count(id) c from list";
Statement sc = con.createStatement();
ResultSet sr = sc.executeQuery(sql);
if(sr.next()){
//这个是 写 尾页 尾页的计算 = (计数-1)/页数大小+1
int countPage=(sr.getInt("c")-1)/pageSize+1;
//这个是用来写上一页的
int prePage = pageNumber -1;
int nextPage = pageNumber+1;
//上一页判断
if(prePage<1){
prePage =1;
}
//下一页判断
if(nextPage > countPage){
nextPage = countPage;
}
<%%> 这个用来写 java代码
代码
列表页面
<!DOCTYPE html>
<%@ page contentType="text/html;charset=utf-8" %>
<%@ page import="java.sql.*"%>
<html lang="en">
<%
Connection con=null;
Statement cs=null;
ResultSet rs=null;
try{
//分页 传2个东西
int pageNumber;//第几页
int pageSize;//页数尺寸
//request.getParameter() 返回的 String 类型
if(request.getParameter("pageNumber")==null||request.getParameter("pageNumber").equals("")){
pageNumber =1;
}else{
pageNumber = Integer.valueOf(request.getParameter("pageNumber"));
}
if(request.getParameter("pageSize")==null||request.getParameter("pageSize").equals("")){
pageSize = 3;
}else{
pageSize = Integer.valueOf(request.getParameter("pageSize"));
}
//判断 如果 第几页的数小于1 的话
if(pageNumber<1){
pageNumber =1;
}
//计算 分页的初始下标
int current = (pageNumber-1)*pageSize;
//分页 出示下标,每页大小
String select_sql = "select * from list limit "+current+","+pageSize;
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dian","root","root");
cs = con.createStatement();
rs = cs.executeQuery(select_sql);
%>
<head>
<meta charset="UTF-8">
<title>列表页面</title>
</head>
<!-- 导一下js -->
<script type="text/javascript" src="./js/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
function selectAll(obj){
if(obj.checked){
$(".ck").each(function(){
$(this).prop("checked",true);
})
}else{
$(".ck").each(function(){
$(this).prop("checked",false);
})
}
}
function fx(){
$(".ck").each(function(){
$(this).prop("checked",!$(this).prop("checked"));
});
}
function ps(){
var res="";
$(".ck:checked").each(function(){
/*if($(this).attr("checked",true)){
var va = $(this).val();
res += ","+va;
res += ","+$(this).val();
})
res=res.substring(1);
if(confirm("确认要删除吗?")){
location="delAll.jsp?id="+res;
}
}
</script>
<body>
<button onclick="ps()">批删</button>
<table border="1" align="center">
<tr>
<td>
<input type="checkbox" onclick="selectAll(this)">
<button onclick="fx()">反选</button>
</td>
<td>姓名</td>
<td>出生日期</td>
<td>性别</td>
<td>操作<a href="toAdd.jsp">增加</a></td>
</tr>
<%
while(rs.next()){
%>
<tr>
<td><input type="checkbox" class="ck" value="<%=rs.getInt("id")%>"></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getDate("birth_date")%></td>
<td><%=rs.getString("sex")%></td>
<td>
<a href="del.jsp?id=<%=rs.getInt("id")%>">删除</a>||
<a href="toUpdate.jsp?id=<%=rs.getInt("id")%>">修改</a>
</td>
</tr>
<%
}
%>
<%
//在这里写java代码 写计数
String sql = "select count(id) c from list";
Statement sc = con.createStatement();
ResultSet sr = sc.executeQuery(sql);
if(sr.next()){
//这个是 写 尾页 尾页的计算 = (计数-1)/页数大小+1
int countPage=(sr.getInt("c")-1)/pageSize+1;
//这个是用来写上一页的
int prePage = pageNumber -1;
int nextPage = pageNumber+1;
if(prePage<1){
prePage =1;
}
if(nextPage > countPage){
nextPage = countPage;
}
%>
<tr>
<td colspan="10">
第<%=pageNumber%>/<%=countPage%>页 共<%=sr.getInt("c")%>条数据
<a href="list.jsp?pageNumber=1&pageSize=<%=pageSize%>">首页</a>
<a href="list.jsp?pageNumber=<%=prePage%>&pageSize=<%=pageSize%>">上一页</a>
<a href="list.jsp?pageNumber=<%=nextPage%>&pageSize=<%=pageSize%>">下一页</a>
<a href="list.jsp?pageNumber=<%=countPage%>&pageSize=<%=pageSize%>">末页</a>
</td>
</tr>
<%
}
%>
</table>
<%
// 这个是用来连接前面try catch 的
}catch(Exception e){
e.printStackTrace();
}finally{
if(rs!= null){
try{
rs.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(cs!=null){
try{
cs.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(con!= null){
try{
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
%>
<!-- <%%> 这个里面写的是java代码-->
</body>
</html>
/连接数据库的那四步
//1. 加载驱动
//2.通过驱动管理器Driver manager 创建数据库连接 connection
//3.通过数据库创建预编译对象
//4.执行查询
String id = request.getParameter(“id”);
String sql = “delete from list where id in(”+id+")";
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dian”,“root”,“root”);
Statement cs = con.createStatement();
cs.executeUpdate(sql);
response.sendRedirect(“list.jsp”);
或者
String id = request.getParameter(“id”);
String sql = “select *from list where id =”+id;
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dian”,“root”,“root”);
//这里用的是 PreparedStatement 和 statement 做一下区别 前后2个单词不一样多一个d
PreparedStatement pre = con.prepareStatement(sql);
ResultSet rs = pre.executeQuery();