`
pan_java
  • 浏览: 280791 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我的网站上线了,请大家提点建议

    博客分类:
  • java
阅读更多
最近比较闲,学习了struts2,和ibatis,所以确定利用学习到的知识开发一个网站,看到百度知道,问问,比较火,结构也比较简单,就开发了一个问答类型的网站.

网站采用 spring + struts + ibatis 搜索采用compass DB mysql

网站测试地址:http://panxiuyan34.jspcn.net/ 正式域名:www.123why.com(怎么样比较好记吧)

昨天抓取了百度的30000条数据,没有违法吧!

希望大家给我提点建议,和改进的地方.

分享一个分页代码(基于标签jstl),希望对大家有用,类似淘宝,javaeye的形式有页块

package com.ask.page;

import java.io.Serializable;
import java.util.List;

/**
 * 封装分页信息
 * 
 */
public class Pagination<T> implements Serializable {
	private static final long serialVersionUID = -4263336128482001626L;
	private int total; // 总记录数
	private int pageIndex; // 当前页, 从1开始计数
	private int pageSize; // 页大小
	private List<T> items; // 页数据
	private int startRow; // 起始行, 从1开始计数
	private int endRow; // 结束行, 从1开始计数
	private int pageCount;// 总页数

	public Pagination() {
	}

	public Pagination(Pagination<T> page) {
		this.pageIndex = page.getPageIndex();
		this.pageSize = page.pageSize;

		this.startRow = pageSize * (pageIndex - 1) + 1;
		this.endRow = this.startRow + pageSize - 1;
	}

	public Pagination(int pageIndex, int pageSize) {
		this.pageIndex = pageIndex <= 0 ? 1 : pageIndex;
		this.pageSize = pageSize;

		this.startRow = pageSize * (this.pageIndex - 1) + 1;
		this.endRow = this.startRow + this.pageSize - 1;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
		if (total < pageSize) {
			this.pageCount = 1;
		} else {
			if (total % pageSize == 0) {
				this.pageCount = total / pageSize;
			} else {
				this.pageCount = total / pageSize + 1;
			}
		}

		if (pageIndex > pageCount) {
			this.pageIndex = this.pageCount;
			startRow = pageSize * (pageIndex - 1) + 1;
			endRow = startRow + pageSize - 1;
		}
	}

	public int getPageIndex() {
		return pageIndex;
	}

	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}

	public List<T> getItems() {
		return items;
	}

	public void setItems(List<T> items) {
		this.items = items;
	}

	public static long getSerialVersionUID() {
		return serialVersionUID;
	}

	/**
	 * 起始行位置, 从1开始计数
	 * 
	 * @return
	 */
	public int getStartRow() {
		return startRow;
	}

	public void setStartRow(int startRow) {
		this.startRow = startRow;
	}

	/**
	 * 结束行位置, 从1开始计数
	 * 
	 * @return
	 */
	public int getEndRow() {
		if(endRow>getTotal()){
			return getTotal();
		}
		return endRow;
	}

	public void setEndRow(int endRow) {
		this.endRow = endRow;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

}



public class PageTag extends SimpleTagSupport {

	private Pagination pagination;

	private String baseurl;

	public void setPagination(Pagination pagination) {
		this.pagination = pagination;
	}

	public void setBaseurl(String baseurl) {
		this.baseurl = baseurl;
	}

	// 分页区页码最大长度
	private final static int MAX_PAGE_HTML_LENGTH = 8;

	// 首部和尾部连续页码的长度
	private final static int PRE_LAST_PAGE_LENGTH = 5;

	@Override
	public void doTag() throws JspException, IOException {
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();

		if (pagination == null || pagination.getItems() == null
				|| pagination.getItems().size() == 0) {
			getJspContext().getOut().print("");
			return;
		}

		// 上一页
		if (pagination.getPageCount() > 1) {
			if (pagination.getPageIndex() == 1) {
				sb.append(createPrePage(0, true));
			} else {
				sb.append(createPrePage(pagination.getPageIndex() - 1, false));
			}
		}

		// 当总页数小于8时显示全部页码
		if (pagination.getPageCount() <= MAX_PAGE_HTML_LENGTH) {
			for (int i = 1; i <= pagination.getPageCount(); i++) {
				if (i == pagination.getPageIndex()) {
					sb.append(createPageIndex(i, true));
				} else {
					sb.append(createPageIndex(i, false));
				}
			}
		} else {
			// 当页码小于等于5时
			if (pagination.getPageIndex() <= PRE_LAST_PAGE_LENGTH) {
				sb.append(createHeader(pagination.getPageIndex() + 1,
						pagination));
				sb.append(createMiddle(0, pagination));
				sb.append(createFooter(pagination));
			} else if (pagination.getPageIndex() + 4 >= pagination
					.getPageCount()) {// 当页码为后5页时
				sb.append(createHeader(2, pagination));
				sb.append(createMiddle(0, pagination));
				sb.append(createFooter(pagination));
			} else {
				sb.append(createHeader(2, pagination));
				sb.append(createMiddle(3, pagination));
				sb.append(createFooter(pagination));
			}

		}

		// 下一页
		if (pagination.getPageCount() > 1) {
			if (pagination.getPageIndex() == pagination.getPageCount()) {
				sb.append(createNextPage(0, true));
			} else {
				sb.append(createNextPage(pagination.getPageIndex() + 1, false));
			}
		}
		sb.append(createPageInfo(pagination));
		getJspContext().getOut().print(sb.toString());

	}

	/**
	 * 头部创建
	 * 
	 * @param length
	 * @param pagination
	 * @return
	 */
	private String createHeader(int length, Pagination pagination) {
		StringBuilder sb = new StringBuilder();
		for (int i = 1; i <= length; i++) {
			if (i == pagination.getPageIndex()) {
				sb.append(createPageIndex(i, true));
			} else {
				sb.append(createPageIndex(i, false));
			}
		}
		return sb.toString();
	}

	/**
	 * 中部创建
	 * 
	 * @param length
	 * @param pagination
	 * @return
	 */
	private String createMiddle(int length, Pagination pagination) {
		StringBuilder sb = new StringBuilder();
		if (length == 0) {// 创建点...
			sb.append(createPoint());
		} else {
			sb.append(createPoint());
			for (int i = pagination.getPageIndex() - 1; i <= pagination
					.getPageIndex() + 1; i++) {
				if (i == pagination.getPageIndex()) {
					sb.append(createPageIndex(i, true));
				} else {
					sb.append(createPageIndex(i, false));
				}
			}
			sb.append(createPoint());
		}
		return sb.toString();
	}

	/**
	 * 尾部创建
	 * 
	 * @param pagination
	 * @return
	 */
	private String createFooter(Pagination pagination) {
		StringBuilder sb = new StringBuilder();
		if (pagination.getPageIndex() <= 5
				|| pagination.getPageIndex() + 4 < pagination.getPageCount()) {
			for (int i = pagination.getPageCount() - 1; i <= pagination
					.getPageCount(); i++) {
				sb.append(createPageIndex(i, false));
			}
		} else {
			for (int i = pagination.getPageIndex() - 1; i <= pagination
					.getPageCount(); i++) {
				if (i == pagination.getPageIndex()) {
					sb.append(createPageIndex(i, true));
				} else {
					sb.append(createPageIndex(i, false));
				}
			}
		}

		return sb.toString();
	}

	private String createPrePage(int pageIndex, boolean distable) {
		StringBuilder sb = new StringBuilder();
		if (distable) {
			sb.append("<span class='disqp'>« 上一页</span>");
		} else {
			sb.append("<a href='" + baseurl + getUrlStartChar()+"pageindex=" + pageIndex
					+ "' class='qp'>« 上一页</a>");
		}
		return sb.toString();
	}

	private String createNextPage(int pageIndex, boolean distable) {
		StringBuilder sb = new StringBuilder();
		if (distable) {
			sb.append("<span class='disqp'>下一页 »</span>");
		} else {
			sb.append("<a href='" + baseurl + getUrlStartChar()+"pageindex=" + pageIndex
					+ "' class='qp'>下一页 »</a>");
		}
		return sb.toString();
	}

	private String createPageIndex(int pageIndex, boolean cur) {
		StringBuilder sb = new StringBuilder();
		if (!cur) {
			sb.append("<a href='" + baseurl + getUrlStartChar()+"pageindex=" + pageIndex + "'>");
			sb.append(pageIndex);
			sb.append("</a>");
		} else {
			sb.append("<span class='focuspage'>" + pageIndex + "</span>");
		}
		return sb.toString();

	}

	private String createPoint() {
		return " <span class='point'>...</span>";
	}

	private String createPageInfo(Pagination pagination) {
		return "<span class='info'>共<font color=red>" + pagination.getTotal()
				+ "</font>条&nbsp;&nbsp;共<font color=red>"
				+ pagination.getPageCount() + "</font>页</span>";
	}
	
	/**
	 * 返回URL参数首字符
	 * @return
	 */
	private String getUrlStartChar(){
		if(baseurl.indexOf("?")>=0){
			return "&";
		}else{
			return "?";
		}
	}

}



body{
  font-size:12px;
}
.red_star{
   color:red;
}

.pagearea{
   margin-top:20px;
   float:right;
   text-align:right;
   width:100%;
   font-size:12px;
   
}

.pagearea .qp{
   border:#AAAADD solid 1px;
   width:60px;
   height:10px;
   margin-right:3px;
   margin-left:3px;
   text-align:center;
}

.pagearea .disqp{
   border:#EEEEEE solid 1px;
   width:60px;
   height:10px;
   margin-right:3px;
   margin-left:3px;
   color:#EEEEEE;
}

.pagearea a {
   border:#AAAADD solid 1px;
   width:25px;
   height:10px;
   margin-right:3px;
   margin-left:3px;
   text-align:center;
}

.pagearea .point{
   width:25px;
   height:10px;
   margin-right:3px;
   margin-left:3px;
}

.pagearea .focuspage{
  border:#FD6D01 solid 1px;
  background-color:#FFEDE1;
  color:#FD6D01;
  width:25px;
  height:10px;
  margin-right:3px;
  margin-left:3px;
  font-weight:bold;
  text-align:center;
}

.pagearea info{
  color:#666666;
}

.pagearea a{
  TEXT-DECORATION:none;
  color:#3366CC;
}



<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>asktag</short-name>
    <uri>http://com.ask.jstl</uri>
    <tag>
    <name>page</name>
    <tag-class>com.ask.page.taglib.PageTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
      <name>pagination</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>baseurl</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>

    </tag>
 
 </taglib>
分享到:
评论
7 楼 pan_java 2009-11-24  
fei_xiang 写道
不能访问哦

这几天没有开了,
6 楼 fei_xiang 2009-11-23  
不能访问哦
5 楼 fei_xiang 2009-11-23  
你的域名怎么来的
4 楼 pan_java 2009-11-19  
GeassLei 写道
在FireFox下看的时候,页面布局完全乱了~~

本人美工不好,只能在IE看,以后慢慢会兼容的!谢谢
3 楼 GeassLei 2009-11-19  
在FireFox下看的时候,页面布局完全乱了~~
2 楼 pan_java 2009-11-19  
helian 写道
干什么的?

在线问答,类似百度知道
1 楼 helian 2009-11-19  
干什么的?

相关推荐

    Gh0st源码+去硬盘锁

    注: 软件不断更新中,有什么意见大家多多提,偶看可以的就采纳.....gh0st的成长,离不开大家的帮助. 2008/1/27 11:16 : 优化了屏幕传输算法,CPU利用率更低 2008/1/27 16:06 : 驱动以资源方式写入安装文件跟DLL文件中,...

    类hackernews源码iNews.zip

    从程序本身来讲,上线了一段时间后,很多朋友看到都希望在自己站点上使用,后来越来越多的人寻求使用并提供建议,基于我们对开源的开放态度,最终决定放出来给大家使用。 iNews 在技术上是如何实现的? 赵戈戈:...

    淘宝商家数据中心简介.docx

    数据中心新版在2012年10月8号已正式上线,欢迎各位卖家朋友们体验并给我们提宝贵建议! 淘宝官方数据中心旨在将数据还给卖家,提高卖家的数据安全性,并且提供看数据、学数据、用数据一体化的服务,帮助卖家更好的...

    站长俱乐部新闻发布系统 V5.21

    如果新闻发布系统上线后才发现不能满足公司需要,这样将严重影响公司运营,不仅浪费时间和金钱,而且还会影响公司员工的士气,所以必须重视试用这个环节。  第二:可扩展。选择新闻发布系统一定要注意系统扩展性,...

    食品安全标准数据库系统.doc

    4.4、如何查看公示过程中公众提的建议 登录系统后点,击右侧菜单栏中的"备案前公示"。 在上方选中"公示中"。 点击操作栏中的"建议清单"。 4.5、如何查看公示截止日期 登录系统后,点击右侧菜单栏中的"备案前公示"。...

    Discuz新秀网络验证系统-UTF8-ver5.2 - 2020.2.13

    其他环境,请大家自行测试 框架流程: 客户端:通过框架协议将数据提交到入口文件; 服务端-控制器:接到数据后,通过控制流程进行分流; 服务端-模型:接到分流指令,进行模块化数据处理; 服务端-视图:接到...

    Discuz新秀网络验证系统-GBK-ver5.2 - 2020.2.13

    其他环境,请大家自行测试 框架流程: 客户端:通过框架协议将数据提交到入口文件; 服务端-控制器:接到数据后,通过控制流程进行分流; 服务端-模型:接到分流指令,进行模块化数据处理; 服务端-视图:接到...

    zhchi-weapp:微信商城小程序

    zhchi-weapp商城小程序, 由于个人账户无法上线商城类小程序, 可查看下面截图, 或者拉取代码使用微信开发者工具编译后查看此小程序目前还不完善,会不断更新,欢迎提建议和讨论运行截图:

    【开心农场V1.5.0】功能模块+解密开源版+养鸡场+邀请好友+鸡蛋交易市场+客户一键设置功能

    而且每无都在给我们提着建议.人多力量六,很多新的方式我们都会记晶下来。有用的我们都会做进去。 问题:鸡.有什么用? 回答:可以下蛋。下蛋的频率受概率影响.后台可以设置一个基准概率,然后狗和圈栏就可以影响爆率...

    图库新版jQuery焦点图 JS代码

    全新改版 提点建议&lt;/a&gt;');} if (code=="jinbu"){// 进步 document.writeln ('&lt;dd&gt;08月13日 设计语录专题上线&lt;/dd&gt;'); document.writeln ('&lt;dd&gt;08月05日 网页背景和小图片添加打包下载&lt;/dd&gt;'); document.writeln ('...

Global site tag (gtag.js) - Google Analytics