Web 新闻项目-注解版

这里写代码片<%@page import="org.news.util.Page"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="org.news.entity.Topic"%>
<%@page import="org.news.entity.News"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%  List<News> list1 = (List<News>) request.getAttribute("list1");//左侧一
    List<News> list2 = (List<News>) request.getAttribute("list2");//左侧二
    List<News> list3 = (List<News>) request.getAttribute("list3");//左侧三
    List<Topic> list = (List<Topic>) request.getAttribute("list");//十一个主题
    List<News> list4 = (List<News>) request.getAttribute("list4");//中间新闻列表
    Page pageObj = (Page) request.getAttribute("pageObj");
    out.print("if语句执行次数1");
   if(list1 == null && list2 == null && list3 == null) {
       out.print("if语句执行次数2");//集合里面有值 就不执行此处  直接往后执行了

        request.getRequestDispatcher("/util/news_control.jsp?opr=listTitle")
                .forward(request, response);

        return;//表示跳出了这个函数,这个函数后面有语句也不执行了,到此结束,返回到上一层了表示跳出了
    } 

     out.print("if语句执行次数3");
     out.print("每次换页后都会弹窗,可见每次传参给jsp地址后,当前jsp页面都会重新解析一次,然后把数据库的内容显示出来,我猜的 ");

    int totalPages = pageObj.getTotalPageCount();     //总页数
    int pageIndex = pageObj.getCurrPageNo();          //当前页码
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 out.print(basePath);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<base href="<%=basePath%>" />
<!-- base标签为页面上的所有链接规定默认地址或默认目标-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>新闻中国</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<script language="javascript">
    function check(){
    /* 这里是通过js来做了一个用户名及密码输出空值的判断 */
        var login_username = document.getElementById("uname");
        var login_password = document.getElementById("upwd");
        if(login_username.value == ""){
            alert("用户名不能为空!请重新填入!");
            login_username.focus(); 
            return false;
        }else if(login_password.value == ""){
            alert("密码不能为空!请重新填入!");
            login_password.focus();
            return false;
        }
        return true;
    }

    function focusOnLogin(){
        var login_username = document.getElementById("uname");
        alert("当body加载时,登录框就会获得焦点的方法 ,但是登录框感觉也没发生什么事啊");
        login_username.focus(); 
    }
</script>
</head>

<body onload="focusOnLogin()">

<div id="header">
  <div id="top_login">
    <form action="util/do_login.jsp" method="post" onsubmit="return check()">
      <label> 登录名 </label>
      <input type="text" name="uname" value="" class="login_input" />
      <label> 密&#160;&#160;码 </label>
      <input type="password" name="upwd" value="" class="login_input" />
      <input type="submit" class="login_sub" value="登录" />
      <label id="error"> </label>
      <img src="images/friend_logo.gif" alt="Google" id="friend_logo" />
    </form>
  </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>
    <!--mainnav end-->
  </div>
</div>
<div id="container">

<%@include file="index-elements/index_sidebar.jsp"%>

  <div class="main">
    <div class="class_type"> <img src="images/class_type.gif" alt="新闻中心" /> </div>
    <div class="content">
      <ul class="class_date">
      <%
      //这里就是 主要展示分页新闻的地方了
      /**
     这里用了一个for'循环 将list对象指向的集合遍历出来 就是第10行传过来的list对象
     意思就是 list对象里面  包含了多少条新闻 就循环多少次  用的是加强型for循环  不需要指定循环次数
     然后循环里 定义了一个int n用来做什么的呢

     011取余等于0
     111取余等于1
     211取余等于2
     ...
     1111取余等于0
     1211取余等于1
     ...
     即当n从1开始是  取余结果为1
     二当循环次数等于11时  (这个时候已经循环11次)
     当第11次时打印</li>结束该标签

     栈实力一行是一个主题 国内 国际 军事...一共十一个a标签

     当循环到12次时  取余又等于1了  又可以重新打印<li >
     然后就是一直循环知道list集合循环

      */
      int n=0;
      for (Topic topic : list) {
          n++;
          if (n % 11 == 1) { out.println("<li id='class_month'>"); }
          %>
          <a href=
          "util/news_control.jsp?opr=listTitle&tid=<%=topic.getTid() %>">
          <b><%=topic.getTname() %></b></a>
          <%
          if (n % 11 == 0) { out.println("</li>"); }



      } 
      /**然后就是有一个问题 当list循环完了 比如实际只有18个主题
      循环晚11次
      又循环了7次
      第19次时 取余11不等于0不能打印</li>然后这个for循环就结束了

      然后就可以执行下面这个 判断语句了*/


      if (n % 11 != 0) { out.println("</li>"); }
      //这句话的用处就是打印结尾这个</li>标签结束的用途了
      //n=19取余11等于7!=0所以打印</li>%>

      </ul>


      <ul class="classlist">
      <%
      /**
      这里就是 分页新闻列表了的展示了 
      先做了个判断
      就如传过来的list4对象指向的集合是空则  提示一个错误
      如果传过来的list4对象指向的集合size()等于0则 提示没有相关的新闻

      */
      if (list4 == null) { out.println("<h6>出现错误,请稍后再试或与管理员联系</h6>"); }
      else if (list4.size() == 0) { out.println("<h6>抱歉,没有找到相关的新闻</h6>"); }
      else {
      /**
      就遍历是执行list4的
      判断后 集合中有内容 则进入else代码块 
      这里初始化了一个时间的实现方法SimpleDateFormat()我猜的
      */
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        n = 0;
        for (News news : list4) { %>
          <li>
          <%//下面这个连接通过nid网页传参  指向到news_control.jsp ,并解析到该nid对应的新闻页面页面 %>
            <a href='util/news_control.jsp?opr=readNew&nid=<%=news.getNid() %>'>
                <%=news.getNtitle() %></a>
                <%//就是觉得这个 SimpleDateFormat()对象的 format()方法 返回一个初始化的时间字符串,
                //这里是通过news对象获取到的新闻创建时间
                //并把这个时间进行format然后返回一个字符串进行显示%>
            <span><%=df.format(news.getNcreatedate()) %></span>
          </li>
      <%  n++;
      //这个n的用处和上面你的 11是一个意思  就是显示的新闻列表 五个五个的一组显示
          if (n % 5 == 0) { out.println("<li class='space'></li>"); }
        }
      } 


      //到这里 主页的新闻list4就都显示完全了 
      //下面就是就开始分页的编写了

      %>


      <!-- 当前页就是两个参数了 一个是总页数的分母
       一个就是分子
       这两个东西一开始就已经获取到了  
       26和27行
        -->
      <p align="center"> 当前页数:[<%=pageIndex%>/<%=totalPages%>]&nbsp;


      <%
 //这里是分页汉子的显示部分
 /**
 当页码大于一时才会显示首页这个汉子
 当页码小于最大值时才会显示末页这个汉子,当页码等于最大值的时候就啥也没有了因为else语句都没有,
 同理首页也是这样,只有当前页码大于一时才显示,等于一或者负数都没有,当然这里是不可能为负数的
 因为初始值就为1
 然后为一时只显示下一页和末页  点击下一页后
 才显示上一页和首页字样
 当页码为最大值时 末页也没有



 课件上有另一种显示风格 就是当页码为最大值时  末页显示 但是把他的功能失效  我忘记怎么写的了 一会看看
 是这么写的
 if(pageIndex!=1){-正常显示-}
 else{ <a href="javaScript:void(0);"style="color:grey;">首页</a>}
 */


 //好了 下面咱们就去看看 这个 news_control.jsp吧

      if (pageIndex > 1) { //控制页面显示风格 fenye
      %>   
          <a href="util/news_control.jsp?opr=listTitle&pageIndex=1">首页</a>&nbsp;
          <a href="util/news_control.jsp?opr=listTitle&pageIndex=<%=pageIndex-1%>">上一页</a>
      <%}
      if (pageIndex < totalPages) {//控制页面显示风格
      %>
          <a href="util/news_control.jsp?opr=listTitle&pageIndex=<%=pageIndex+1%>">下一页</a>
          <a href="util/news_control.jsp?opr=listTitle&pageIndex=<%=totalPages%>">末页</a> 
      <%}%></p>
      </ul>
    </div>
    <%@include file="index-elements/index_rightbar.html"%>
  </div>
</div>
  <%@include file="index-elements/index_bottom.html"%>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值