① 如何实现sql Server 2005快速Web分页
执行程序后的返回结果如下:
pagenumber
saleid
proct
saledate
saleprice
2
12
pooltable
7/11/1908
0:00
640
2
15
pooltable
8/11/1908
0:00
641
2
18
pooltable
9/11/1908
0:00
658
就如你所看到的,程序执行后将会返回一页的数据,包含三条记录,而且返回的是第二页的数据集。
需要注意的一点
一般来说,有两种方法完成数据结果的分页:在数据库层实现和不在数据库层实现。可以在客户端实现分页,但是这样做的时候,所有的数据都会返回到客户端,而且在进行数据分析的时候就决定了页面数目。在早期版本的sql server中,可以在数据库层实现分页,但是需要临时表和表变量。如果上面的例子没有使用cte来进行分页的话,分页程序就不会那么简单。之所以这么简单就是因为使用了row_number函数的强大功能。
② web开发树形列表怎么设置分页
在page类中新加入path属性,用以存储每次转发的路径及携带参数。
private String path;
新建WEBUtils类,获取路径,放在新声明的url中,简便页面中的EL表达式。
public static String getPath(HttpServletRequest request){
String requestURI = request.getRequestURI();//获取请求路径
String queryString = request.getQueryString();//获取请求参数
String url = requestURI+"?"+queryString;
if(url.contains("&pageNo")){
url = url.substring(0, url.indexOf("&pageNo"));
}
return url;
}
在servlet中将WEBUtils中获取的url放入page中。
page.setPath(url)
在要显示的页面写如下代码,主要是分类进行判断。
③ JAVA WEB 分页
这是我自己写的,不知道对lz有没有用
分页包括3个类Page.java,PageService.java,PageSizeConfig.java
一个接口:PageDAO
一个配置文件:page.xml
下面是源码:(比较懒,没有写注释)
Page.java
public class Page {
public int pageSize; //页面大小
private int rowSize;//数据总数
private int pageConut;//页数
private int page;//当前页数
public Page(int rowSize,int page,int pageSize)
{
this.rowSize=rowSize;
this.pageSize=pageSize;
pageConut=(rowSize-1)/pageSize+1;
this.page=page;
}
public int getRowSize() {
return rowSize;
}
public void setRowSize(int rowSize) {
this.rowSize = rowSize;
pageConut=(rowSize-1)/pageSize+1;
}
public int getPageConut() {
return pageConut;
}
public void setPageConut(int pageConut) {
this.pageConut = pageConut;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
//首页
public void first()
{
page=1;
}
//末页
public void last()
{
page=pageConut;
}
//下一页
public void next()
{
page++;
if(page>pageConut)
{
page=pageConut;
}
}
//上一页
public void previous()
{
page--;
if(page<1)
{
page=1;
}
}
//转到第currentPage页
public void go(int currentPage)
{
page=currentPage;
if(page<1)
{
page=1;
}
if(page>pageConut)
{
page=pageConut;
}
}
/**
* 获取"下一页"的可用状态
* 返回空表示不可用,相反则可用
* @return
*/
public String getNext()
{
if(page<pageConut)
{
return "next";
}
return "";
}
/**
* 获取"上一页"的可用状态
* 返回空表示不可用,相反则可用
* @return
*/
public String getPrevious()
{
if(page>1)
{
return "previous";
}
return "";
}
public int getPageSize() {
return pageSize;
}
}
PageServise.java
public class PageService {
public static void service(HttpServletRequest request,PageDAO ,String session)
{
int pageSize=PageSizeConfig.pageSize(.getClass().getName());
String pageAction=request.getParameter("pageAction");
Page p=(Page)request.getSession().getAttribute(session);
if(p==null)
{
p=new Page(.getRowCount(),1,pageSize);
System.out.println("count="+.getRowCount());
}
else
{
p.setRowSize(.getRowCount());
}
if(pageAction==null)
{
return;
}
if("first".equals(pageAction))
{
p.first();
}
else if ("last".equals(pageAction))
{
p.last();
}
else if("next".equals(pageAction))
{
p.next();
}
else if("previous".equals(pageAction))
{
p.previous();
}
else if("go".equals(pageAction))
{
int currentPage=Integer.parseInt(request.getParameter("currentPage"));
p.go(currentPage);
}
request.getSession().setAttribute(session, p);
int start=(p.getPage()-1)*pageSize;
List list=.getDataList(start, pageSize);
request.setAttribute("list", list);
List<Integer> pageList=new ArrayList<Integer>();
for(int i=1;i<=p.getPageConut();i++)
{
pageList.add(new Integer(i));
}
request.setAttribute("pageList", pageList);
}
}
PageSizeConfig.java
public class PageSizeConfig {
public static final int DEFAULT_PAGE_SIZE=5;
private static Map<String,Integer> map;
static
{
load();
}
private static void load()
{
map=new HashMap<String,Integer>();
try {
InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream("com/shop/page/page.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder bulider=factory.newDocumentBuilder();
Document doc=bulider.parse(is);
NodeList nl=doc.getElementsByTagName("size");
for(int i=0;i<nl.getLength();i++)
{
Node node=nl.item(i);
String type=node.getAttributes().item(0).getFirstChild().getNodeValue();
int size=Integer.parseInt(node.getTextContent());
map.put(type, new Integer(size));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static int pageSize(String className)
{
if(map.containsKey(className))
{
return map.get(className);
}
return DEFAULT_PAGE_SIZE;
}
}
PageDAO.java
package com.shop.page;
import java.util.List;
public interface PageDAO<T> {
int getRowCount();
List<T> getDataList(int start,int pageSize);
}
page.xml
<?xml version="1.0" encoding="UTF-8"?>
<page-config>
<size type="com.shop.page.impl.SearchGoodPageImpl">20</size>
</page-config>
我觉得有点不好的就是每个需要分页的地方都要创建一个session
如果lz觉得有用,email我:[email protected]
④ 使用SSI技术开发web项目如何实现分页
分页中,你的后台肯定能得到第几页和每页显示的行数,这样的话,你就能算出来需要查出来的是第几条的数据,如:你每页显示10条记录,现在想显示第二页的数据,则数据库里只需查出来第10-20的10条数据即可。在调用xml中的查询方法是,将计算出的这两个数据(如10,20)作为参数传进去。
以下是DB2中的分页查询语句
select * from (
select row_number() over() as rownum_ , row_.* from (
这里边写你查询的sql语句 如:
select ID AS "id", USER_NAME AS “userName" , PASS_WORD AS "password"
FROM TAB_NAME WHERE 1=1
AND 下边写你拼装的查询条件 如:
isNotEmpty prepend="and" property="id">
ID = #id#
isNotEmpty>
可以用order by 排序
取出前20行,这个参数应该是传入的参数,就是上边计算的第二个参数
fetch first 20 rows only
row_
)as temp where rownum_ <= 20 and rownum_ > 10 --表示取出的行数范围
其他数据库,如mysql、oracle等在row_number的取法中有区别,故导致分页的语句也会有一定的差异,需要你自己去参考些相关的文档,此出就不列举了
希望对你有所帮助。
⑤ javaweb项目的分页
手写分页太麻烦了。建议你前台用写框架比如ext或者easyui里面分页都是现成的。
比如easyui里面的datagrid传两个参数一个page当前是第几页,rows每页显示多少行,后台那这两个参数拼分页sql就行。他自动就给你实现了。如果要手写的话就用标签什么的实现,或者js里价格全局变量记录这两个参数
⑥ 如何实现SQL Server 2005快速web分页
在过去,开发人员通常需要自己编写程序,使用临时表格来实现分页功能,或者将所有的数据结果集返回到客户端,在客户端进行分页操作。从开发人员或者DBA的角度来看,两种方法都不能令人满意。 随着SQL Server的发布,其中的一些排序函数使得开发人员编写数据分页程序变得更加简单和高效。这些新的排序函数提供了统计数据集的数目,对数据集归类,按照某种标准对数据集排序等功能。在这篇文章中,我将着重介绍新增加的ROW-NUMBER排序函数,它会根据你指定的分类标准将结果数据集进行分类,同时给数据集分配连续的页面。 一个分页的实例 首先,需要定义一些数据结构。我们定义一个SalesHistory表格,它包含的数据是我们在网上售出产品的销售记录。包括一些常见的销售信息,例如,所售产品、售出日期、产品售出价格等。下面的脚本就是创建这样的一个表格:
⑦ javaweb中怎么实现分页查询
目前已知有些框架自带分页,比如easyui,要么你就用过sql手写分页,比如mysql的limit a,b等
⑧ Java Web 开发中怎么进行分页
实现原理很简单,就是建立一个Page类,里面放当前访问的页数(这个是从客户浏览器传到后台的数据,所以你的分页需要用它来定位记录的条目)和每一页显示的记录行数。然后通过分页计算就可以得出下列数据。
(假定你的页数从1开始)
1、总页数 = 总记录数/每页大小,如果0!=总记录数%每页大小,那么总页数再+1
2、当前页数(从浏览器传递的参数中获得)
3、表记录的起始位置=(当前页数-1)*每页大小
4、总记录数(select count(*) from [表名] [where [条件]],从数据库中查询得到)
5、每页大小,可以固定,也可以从页面传过来
有了这几个参数之后,就用sql语句查出对应的记录就可以了。
mysql数据库用limit 表记录的起始位置,每页大小 语句添加到你的查询语句最后面
sqlserver数据库用top语句和not in 来做
oracle数据库用rownum来做
再给你一段分页对象代码,你自己先读一下
public class Page {
private long totalCount = 0;// 总记录数
private int pageNumber = 1;// 当前页号,默认显示第一页
private int pageSize = 20; // 每页大小,默认每页20条
private int totalPage = 0;// 总页数,默认为0
private int startRow = 0;// 起始记录行号,默认为从表头开始
/**
* 分页计算方法,由setTotalCount调用
*/
public void pagination() {
// 计算总页数
if (this.totalCount % pageSize == 0)
this.totalPage = new Long(this.totalCount / pageSize).intValue();
else
this.totalPage = new Long(this.totalCount / pageSize).intValue() + 1;
// 排除错误页号
if (this.pageNumber < 1)
this.pageNumber = 1;
if (this.pageNumber > this.totalPage)
this.pageNumber = this.totalPage;
// 计算起始行号
this.startRow = (this.pageNumber - 1) * this.pageSize;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount) {
this.totalCount = totalCount;
this.pagination();
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
}
⑨ java web分页是怎么回事
得到的数据量过多,需要分页展示.
MySQL可以利用Limit关键字分页,也可以创建Bean完成分页。
非常简单的东西。而且企业是不需要你来做分页的 早就有人写好了!
⑩ 求java web高手教会我通过pager-taglib来实现web分页的作法。我的qq:408545919 不甚感激。
. emp表数据如下
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 0.00 30
下面代码输出的结果是:
...
ResultSet rs = stmt.executeQuery ("select comm from emp");
while(rs.next())
{
System.out.println(rs.getDouble(1) + "," +rs.wasNull());
}
A. 0, true 0, false
B. null, true 0,false
C. 0, false 0, false
D. 0, true 0, true