jsp多链接分页

jsp多链接分页

1.实现效果:

2.实现代码详解与分析

//<%Java代码必须在这里面写%>,带参数类型<%=参数名%>

<body>
<%
ArticleDao artDao = new ArticleDao();     //方法类(方法都写在这里面,在后面会显示这个类的代码)
String getType = request.getParameter("type");//获得你点击的链接的参数type
String getSort = request.getParameter("sort");//sort
int pageNow=1;//设置当前第1页
int pagecount=0;//设置一共有几页,初始化为0

//获取当前是第几页,获得的是String类型,要转成Int型
String s_pageNow=request.getParameter("pageNow");
if(s_pageNow!=null){
pageNow=Integer.parseInt(s_pageNow);
}
%>

<div class="main">
<div class="title">
<font>文章列表</font>
<div class="title_div_Style">
</div>
</div>
<div style="width: 100%;height: 80%;">

<%
List<String> typeList = new ArrayList<String>();//定义List数组,用来存获得的数据
typeList = artDao.getAllType();//获得数据type(中心介绍那一行的数据)
if (typeList.size() > 0) {
%>
<div class="sort_Style">
<%
if (getType == null) {
%>
<a>全部</a> 
<%
} else {
%>
<a href="textList.jsp">全部:</a>
<%
}
%>

<%
for (int i = 0; i < typeList.size(); i++) {
String type = typeList.get(i);
if (type.equals(getType)) {
%>
<a><%=type%></a>   // //处理数据,链接显示形式(可点,不可点),这里不可点
<%
} else {
%>
<a href="textList.jsp?type=<%=type%>"><%=type%></a>  //链接可点
<%
}
}
%>
</div>
<%
}
%>

<%
if (getType != null) {

List<String> sortList = new ArrayList<String>();
sortList = artDao.getSortByType(getType);  //获得type下的类型(研究平台,研究成果那一行)

if (sortList.size() > 0) {
%>
<div class="sort_Style">
<span style="float: left;">选择类型:</span>
<%
for (int i = 0; i < sortList.size(); i++) {
String sort = sortList.get(i);
if (sort.equals(getSort)) {
%>
<a><%=sort%></a>//处理数据
<%
} else {
%>
<a href="textList.jsp?type=<%=getType%>&sort=<%=sort%>"><%=sort%></a>
<%
}
}
%>
</div>

<%
}
else{
System.out.println("\n出错了!!");
}
}

List<Article> artList = new ArrayList<Article>();

//type和sort都为Null,getArt(pageNow)获得数据,pagecount获得此链接下总页数
if (getType == null && getSort == null) {
artList = artDao.getArt(pageNow);
pagecount=artDao.getArtcount();

}

//type不为null,sort为Null,getArt(getType,pageNow)重载获得数据,pagecount获得此链接下总页数

if (getType != null && getSort == null) {
artList = artDao.getArt(getType,pageNow);
pagecount=artDao.getArtcountByType(getType);
}

//type和sort都不为Null,getArt(getType, getSort,pageNow)重载获得数据,pagecount获得此链接下总页数

if (getType != null && getSort != null) {
artList = artDao.getArt(getType, getSort,pageNow);
pagecount=artDao.getArtcount(getType, getSort);
}

//获取所需的记录数(这里仅仅是显示出来数据,下一步链接未做)

if (artList.size() != 0) {
%>
<ul class="notice_ul">
<%
for (int i = 0; i < artList.size(); i++) {
Article art = artList.get(i);
%>
<li><a href="article.jsp?id=<%=art.getId()%>"> <%=art.getTitle()%>
</a> <span><a href="textServlet?action=delete&id=<%=art.getId()%>">删除</a></span>
<span>编辑</span> <%
if (0 == art.getIsTop()) {
%> <span style="width: 60px;text-align: right;"><a href="textServlet?action=setTop&id=<%=art.getId()%>">置顶</a></span> <%
} else {
%>
<span style="width: 60px;text-align: right;"><a href="textServlet?action=updateTop&id=<%=art.getId()%>">取消置顶</a></span> <%
}
%> <span style="margin-right: 20px;"><%=art.getDate().toString()%></span>
<span><%=art.getAuthor()%></span></li>
<%
}
%>
</ul>
<%
} else {
%>没有内容!<%
}
%>
</div>

<div class="page_Style">

//下面这一段代码实现([首页][下一页].....)那一行
<%

//type和sort都为null
if (getType == null && getSort == null) {
%>
<a href="textList.jsp?pageNow=1">[首页]</a> //首页,pageNow=1
<%
if(pageNow!=1){%>
<a href="textList.jsp?pageNow=<%=pageNow-1%>">[上一页]</a>//上一页,如果当前页是第一页,就不显示此链接,链接的参数pageNow=<%=pageNow-1%>
<%
}
for(int i=1;i<=pagecount;i++){
if(i==pageNow){
%>
[<%=i%>]   //i=pageNow(当前页),链接不跳转
<%
}else{
%>
<a href="textList.jsp?pageNow=<%=i%>">[<%=i%>]</a>//显示页数链接
<%
}
}

if(pageNow!=pagecount){%>
<a href="textList.jsp?pageNow=<%=pageNow+1%>">[下一页]</a> //下一页,如果当前页最后一页,就不显示此链接,链接的参数pageNow=<%=pageNow+1%>
<%}
%>
<a href="textList.jsp?pageNow=<%=pagecount%>">[尾页]</a>//尾页,pageNow=pagecount(总页数,之前方法中获得数值)

<%}

//下面和上面雷同,区别在于<a>便签后面链接中多加了参数传输

if (getType != null && getSort == null) {
%>
<a href="textList.jsp?pageNow=1&type=<%=getType%>">[首页]</a>
<%
if(pageNow!=1){
%>
<a href="textList.jsp?pageNow=<%=pageNow-1 %>&type=<%=getType%>">[上一页]</a>
<%}
for(int i=1;i<=pagecount;i++){
if(i==pageNow){
%>
[<%=i %>]
<%}else{
%>
<a href="textList.jsp?pageNow=<%=i%>&type=<%=getType%>">[<%=i%>]</a>
<%
}}
if(pageNow!=pagecount){
%>
<a href="textList.jsp?pageNow=<%=pageNow+1 %>&type=<%=getType%>">[下一页]</a>
<%
}
%>
<a href="textList.jsp?pageNow=<%=pagecount %>&type=<%=getType%>">[尾页]</a>
<% }
if (getType != null && getSort != null) {
%>
<a href="textList.jsp?pageNow=1&type=<%=getType%>&sort=<%=getSort%>">[首页]</a>
<%
if(pageNow!=1){
%>
<a href="textList.jsp?pageNow=<%=pageNow-1 %>&type=<%=getType%>&sort=<%=getSort%>">[上一页]</a>
<%
}

for(int i=1;i<=pagecount;i++){
if(i==pageNow){
%>
[<%=i %>]
<% }else{%>
<a href="textList.jsp?pageNow=<%=i%>&type=<%=getType%>&sort=<%=getSort%>">[<%=i%>]</a>

<%}
}
if(pageNow!=pagecount){
%>
<a href="textList.jsp?pageNow=<%=pageNow+1 %>&type=<%=getType%>&sort=<%=getSort%>">[下一页]</a>
<%
}
%>
<a href="textList.jsp?pageNow=<%=pagecount%>&type=<%=getType%>&sort=<%=getSort%>">[尾页]</a>
<% }

%>
</div>
<div class="button_left">
<form action="editorPart.jsp">
<button>添加文章</button>
</form>
</div>
</div>
</body>

下面显示方法类中的代码(数据库方面的就不详细介绍了):

public class ArticleDao {

private static Connection conn;
private static PreparedStatement stmt;
private static ResultSet result;
private int pageSize=3;//希望一页有多少条数据
private int pageCount=0;//总共有多少页
private int rowCount=0;//一共有多少条数据,决定了有多少页

/**
* 获得所有的类型
* @return type类型列表
*/
public List<String> getAllType(){
List<String> typeList=new ArrayList<String>();
String strSql="select type FROM article group by type";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
result = stmt.executeQuery();
while (result.next()) {
String type=result.getString("type");
typeList.add(type);
}
} catch (SQLException e) {
System.out.println("查询分类失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return typeList;
}

/**
* 获得对应type的类型
* @return sort类型列表
*/
public List<String> getSortByType(String type){
List<String> sortList=new ArrayList<String>();
String strSql="select sort FROM article where type=? group by sort";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
stmt.setString(1, type);
result = stmt.executeQuery();
while (result.next()) {
String sort=result.getString("sort");
sortList.add(sort);
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return sortList;
}

/**
* 获得type和sort都不为空下的数据

*这里分页sql语句用的是limit,如果数据库不支持的话可以用这一句

*  SELECT TOP 页大小 *
      FROM table
     WHERE id NOT IN
          (
          SELECT TOP 页大小*(页数-1) id FROM table ORDER BY id
          )

* @return artlist类型列表
*/
public List<Article> getArt(String type,String sort,int pageNow){
List<Article> artList=new ArrayList<Article>();
String strSql="select * FROM article WHERE type=? and sort=? order by isTop desc,textDate desc LIMIT "+pageSize * (pageNow-1)+","+pageSize+"";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
stmt.setString(1, type);
stmt.setString(2, sort);
result = stmt.executeQuery();
while (result.next()) {
Article article=new Article();
article.setId(result.getInt("id"));
article.setTitle(result.getString("title"));
article.setAuthor(result.getString("author"));
article.setContent(result.getString("content"));
article.setType(result.getString("type"));
article.setSort(result.getString("sort"));
article.setDate(result.getDate("textDate"));
article.setIsTop(result.getInt("isTop"));
artList.add(article);
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return artList;

/**
* 查询type和sort不为空下的页总数
* @param type 类型,sort分类
* @return pagecount
*/

public int getArtcount(String type,String sort){
String strSql="select count(*) FROM article where type=? and sort=? ";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
stmt.setString(1, type);
stmt.setString(2, sort);
result = stmt.executeQuery();
while (result.next()) {
rowCount=result.getInt(1);

}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}
else{
pageCount=(rowCount/pageSize)+1;
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return pageCount;
}

/**
* 获得type不为空和sort为空下的数据

*这里分页sql语句用的是limit,如果数据库不支持的话可以用这一句

*  SELECT TOP 页大小 *
      FROM table
     WHERE id NOT IN
          (
          SELECT TOP 页大小*(页数-1) id FROM table ORDER BY id
          )

* @return artlist类型列表
*/

public List<Article> getArt(String type,int pageNow){
List<Article> artList=new ArrayList<Article>();
String strSql="select * FROM article WHERE type= ? order by isTop desc,textDate desc LIMIT "+pageSize * (pageNow-1)+","+pageSize+"";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
stmt.setString(1, type);
result = stmt.executeQuery();
while (result.next()) {
Article article=new Article();
article.setId(result.getInt("id"));
article.setTitle(result.getString("title"));
article.setAuthor(result.getString("author"));
article.setContent(result.getString("content"));
article.setType(result.getString("type"));
article.setSort(result.getString("sort"));
article.setDate(result.getDate("textDate"));
article.setIsTop(result.getInt("isTop"));
artList.add(article);
}
} catch (SQLException e) {

e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return artList;
}

/**
* 查询type不为空,sort为空下的页总数
* @param type 类型
* @return pagecount
*/
public int getArtcountByType(String type){
String strSql="select count(*) FROM article where type=? ";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
stmt.setString(1, type);
result = stmt.executeQuery();
while (result.next()) {
rowCount=result.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}
else{
pageCount=(rowCount/pageSize)+1;
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return pageCount;
}

/**
* 获得type,sort都为空下的数据

*这里分页sql语句用的是limit,如果数据库不支持的话可以用这一句

*  SELECT TOP 页大小 *
      FROM table
     WHERE id NOT IN
          (
          SELECT TOP 页大小*(页数-1) id FROM table ORDER BY id
          )

* @return artlist类型列表
*/

public List<Article> getArt(int pageNow){
List<Article> artList=new ArrayList<Article>();
String strSql="select * FROM article order by isTop desc,textDate desc LIMIT "+pageSize * (pageNow-1)+","+pageSize+"";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
result = stmt.executeQuery();
while (result.next()) {
Article article=new Article();
article.setId(result.getInt("id"));
article.setTitle(result.getString("title"));
article.setAuthor(result.getString("author"));
article.setContent(result.getString("content"));
article.setType(result.getString("type"));
article.setSort(result.getString("sort"));
article.setDate(result.getDate("textDate"));
article.setIsTop(result.getInt("isTop"));
artList.add(article);
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return artList;
}

/**
* 查询type,sort都为空下的页总数
* @param 
* @return pagecount
*/
public int getArtcount(){

String strSql="select count(*) FROM article ";
try {
conn = JdbcUtil.getConnection();
stmt = conn.prepareStatement(strSql);
result = stmt.executeQuery();
while (result.next()) {
rowCount=result.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}
else{
pageCount=(rowCount/pageSize)+1;
}
} catch (SQLException e) {
System.out.println("查询对应类型失败!");
e.printStackTrace();
} finally {
JdbcUtil.close(result, stmt, conn);
}
return pageCount;
}

}

时间: 2024-11-07 07:13:15

jsp多链接分页的相关文章

jsp自定义标签分页

自定义标签分页大大简化了jsp页面的代码量,减少了代码的冗余,提高了代码的重用性. 第一步:建立分页实体page类 1 package com.soda.util; 2 /** 3 * @description 分页实体类 4 * @author line 5 * @time 2016年8月28日11:16:50 6 */ 7 public class Page { 8 private int pageSize;//每页记录per 9 private int totalSize;//总记录tot

【知了堂学习笔记】JSP页面数据分页实现(一)——分页概念以及主流数据库的分页查询

一.分页简介 1.分页,就是一种将数据库里的数据一部分展示给用户的技术.为什么要这样做呢?因为一般来说用户在查询时数据是非常多的,当一个页面不能显示所有数据时,我们就要对查询的数据进行分页,就像我们的书本分成一页一页一样.最简单的例子就是百度,当你百度时,成千上万的数据,并不是呈现在一个页面的. 2.分页的实现方式 1)假分页(不推荐):什么是假分页呢?假分页就是一次性将数据库里的数据全部取出来,存储在页面中,然后再将数据分别展示出来.这种假分页在数据少的还可以玩玩,当数据多起来的时候,这种方式

jsp、js分页功能的简单总结

一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分页技术,有选择的加载某部分数据,在数据量较大的时候,分部分加载数据.显示数据,可以有效提高程序的性能,当然,单纯的js的分页技术并没有这种效果. 所以,分页技术是web技术中比较常用的技术,而下面讨论的主要是两种分页技术:一种是jsp的分页技术,其读取数据分批次读取,操作页数跳转的时候才加载相应页面

jsp+oracle 排序分页+Pageutil类

1.rownum和排序 Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了. SQL> select rownum ,id,name from student order by name; ROWNUM ID      NAME 3 200003 李三 2 200002 王二 1 200001 张一 4 200004 赵四 可以看出,rownum并不是按照name列来生成的序号.系统是按照记录插入时的顺序给记录排的号,rowid

JSP+Oracle实现分页功能

Oracle: create table load( id char(200) not null, title varchar2(100) not null, time varchar2(100) not null, def1 varchar2(100), def2 varchar2(200), def3 varchar2(300), def4 varchar2(400), def5 varchar2(500), dr number(10) default 0, ts char(19) defa

关于jsp页面链接在不同浏览器中出错的问题解决

随着技术的发展,各种浏览器从层不穷,因为不同浏览器思路的不同,不同的浏览器追求的目标迥异,也就导致了相同的链接写法,在不同浏览器中其根目录有所差别. IE浏览器跟火狐还有谷歌浏览器在根路径的处理上有很大的差别. 没有办法,在jsp页面添加 <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":&quo

JSP 基于Oracle分页

booklist.jsp <%@page import="books.accp.utils.Pager"%> <%@page import="books.accp.entities.Book"%> <%@page import="java.util.List"%> <%@page import="books.accp.bizImpl.BooksMangerImpl"%> <

用Servlet与JSP中实现分页查询

这个题目,总共分4个部分 1.查询总页数,把页码显示在页面上 2.把每页的内容显示在页面上 3.首页,尾页,上一页,下一页 4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页) 详解如下:(一部分代码在servlet中,一部分代码在JSP中) Servlet package com.lianxi; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException;

Jsp中文链接无法打开/下载?

解决方法有二: 1.在Serverl.xml(TomCat中的一个配置文件)中的< <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" /> > 内加入 URIEncoding = ”UTF-8“ 重启TomCat,即可