一.界面分页
1.What?分页是什么?
首先提出一个技术点,要知道它是什么?那么分页查询到底是什么呢?大家先看一个效果图。
2.Why?为什么要用分页查询?
当很多条数据在一个界面上显示出来的时候,如果要查看最后一条数据,我们亲爱的用户就需要自己手动拉动滚动条到最下方,当我们用了分页查询,就可以将很多数据分成几页来显示,看起来整齐干净,也方便用户查找。
3.分页思路
pageIndex:页码
pageSize:每页的数据条数
start=(pageIndex-1)*pageSize+1;
end:pageIndex*pageSizeint pageIndex = 1;//页码
4.接收页码
String index = request.getParameter("pageIndex");
if(index!=null){//如果接收到页面,就给页面pageIndex赋值
pageIndex = Integer.valueOf(index);
}
int pageSize = 5;//每页的数据条数,每页5条数据
5. 计算最大页码
int maxPage = count/pageSize;
//判断能不能整除,不能整除说明还有不够一页的数据
if(count%pageSize!=0){
maxPage++;
}
完整代码
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻管理系统</title>
<link href="CSS/admin.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<div id="welcome">欢迎使用新闻管理系统!</div>
<div id="nav">
<div id="logo"><img src="images/logo.jpg" alt="新闻中国" /></div>
<div id="a_b01"><img src="images/a_b01.gif" alt="" /></div>
</div>
</div>
<div id="admin_bar">
<div id="status">管理员:<%=session.getAttribute("a") %>      <a href="login.jsp">登录</a></div>
<div id="channel"> </div>
</div>
<div id="main">
<div id="opt_list">
<ul>
<li><a href="newspages/add_news.jsp">添加新闻</a></li>
<li><a href="admin.jsp">编辑新闻</a></li>
<li><a href="admin.jsp">查找新闻</a></li>
<li><a href="newspages/add_sub.jsp">添加主题</a></li>
<li><a href="newspages/update_sub.jsp">编辑主题</a></li>
<li><a href="dodele.jsp">删除主题</a></li>
</ul>
</div>
<div id="opt_area">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<script language="javascript">
function clickdel(){
return confirm("删除请点击确认");
}
</script>
<form action="mhcx.jsp" align="center">
<input type="text" name="str">
<input type="submit" value="查询">
</form>
<ul class="classlist">
<% //连接数据库,查询新闻新
Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
Connection con = DriverManager.getConnection(url, "scott", "tiger");
//求出数据总条数
PreparedStatement ps = con.prepareStatement("select count(*) from news");
ResultSet rs = ps.executeQuery();
int count = 0;
if(rs.next()){
count = rs.getInt(1);
}
int pageIndex = 1;//页码
//接收页码
String index = request.getParameter("pageIndex");
if(index!=null){//如果接收到页面,就给页面pageIndex赋值
pageIndex = Integer.valueOf(index);
}
int pageSize = 5;//每页的数据条数,每页5条数据
//计算最大页码
int maxPage = count/pageSize;
//判断能不能整除,不能整除说明还有不够一页的数据
if(count%pageSize!=0){
maxPage++;
}
int start = (pageIndex-1)*pageSize+1;
int end = pageIndex*pageSize;
String sql = "select * from(select a.*,rownum mid from news a)b where mid>=? and mid<=?";
ps = con.prepareStatement(sql);
ps.setInt(1,start);
ps.setInt(2, end);
rs = ps.executeQuery();
while(rs.next()){
%>
<li>
<a href="newspages/news_read.jsp?nid=<%=rs.getInt(1)%>">
<%=rs.getString("ntitle") %></a><span> 作者:
<%=rs.getString("nzz") %>
     <a href='newspages/up_news.jsp?nid=<%=rs.getInt(1)%>'>修改</a>     
<a href='dodelnenws.jsp?nid=<%=rs.getInt(1) %>' onclick='return clickdel()'>删除</a> </span> </li>
<li class='space'></li>
<%} %>
<p align="right">
<a href="admin.jsp">首页</a> <a href="admin.jsp?pageIndex=<%=pageIndex>1?pageIndex-1:1%>">上一页</a>
当前页数:[<%=pageIndex %>/<%=maxPage %>]
<a href="admin.jsp?pageIndex=<%=pageIndex<maxPage?pageIndex+1:maxPage%>">下一页</a>
<a href="admin.jsp?pageIndex=<%=maxPage%>">末页</a>
</p>
</ul>
</div>
</div>
<div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span> <a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span> <a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div>
<div id="footer">
<p class="">24小时客户服务热线:010-68988888      <a href="#">常见问题解答</a>      新闻热线:010-627488888<br />
文明办网文明上网举报电话:010-627488888      举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p>
<p class="copyright">Copyright © 1999-2009 News China gov, All Right Reserver<br />
新闻中国 版权所有</p>
</div>
</body>
</html>
二.评论功能
功能处使用了内置对象
1)request
request: 请求、作用域在请求对象之间(两个页面之间传递数据)
2)session
session:用户级别(整个用户操作页面之间传递数据)
通过Session可以在应用程序的WEB页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。
1.添加评论
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
//接收评论人的编号(用户编号)
Object id = session.getAttribute("uuid");
int uuid = (Integer)id;//强转
//评论人的IP
String pip = request.getParameter("cip");
//接收新闻编号(给哪一篇新闻评论)
int nid = Integer.valueOf(request.getParameter("nid"));
session.setAttribute("nid", nid);
//评论内容
String pnr = request.getParameter("ccontent");
//评论主键编号:连接数据库查询到最大编号 然后加1
int nextPid = 1;
//连接数据库
Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
Connection con = DriverManager.getConnection(url, "scott", "tiger");
PreparedStatement ps = con.prepareStatement("select max(pid) from ptext");
ResultSet rs = ps.executeQuery();
if(rs.next()){
nextPid = rs.getInt(1)+1;
}
//连接数据库,添加评论
ps = con.prepareStatement("insert into ptext values(?,?,?,?,sysdate,?)");
ps.setInt(1, nextPid);
ps.setInt(2, uuid);
ps.setInt(3, nid);
ps.setString(4, pnr);
ps.setString(5, pip);
int i = ps.executeUpdate();
if(i>0){
out.print("<script>alert('评论成功');location.href='news_read.jsp?nid="+nid+"'</script>");
}else{
out.print("<script>alert('评论失败');location.href='news_read.jsp?nid="+nid+"'</script>");
}
%>
2.删除评论
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String id=request.getParameter("pid");
Object ids = session.getAttribute("nid");
int nid = (Integer)ids;//强转
int snid=Integer.valueOf(id);
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、连接数据库
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
Connection con = DriverManager.getConnection(url, "scott", "tiger");
//3、定义那个对象,用来执行sql语句
PreparedStatement ps = con.prepareStatement("delete ptext where pid="+snid);
int i=ps.executeUpdate();
if(i>0){
out.print("<script>alert('删除成功');location.href='news_read.jsp?nid="+nid+"'</script>");
}else{
out.print("<script>alert('删除失败');location.href='news_read.jsp?nid="+nid+"'</script>");
}%>
听说古时候的书信,要白费许多力气。
要快马加鞭,生怕来不及,要穿风,要过雨,要一口气为你走去好几公里。
当你打开这封信的时候,我正在想你。