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 list1 = (List) request.getAttribute("list1");//左侧一
    List list2 = (List) request.getAttribute("list2");//左侧二
    List list3 = (List) request.getAttribute("list3");//左侧三
    List list = (List) request.getAttribute("list");//十一个主题
    List list4 = (List) 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);
%>

<html>
<head>
<base href="<%=basePath%>" />

<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> 密  码 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>
    
  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次时打印结束该标签

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

     当循环到12次时  取余又等于1了  又可以重新打印
  • 然后就是一直循环知道list集合循环 */ int n=0; for (Topic topic : list) { n++; if (n % 11 == 1) { out.println("
  • "); } %> <a href= "util/news_control.jsp?opr=listTitle&tid=<%=topic.getTid() %>"> <b><%=topic.getTname() %>b>a> <% if (n % 11 == 0) { out.println("
  • "
    ); } } /**然后就是有一个问题 当list循环完了 比如实际只有18个主题 循环晚11次 又循环了7次 第19次时 取余11不等于0不能打印然后这个for循环就结束了 然后就可以执行下面这个 判断语句了*/ if (n % 11 != 0) { out.println(""); } //这句话的用处就是打印结尾这个标签结束的用途了 //n=19取余11等于7!=0所以打印%> ul> <ul class="classlist"> <% /** 这里就是 分页新闻列表了的展示了 先做了个判断 就如传过来的list4对象指向的集合是空则 提示一个错误 如果传过来的list4对象指向的集合size()等于0则 提示没有相关的新闻 */ if (list4 == null) { out.println("
    出现错误,请稍后再试或与管理员联系
    "
    ); } else if (list4.size() == 0) { out.println("
    抱歉,没有找到相关的新闻
    "
    ); } 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("
  • "
    ); } } } //到这里 主页的新闻list4就都显示完全了 //下面就是就开始分页的编写了 %>
    <p align="center"> 当前页数:[<%=pageIndex%>/<%=totalPages%><% //这里是分页汉子的显示部分 /** 当页码大于一时才会显示首页这个汉子 当页码小于最大值时才会显示末页这个汉子,当页码等于最大值的时候就啥也没有了因为else语句都没有, 同理首页也是这样,只有当前页码大于一时才显示,等于一或者负数都没有,当然这里是不可能为负数的 因为初始值就为1 然后为一时只显示下一页和末页 点击下一页后 才显示上一页和首页字样 当页码为最大值时 末页也没有 课件上有另一种显示风格 就是当页码为最大值时 末页显示 但是把他的功能失效 我忘记怎么写的了 一会看看 是这么写的 if(pageIndex!=1){-正常显示-} else{ "javaScript:void(0);"style="color:grey;">首页} */ //好了 下面咱们就去看看 这个 news_control.jsp吧 if (pageIndex > 1) { //控制页面显示风格 fenye %> <a href="util/news_control.jsp?opr=listTitle&pageIndex=1">首页a<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>

    你可能感兴趣的:(web,项目分页,个人笔记,web项目)