jsp页面显示新闻.公告之类的上一篇下一篇

简介:

http://hi.baidu.com/a393060727/blog/item/19dc08d5f2408acd51da4b3b.html

 

 

jsp页面显示新闻.公告之类的上一篇下一篇(转载)
2009-07-14 23:23

此方法有二种:
1 在JSP前台页面判断并输出,(适合初学,易理解)
2 在SERVLET里判断并输出(符合MVC架构)

我们先说第一种方法:

先说dao层,主要是取比当前ID小的只一条,取比当前ID大的只一条,注意排序!下面是在查询时的最基本语句,这是最基本的:
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";

   public News max(Long id)throws Exception{
   /**
   * 取下一条
   */
   News maxnews=null;
   try {
    conn=Dbinit.getConn();
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";
    pstmt=conn.prepareStatement("select * from news where id>? order by id asc limit 0,1 ;");
    pstmt.setLong(1, id);
    rs=pstmt.executeQuery();
    if(rs!=null && rs.next()){
     maxnews=new News();
     maxnews.setId(rs.getLong("id"));
     maxnews.setTitle(rs.getString("title"));
     maxnews.setZuozhe(rs.getString("zuozhe"));
     maxnews.setLaiyuan(rs.getString("laiyuan"));
     maxnews.setContent(rs.getString("content"));
     maxnews.setFabutime(rs.getString("fabutime"));
    }
   
   } catch (RuntimeException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
   }finally{
    Dbinit.close(rs, pstmt, conn);
   }
   return maxnews;
}

public News min(Long id)throws Exception{
   /**
   * 取上一条
   */
   News minnews=null;
   try {
    conn=Dbinit.getConn();
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";
    pstmt=conn.prepareStatement("select * from news where id<? order by id desc limit 0,1 ;");
    pstmt.setLong(1, id);
    rs=pstmt.executeQuery();
    if(rs!=null && rs.next()){
       minnews=new News();
     minnews.setId(rs.getLong("id"));
     minnews.setTitle(rs.getString("title"));
     minnews.setZuozhe(rs.getString("zuozhe"));
     minnews.setLaiyuan(rs.getString("laiyuan"));
     minnews.setContent(rs.getString("content"));
     minnews.setFabutime(rs.getString("fabutime"));
    }
   
   } catch (RuntimeException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
   }finally{
    Dbinit.close(rs, pstmt, conn);
   }
   return minnews;
}

 二 再说servlet层

在我们显示详细新闻的页面show.jsp所用的servlet方法show()中调用上面两个DAO方法

public void maxMin(HttpServletRequest request,HttpServletResponse response)throws Exception{
    /**
    * 专用来供前台show.jsp调用的方法(先经show()调用)
    */
    NewsDao newsdao = new NewsDao();
    News maxNews=null;
    News minNews =null;
    //StringBuffer out=new StringBuffer();
    //Long maxId=0L;
    //Long minId=0L;
    Long currentId=Long.parseLong(request.getParameter("id"));
    maxNews=newsdao.max(currentId);
    minNews=newsdao.min(currentId);
    request.setAttribute("currentid",currentId);
    request.setAttribute("maxnews", maxNews);
    request.setAttribute("minnews", minNews);          
    //return out.toString();
  
}

public void show(HttpServletRequest request,HttpServletResponse response)throws Exception{
    /**
    * 后台查看新闻详细信息
    */
    NewsDao newsdao = new NewsDao();
    Long id= Long.parseLong(request.getParameter("id"));
   News news = null;
   if (id!= 0) {
    try {
     news = newsdao.show(id);
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   this.maxMin(request, response);//调用
    request.setAttribute("viewnews", news);
    request.getRequestDispatcher("showNews.jsp").forward(request,response);
   }
    }

第三:前台show.jsp页面

<%@ page language="java" import="java.util.*,bean.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
   
    <title>${viewnews.title }</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
     <fieldset>
    <legend>新闻详细信息</legend>
   <div id="news">
      <div id="title">${viewnews.title }</div>
      <div id="come">新闻来源:${viewnews.laiyuan } &nbsp;&nbsp;编辑:${viewnews.zuozhe } &nbsp;&nbsp;发布时间:${viewnews.fabutime}</div>
      <div id="content">${viewnews.content }</div>
   </div>
   <div style="text-align:center;">[<a href="#" onClick="window.close();"><font color="#FF0000">关闭本页面</font></a>] </div>
  
   <!-- 上一篇 下一篇  -->
        <%
       News maxNews=null;
    News minNews=null;
       Long maxId=0L;
    Long minId=0L;
    Long currentid=(Long)request.getAttribute("currentid");
    maxNews=(News)request.getAttribute("maxnews");
    minNews=(News)request.getAttribute("minnews");
        if(maxNews!=null && minNews!=null){
       maxId=maxNews.getId();
       minId=minNews.getId();
       if(currentid<=minId){
       %>
       <div id="prenext">
       <span>上一篇: 没有上一篇</span>
       <span>下一篇: <a href="admin/news.do?method=show&id=${maxnews.id}">${maxnews.title }</a></span>
       </div>
       <%
       }
          if(minId<currentid && currentid<maxId){
       %>
       <div id="prenext">
       <span>上一篇: <a href="admin/news.do?method=show&id=${minnews.id}">${minnews.title }</a></span>
       <span>下一篇: <a href="admin/news.do?method=show&id=${maxnews.id}">${maxnews.title }</a></span>
       </div>
    <%
       }
          if(currentid>=maxId){
    %>
      <div id="prenext">
       <span>上一篇: <a href="admin/news.do?method=show&id=${minnews.id}">${minnews.title }</a></span>
       <span>下一篇: 没有下一篇</span></div>
    <%
       }
        }
    if(maxNews==null && minNews!=null){
       %>
     <div id="prenext">
       <span>上一篇: <a href="admin/news.do?method=show&id=${minnews.id}">${minnews.title }</a></span>
       <span>下一篇: <font color="red">没有下一篇</font></span></div>
    <%
    }
    if(maxNews!=null && minNews==null){
       %>
     <div id="prenext">
       <span>上一篇: <font color="red">没有上一篇</font></span>
       <span>下一篇: <a href="admin/news.do?method=show&id=${maxnews.id}">${maxnews.title }</a></span>
    <%
    }
    %>
    
   </fieldset>
</body>
</html>
=============================================================
==============================================================
下面开始说第二种方法:2 在SERVLET里判断并输出(符合MVC架构)

先说dao层,和上面的方法中一模一样:
主要是取比当前ID小的只一条,取比当前ID大的只一条,注意排序!下面是在查询时的最基本语句,这是最基本的:
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";

   public News max(Long id)throws Exception{
   /**
   * 取下一条
   */
   News maxnews=null;
   try {
    conn=Dbinit.getConn();
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";
    pstmt=conn.prepareStatement("select * from news where id>? order by id asc limit 0,1 ;");
    pstmt.setLong(1, id);
    rs=pstmt.executeQuery();
    if(rs!=null && rs.next()){
     maxnews=new News();
     maxnews.setId(rs.getLong("id"));
     maxnews.setTitle(rs.getString("title"));
     maxnews.setZuozhe(rs.getString("zuozhe"));
     maxnews.setLaiyuan(rs.getString("laiyuan"));
     maxnews.setContent(rs.getString("content"));
     maxnews.setFabutime(rs.getString("fabutime"));
    }
   
   } catch (RuntimeException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
   }finally{
    Dbinit.close(rs, pstmt, conn);
   }
   return maxnews;
}

public News min(Long id)throws Exception{
   /**
   * 取上一条
   */
   News minnews=null;
   try {
    conn=Dbinit.getConn();
    //String max="select max(id) from news where id< "+id+" order by id desc limit 0,1;";
    //String min="select min(id) from news where id> "+id+" order by id asc limit 0,1;";
    pstmt=conn.prepareStatement("select * from news where id<? order by id desc limit 0,1 ;");
    pstmt.setLong(1, id);
    rs=pstmt.executeQuery();
    if(rs!=null && rs.next()){
       minnews=new News();
     minnews.setId(rs.getLong("id"));
     minnews.setTitle(rs.getString("title"));
     minnews.setZuozhe(rs.getString("zuozhe"));
     minnews.setLaiyuan(rs.getString("laiyuan"));
     minnews.setContent(rs.getString("content"));
     minnews.setFabutime(rs.getString("fabutime"));
    }
   
   } catch (RuntimeException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return null;
   }finally{
    Dbinit.close(rs, pstmt, conn);
   }
   return minnews;
}

再说servlet层

public String updown(HttpServletRequest request,HttpServletResponse response)throws Exception{
    NewsDao newsdao = new NewsDao();
    News maxNews=null;
    News minNews=null;
    StringBuffer out=new StringBuffer();
    Long maxId=0L;
    Long minId=0L;
    Long currentId=Long.parseLong(request.getParameter("id"));
    maxNews=newsdao.max(currentId);
    minNews=newsdao.min(currentId);
    if (maxNews != null && minNews != null) {
        maxId = maxNews.getId();
        minId = minNews.getId();
        String maxstr = "admin/news.do?method=show&id=" + maxId;
        String minstr = "admin/news.do?method=show&id=" + minId;
       out.append("<div id='prenext'>");
      if (minId < currentId && currentId < maxId) {
     out.append("<span>上一篇:<a href=" + minstr + ">"+ minNews.getTitle() + "</a></span>");
     out.append("<span>下一篇:<a href=" + maxstr + ">"+ maxNews.getTitle() + "</a></span>");
    }   
   }
    if(maxNews != null && minNews == null){
     maxId = maxNews.getId();
     String maxstr = "admin/news.do?method=show&id=" + maxId;
    out.append("<span>上一篇:没有上一篇</span>");
    out.append("<span>下一篇:<a href="+maxstr+">"+ maxNews.getTitle() + "</a></span>");
     }
    if(maxNews == null && minNews != null){
        minId = minNews.getId();
        System.out.println(minId+"@@@@@@@@@@@@@@@");
        String minstr = "admin/news.do?method=show&id=" + minId;
       out.append("<span>上一篇:<a href=" + minstr + ">"+ minNews.getTitle() + "</a></span>");
    out.append("<span>下一篇:没有下一篇</span>");
    }

    out.append("</div>");
    return out.toString();
}

    public void show(HttpServletRequest request,HttpServletResponse response)throws Exception{
    /**
    * 后台查看新闻详细信息
    */
    NewsDao newsdao = new NewsDao();
    Long id= Long.parseLong(request.getParameter("id"));
   News news = null;
   if (id!= 0) {
    try {
     news = newsdao.show(id);
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

    String updown=this.updown(request, response);
    request.setAttribute("updown", updown);

    request.setAttribute("viewnews", news);
    request.getRequestDispatcher("showNews.jsp").forward(request,response);
   }
    }

最后,在前台调用就方便多了

一句话:${updown}

目录
相关文章
|
2月前
|
Java 应用服务中间件 开发工具
如何使用IDEA创建JSP页面
如何使用IDEA创建JSP页面
147 0
|
4月前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
7月前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
145 5
掌握JSP页面编程:动态生成Web内容
|
7月前
银行营业网点管理系统——修改的页面(updateBreaches.jsp)
银行营业网点管理系统——修改的页面(updateBreaches.jsp)
|
7月前
新闻发布项目——注册页面(reg.jsp)
新闻发布项目——注册页面(reg.jsp)
|
7月前
|
Java 数据库连接 mybatis
springboot访问jsp页面变成直接下载?
springboot访问jsp页面变成直接下载?
|
7月前
|
前端开发 Java
java实现动态验证码源代码——jsp页面
java实现动态验证码源代码——jsp页面
|
7月前
|
JavaScript 前端开发 Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
|
7月前
|
存储 缓存 Java
JSP页面生命周期详解及优化建议
JSP页面生命周期详解及优化建议
131 0
|
7月前
|
前端开发 Java
java通过commons-fileupload实现多张图片的上传(jsp页面)
java通过commons-fileupload实现多张图片的上传(jsp页面)