新闻(project)之界面分页 and 评论功能

一.界面分页

1.What?分页是什么?

        首先提出一个技术点,要知道它是什么?那么分页查询到底是什么呢?大家先看一个效果图

2.Why?为什么要用分页查询?

        当很多条数据在一个界面上显示出来的时候,如果要查看最后一条数据,我们亲爱的用户就需要自己手动拉动滚动条到最下方,当我们用了分页查询,就可以将很多数据分成几页来显示,看起来整齐干净,也方便用户查找

3.分页思路

pageIndex:页码 
 pageSize:每页的数据条数  
 start=(pageIndex-1)*pageSize+1;
 end:pageIndex*pageSize

int 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") %>   &#160;&#160;&#160;&#160; <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") %>                                             
        &#160;&#160;&#160;&#160; <a href='newspages/up_news.jsp?nid=<%=rs.getInt(1)%>'>修改</a> &#160;&#160;&#160;&#160; 
        <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>
      		&nbsp;当前页数:[<%=pageIndex %>/<%=maxPage %>]&nbsp; 
      		<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  &#160;&#160;&#160;&#160; <a href="#">常见问题解答</a> &#160;&#160;&#160;&#160;  新闻热线:010-627488888<br />
    文明办网文明上网举报电话:010-627488888  &#160;&#160;&#160;&#160;  举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p>
  <p class="copyright">Copyright &copy; 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>");
}%>


听说古时候的书信,要白费许多力气。

要快马加鞭,生怕来不及,要穿风,要过雨,要一口气为你走去好几公里。

当你打开这封信的时候,我正在想你。

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔竹观尘世

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值