posted @ 2008-07-17 15:14 七郎歸來(lái) 閱讀(530) | 評(píng)論 (0) | 編輯 收藏
(1)在appendChild或者innerHTML操作處判斷document.readyState=="complete", 若為否,則setTimeout若干秒之后重新作這個(gè)操作。但是,此屬性只對(duì)ie,opeara有效,ff的document沒(méi)有readyState屬性,永遠(yuǎn)是undefined.
(2)在script中使用defer屬性。意在頁(yè)面加載完畢后再執(zhí)行腳本,這樣可以避免找不到對(duì)象的問(wèn)題。defer不會(huì)考慮外部文件是否全部下載完,只會(huì)判當(dāng)前頁(yè)面是否全部加載完成。并且,有defer標(biāo)簽的代碼塊里不能寫(xiě)document.write方法
例如:<SCRIPT LANGUAGE="JavaScript" src="<%=path%>/pub/js/myDateControler/WdatePicker.js" defer="defer"></Script>
(3)標(biāo)簽是否沒(méi)有閉合
posted @ 2008-07-14 15:16 七郎歸來(lái) 閱讀(5820) | 評(píng)論 (10) | 編輯 收藏
window -> Preferences -> General -> Keys
1、刪掉word completion的快捷鍵設(shè)置alt+/
2、把Content Assist的快捷鍵由ctrl+space改成alt+/
posted @ 2008-07-10 17:54 七郎歸來(lái) 閱讀(1556) | 評(píng)論 (0) | 編輯 收藏
select * from internal_external_rating_info order by convert(int,internal_rating)
select * from internal_external_rating_info order by CAST(internal_rating AS INT)
posted @ 2008-07-10 17:02 七郎歸來(lái) 閱讀(5620) | 評(píng)論 (0) | 編輯 收藏
<script language="javascript">
<!--
/*屏蔽所有的js錯(cuò)誤*/
function killerrors() {
return true;
}
window.onerror = killerrors;
//-->
</script>
posted @ 2008-07-09 17:26 七郎歸來(lái) 閱讀(357) | 評(píng)論 (0) | 編輯 收藏
頁(yè)面端 JS
var postString = encodeURI(document.getElementById("postStringAll").value, "UTF-8"); //編碼
后臺(tái)端 String postString =java.net.URLDecoder.decode(f.getPostString(),"UTF-8");
posted @ 2008-07-09 17:24 七郎歸來(lái) 閱讀(184) | 評(píng)論 (0) | 編輯 收藏
1.JdbcTemplateExtend .java
package rms.pub.main.web.test;
import java.util.List;
import java.util.Map;
import javax.sql.*;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class JdbcTemplateExtend extends JdbcTemplate {
private DataSource dataSource;
/**
* 默認(rèn)構(gòu)造器,調(diào)用此方法初始化,需要調(diào)用setDataSource設(shè)置數(shù)據(jù)源
*/
public JdbcTemplateExtend() {
}
/**
* 初始構(gòu)造器
*
* @param dataSource
* 數(shù)據(jù)源
*/
public JdbcTemplateExtend(DataSource dataSource) {
this.dataSource = dataSource;
super.setDataSource(dataSource);
}
/**
* 普通分頁(yè)查詢<br>
* <b>如果結(jié)果結(jié)合比較大應(yīng)該調(diào)用setFetchsize() 和setMaxRow兩個(gè)方法來(lái)控制一下,否則會(huì)內(nèi)存溢出</b>
*
* @see #setFetchSize(int)
* @see #setMaxRows(int)
* @param sql
* 查詢的sql語(yǔ)句
* @param startRow
* 起始行
* @param rowsCount
* 獲取的行數(shù)
* @return
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
public List<Map> queryForListPage(String sql, int startRow, int rowsCount)
throws DataAccessException {
return queryForListPage(sql, startRow, rowsCount,
getColumnMapRowMapper());
}
/**
* 自定義行包裝器查詢<br>
* <b>如果結(jié)果結(jié)合比較大應(yīng)該調(diào)用setFetchsize() 和setMaxRow兩個(gè)方法來(lái)控制一下,否則會(huì)內(nèi)存溢出</b>
*
* @see #setFetchSize(int)
* @see #setMaxRows(int)
* @param sql
* 查詢的sql語(yǔ)句
* @param startRow
* 起始行
* @param rowsCount
* 獲取的行數(shù)
* @param rowMapper
* 行包裝器
* @return
* @throws DataAccessException
*/
@SuppressWarnings("unchecked")
public List<Map> queryForListPage(String sql, int startRow, int rowsCount,
RowMapper rowMapper) throws DataAccessException {
return (List) query(sql, new SplitPageResultSetExtractor(rowMapper,
startRow, rowsCount));
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
super.setDataSource(dataSource);
}
}
2. SplitPageResultSetExtractor .java
package rms.pub.main.web.test;
import java.sql.*;
import java.util.*;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.util.Assert;
public class SplitPageResultSetExtractor implements ResultSetExtractor {
private final int start;// 起始行號(hào)
private final int len;// 結(jié)果集合的長(zhǎng)度
private final RowMapper rowMapper;// 行包裝器
public SplitPageResultSetExtractor(RowMapper rowMapper, int start, int len) {
Assert.notNull(rowMapper, "RowMapper is required");
this.rowMapper = rowMapper;
this.start = start;
this.len = len;
}
/**
* 處理結(jié)果集合,被接口自動(dòng)調(diào)用,該類外邊不應(yīng)該調(diào)用
*/
public Object extractData(ResultSet rs) throws SQLException,
DataAccessException {
List result = new ArrayList();
int rowNum = 0;
int end = start + len;
point: while (rs.next()) {
++rowNum;
if (rowNum < start) {
continue point;
} else if (rowNum >= end) {
break point;
} else {
result.add(this.rowMapper.mapRow(rs, rowNum));
}
}
return result;
}
}
posted @ 2008-06-20 12:44 七郎歸來(lái) 閱讀(1122) | 評(píng)論 (0) | 編輯 收藏
posted @ 2008-06-18 17:13 七郎歸來(lái) 閱讀(258) | 評(píng)論 (0) | 編輯 收藏
使用POI提取Word文件的文本內(nèi)容
POI是Apache的一個(gè)開(kāi)源項(xiàng)目,可以到Apache網(wǎng)站下載相應(yīng)的jar包文件,及其源文件。
POI提供了提取一些非TXT文本中文本內(nèi)容的API,比如提取Word,Excel等,使用起來(lái)非常方便。
為了說(shuō)明POI提起Word文件的方便和簡(jiǎn)單,通過(guò)提取一個(gè)Word文件的文本來(lái),來(lái)了解POI API的功能。
假設(shè)在本地磁盤(pán)中存在一個(gè)Word文件
E:POIwordJBoss3.0 下配置和部署EJB簡(jiǎn)介.doc文件是具有格式的,內(nèi)容如圖所示:
下面看看提取它的內(nèi)容是多么簡(jiǎn)單。
首先從Apache網(wǎng)站上下載POI的相關(guān)jar包。
新建一個(gè)測(cè)試類:
package org.shirdrn.word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class MyWordExtractor {
public static void main(String[] args) {
File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡(jiǎn)介.doc");
try {
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
System.out.println("【 使用getText()方法提取的Word文件的內(nèi)容如下所示:】");
System.out.println(wordExtractor.getText());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取Word文件的文本內(nèi)容,打印到控制臺(tái)上,如下所示:
使用WordExtractor類的getTextFromPieces()方法提取:
wordExtractor.getTextFromPieces();
結(jié)果和上面是一樣的。
WordExtractor類還有一個(gè)可以提取Word文件的各個(gè)段落的方法getParagraphText(),返回一個(gè)String[]數(shù)組,數(shù)組中每個(gè)元素為一個(gè)段的文本內(nèi)容。
這里,對(duì)Word文件中換行也看成是一個(gè)段,測(cè)試如下:
package org.shirdrn.word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class MyWordExtractor {
public static void main(String[] args) {
File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡(jiǎn)介.doc");
try {
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
System.out.println("【 使用getText()方法提取的Word文件的內(nèi)容如下所示:】");
String[] paragraph = wordExtractor.getParagraphText();
System.out.println("該Word文件共有"+paragraph.length+"段。");
for(int i=0;i
System.out.println("< 第 "+(i+1)+" 段的內(nèi)容為 >");
System.out.println(paragraph[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取Word文件的文本內(nèi)容,打印到控制臺(tái)上,如下所示:
從上面的Word文件可以看出,最后一行是Word文件的一個(gè)換行符,使用WordExtractor提取時(shí),也把它默認(rèn)成為一個(gè)段,因?yàn)橐粋€(gè)段結(jié)束后應(yīng)該有一個(gè)回車(chē)換行符。
如果有多個(gè)Word文件,而且放在不同的目錄下,要提取它們的文本內(nèi)容,可以實(shí)現(xiàn)一個(gè)遞歸的函數(shù),通過(guò)深度遍歷,為每一個(gè)Word文件進(jìn)行提取。
如果需要,可以將提取到的Word文件的文本內(nèi)容輸出到本地磁盤(pán)中,比如以txt記事本的根式保存。
從上面可以看出,提取Word文件的文本內(nèi)容,實(shí)際上是將Word文件的格式去掉了,獲取到文本的內(nèi)容。
posted @ 2008-06-12 15:48 七郎歸來(lái) 閱讀(1460) | 評(píng)論 (0) | 編輯 收藏
Spring+Hibernate+Struts實(shí)現(xiàn)分頁(yè)
Spring集成Hibernate,使得SessionFactory的管理更加方便,可以方便地獲取到一個(gè)HibernateTempalte的模板實(shí)例,對(duì)數(shù)據(jù)庫(kù)的操作非常方便。
Spring集成Struts,先把Struts的Action用Spring的ActionSupport抽象出來(lái),比如定義一個(gè)名稱為SpringAction的的ActionSupport的子類,其中SpringAction中啟動(dòng)IoC容器,通過(guò)ApplicationContext獲取業(yè)務(wù)bean。這需要使用一個(gè)Struts插件來(lái)初始化IoC容器,從而獲取到一個(gè)ApplicationContext。可以通過(guò)讓每個(gè)具體的Action(每個(gè)具體的Action意思是實(shí)現(xiàn)Struts的Action的子類)都繼承自上面定義的SpringAction,實(shí)現(xiàn)對(duì)模型的調(diào)用,以及派發(fā)視圖。
下面通過(guò)實(shí)現(xiàn)分頁(yè)來(lái)說(shuō)明。
實(shí)現(xiàn)思路
Spring集成Hibernate,直接使用Hibernatede配置文件hibernate.cfg.xml,注入一個(gè)SessionFactory,從而在DAO中獲取到一個(gè)HibernateTemplate。
(注意,下面工程結(jié)構(gòu)中,實(shí)際上包org.shirdrn.spring.dao及其包org.shirdrn.spring.daoImpl中的接口和類并沒(méi)有使用到。)
org.shirdrn.spring.util.Page類是一個(gè)頁(yè)面的實(shí)體類,沒(méi)有加入任何分頁(yè)邏輯,而實(shí)現(xiàn)分頁(yè)邏輯的抽象是在org.shirdrn.spring.util.PageUtil類中,該類是對(duì)所有需要實(shí)現(xiàn)分頁(yè)的業(yè)務(wù)對(duì)象分頁(yè)邏輯的抽象,而且PageUtil類繼承自HibernateDaoSupport類,它是一個(gè)具有特殊業(yè)務(wù)需(分頁(yè))要的DAO,只是為獲取分頁(yè)結(jié)果而定義的,只要注入一個(gè)SessionFactory就可以方便地檢索數(shù)據(jù)庫(kù)了。所有的具體的業(yè)務(wù)對(duì)象如果需要分頁(yè)顯示的數(shù)據(jù)庫(kù)記錄,都可以從繼承PageUtil類。
包org.shirdrn.spring.pages中有一個(gè)MyUserPage類,該類繼承自PageUtil類,是一個(gè)具體實(shí)現(xiàn)分頁(yè)邏輯的類,只對(duì)MyUser實(shí)體(對(duì)應(yīng)數(shù)據(jù)庫(kù)中myUser表)的分頁(yè)進(jìn)行處理。
開(kāi)發(fā)環(huán)境
Windows 2003 SP2 + SQL Server 2000 + Eclipse 3.2 + JDK 1.5 + MyEclipse 5.0 + Tomcat 5.5.9 + Spring 2.0 + Hibernate 3.0 + Struts 1.2
工程結(jié)構(gòu)
SpringHibernateStrutsPage
│ .classpath
│ .myhibernatedata
│ .mymetadata
│ .mystrutsdata
│ .project
│ .springBeans
│
├─.myeclipse
├─src
│ │ hibernate.cfg.xml
│ │
│ └─org
│ └─shirdrn
│ ├─spring
│ │ ├─action
│ │ │ SpringAction.java
│ │ │
│ │ ├─dao
│ │ │ │ MyUserDAO.java
│ │ │ │
│ │ │ └─impl
│ │ │ MyUserDAOImpl.java
│ │ │
│ │ ├─entity
│ │ │ MyUser.hbm.xml
│ │ │ MyUser.java
│ │ │
│ │ ├─pages
│ │ │ MyUserPage.java
│ │ │
│ │ └─util
│ │ Page.java
│ │ PageUtil.java
│ │
│ └─struts
│ │ ApplicationResources.properties
│ │
│ └─action
│ ListMyUsersAction.java
│
└─WebRoot
│ listmyusers.jsp
│
├─META-INF
│ MANIFEST.MF
│
└─WEB-INF
│ .struts-config.mex
│ action-servlet.xml
│ struts-bean.tld
│ struts-config.xml
│ struts-html.tld
│ struts-logic.tld
│ validator-rules.xml
│ web.xml
│
├─classes
│ │ hibernate.cfg.xml
│ │
│ └─org
│ └─shirdrn
│ ├─spring
│ │ ├─action
│ │ │ SpringAction.class
│ │ │
│ │ ├─dao
│ │ │ │ MyUserDAO.class
│ │ │ │
│ │ │ └─impl
│ │ │ MyUserDAOImpl.class
│ │ │
│ │ ├─entity
│ │ │ MyUser.class
│ │ │ MyUser.hbm.xml
│ │ │
│ │ ├─pages
│ │ │ MyUserPage$1.class
│ │ │ MyUserPage.class
│ │ │
│ │ └─util
│ │ Page.class
│ │ PageUtil.class
│ │
│ └─struts
│ │ ApplicationResources.properties
│ │
│ └─action
│ ListMyUsersAction.class
│
└─lib
開(kāi)發(fā)過(guò)程
(1) Hibernate準(zhǔn)備
編寫(xiě)Hibernate配置文件hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?> <!-- Generated by MyEclipse Hibernate Tools. --> <session-factory> </session-factory> </hibernate-configuration> 實(shí)現(xiàn)Hibernate映射文件MyUser.hbm.xml,及其對(duì)應(yīng)的POJO: 這個(gè)非常容易,就省略了。 (2) Spring集成Hibernate 在/WEB-INF/目錄下面,新建一個(gè)action-servlet.xml的Spring配置文件,因?yàn)楹竺嬉蚐truts集成,所以根據(jù)格式<SERVLETNAME>-servlet.xml,應(yīng)該使用Struts的Servlet映射名稱。 Spring集成Hibernate,在action-servlet.xml中配置如下: <bean id="mySessionFactory" (3) 頁(yè)面實(shí)體及分頁(yè)邏輯實(shí)現(xiàn) Page是一個(gè)頁(yè)面實(shí)體類,如下: package org.shirdrn.spring.util; import java.util.List; public class Page { public int getCurrentPage() { public void setCurrentPage(int currentPage) { public List getList() { public void setList(List list) { public int getNextPage() { public void setNextPage(int nextPage) { public int getPageSize() { public void setPageSize(int pageSize) { public int getPrePage() { public void setPrePage(int prePage) { public int getRowCount() { public void setRowCount(int rowCount) { public int getTotalPage() { public void setTotalPage(int totalPage) { public boolean isHasNextPage() { public void setHasNextPage(boolean hasNextPage) { public boolean isHasPreviousPage() { public void setHasPreviousPage(boolean hasPreviousPage) { PageUtil類是一個(gè)分頁(yè)邏輯的抽象,需要分頁(yè)的話,只需要繼承自它便可以方便地實(shí)現(xiàn)分頁(yè),可見(jiàn),PageUtil可以重用,如下所示: package org.shirdrn.spring.util; import org.shirdrn.spring.pages.MyUserPage; public class PageUtil extends HibernateDaoSupport { (4) 具體的業(yè)務(wù)對(duì)象分頁(yè)實(shí)現(xiàn) 這里,MyUser類是一個(gè)POJO,查詢出結(jié)果需要分頁(yè)顯示。 MyUser的分頁(yè)實(shí)現(xiàn)類為MyUserPage類,它應(yīng)該繼承PageUtil類。因?yàn)镻ageUtil類繼承了HibernateDaoSupport類,所以需要注入一個(gè)SessionFactory,在action-servlet.xml中配置如下所示: <bean id="myUserPage" abstract="false" 具體地,MyUserPage類實(shí)現(xiàn)如下所示: package org.shirdrn.spring.pages; import java.sql.SQLException; import org.hibernate.HibernateException; public class MyUserPage extends PageUtil { 上面實(shí)現(xiàn),使用了HQL檢索方式實(shí)現(xiàn)查詢數(shù)據(jù)庫(kù)記錄。 在MyUserPage中可以使用帶參數(shù)的構(gòu)造方法實(shí)現(xiàn)頁(yè)面的初始化,但是在使用構(gòu)造方法注入的時(shí)候,很容易出錯(cuò),而且不直觀,所以直接通過(guò)調(diào)用實(shí)現(xiàn)的一個(gè)init方法來(lái)初始化。 (6) Spring集成Struts 需要在Struts的配置文件struts-config.xml中配置一個(gè)插件,如下所示: <?xml version="1.0" encoding="UTF-8"?> <struts-config> 只要這樣配置好,Struts才能初始化Spring的IoC容器,否則Action無(wú)法工作。 (7) Action的實(shí)現(xiàn) SpringAction繼承了Spring的ActionSupport,我們將用它來(lái)替代所有繼承自Struts的Action類的Action。SpringAction的實(shí)現(xiàn)如下所示: package org.shirdrn.spring.action; import org.shirdrn.spring.pages.MyUserPage; public class SpringAction extends ActionSupport { 這里,SpringAction就實(shí)現(xiàn)了獲取一個(gè)MyUserPage的實(shí)例的功能,從而通過(guò)這個(gè)實(shí)例實(shí)現(xiàn)分頁(yè)。 然后,實(shí)現(xiàn)一個(gè)ListMyUsersAction類,它繼承自SpringAction,能夠啟動(dòng)Spring的IoC容器,并且獲取一個(gè)MyUserPage的實(shí)例。ListMyUsersAction類的實(shí)現(xiàn)如下所示: package org.shirdrn.struts.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionForm; public class ListMyUsersAction extends SpringAction { public ActionForward execute(ActionMapping mapping, ActionForm form, (8) 視圖的實(shí)現(xiàn) JSP頁(yè)面,使用Struts標(biāo)簽實(shí)現(xiàn)分頁(yè)頁(yè)面的顯示。 JSP頁(yè)面listmyusers.jsp如下所示: <%@ page contentType="text/html;charset=utf-8"%> (9) 部署Web應(yīng)用 配置web.xml文件,如下所示: <?xml version="1.0" encoding="UTF-8"?> 就可以看到數(shù)據(jù)的分頁(yè)顯示,效果如圖所示: OK,就這么容易。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"
<hibernate-configuration>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="connection.url">
jdbc:microsoft:sqlserver://localhost:1433;databasename=shirdrn
</property>
<property name="connection.username">sa</property>
<property name="connection.password">111111</property>
<property name="connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<property name="myeclipse.connection.profile">MSSQL</property>
<property name="show_sql">true</property>
<mapping resource="org/shirdrn/spring/entity/MyUser.hbm.xml" />
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
private int pageSize;
private int totalPage;
private int rowCount;
private int currentPage;
private int prePage;
private int nextPage;
private boolean hasNextPage; // 是否有下一頁(yè)
private boolean hasPreviousPage; // 是否有前一頁(yè)
private List list;
public Page(){
this.pageSize = 10;
}
return currentPage;
}
this.currentPage = currentPage;
}
return list;
}
this.list = list;
}
return nextPage;
}
this.nextPage = nextPage;
}
return pageSize;
}
this.pageSize = pageSize;
}
return prePage;
}
this.prePage = prePage;
}
return rowCount;
}
this.rowCount = rowCount;
}
return totalPage;
}
this.totalPage = totalPage;
}
return hasNextPage;
}
this.hasNextPage = hasNextPage;
}
return hasPreviousPage;
}
this.hasPreviousPage = hasPreviousPage;
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public Page page;
public int start;
public PageUtil(){
}
public void setPreOrNextBoolean(){
if(page.getCurrentPage()<=1){
page.setHasPreviousPage(false);
}
else{
page.setHasPreviousPage(true);
}
if(page.getCurrentPage()>=page.getTotalPage()){
page.setHasNextPage(false);
}
else{
page.setHasNextPage(true);
}
}
public void setCurrentPage(){
if(start<1){
page.setCurrentPage(1);
}
if(start>page.getTotalPage()){
page.setCurrentPage(page.getTotalPage());
}
page.setCurrentPage(start);
}
public void setPrePage(){
page.setPrePage(page.getCurrentPage()-1);
}
public void setNextPage(){
page.setNextPage(page.getCurrentPage()+1);
}
public void setTotalPage(){
int rowCount = getRowCount();
int pageSize = page.getPageSize();
if(rowCount>pageSize){
if(rowCount%pageSize == 0){
page.setTotalPage(rowCount/pageSize);
}
else{
page.setTotalPage(1+(rowCount/pageSize));
}
}
else{
page.setTotalPage(1);
}
}
public void setRowCount(){
page.setRowCount(getRowCount());
}
public int getRowCount(){
return 0;
}
public int getStartIndex(){
int startIndex = 0;
if(start<0){
startIndex = 0;
}
else{
if(start>page.getTotalPage()){
startIndex = page.getPageSize()*(page.getTotalPage()-1);
}
else{
startIndex = page.getPageSize()*(start-1);
}
}
return startIndex;
}
public Page getPage(){
return page;
}
}
class="org.shirdrn.spring.pages.MyUserPage"
lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory">
<ref bean="mySessionFactory"/>
</property>
</bean>
</beans>
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.shirdrn.spring.util.Page;
import org.shirdrn.spring.util.PageUtil;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateCallback;
private String hql;
public void init(int start,String hql){ // 通過(guò)init方法實(shí)現(xiàn)一個(gè)頁(yè)面的初始化
page = new Page();
this.hql = hql;
this.start = start;
setRowCount();
setTotalPage();
setCurrentPage();
setPrePage();
setNextPage();
setPreOrNextBoolean();
}
@Override
public int getRowCount(){
List list = getHibernateTemplate().find(hql);
if(list.isEmpty()){
return 0;
}
return list.size();
}
@Override
public Page getPage(){
List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(getStartIndex());
query.setMaxResults(page.getPageSize());
return query.list();
}
});
page.setList(list);
return page;
}
}
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/listMyUsers" type="org.shirdrn.struts.action.ListMyUsersAction">
<forward
name="listmyusers"
path="/listmyusers.jsp"
redirect="true" />
</action>
</action-mappings>
<message-resources parameter="org.shirdrn.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/action-servlet.xml"/>
</plug-in>
</struts-config>
import org.springframework.web.struts.ActionSupport;
public MyUserPage getMyUserPage(){
return (MyUserPage)getWebApplicationContext().getBean("myUserPage");
}
}
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.shirdrn.spring.action.SpringAction;
import org.shirdrn.spring.pages.MyUserPage;
import org.shirdrn.spring.util.Page;
HttpServletRequest request, HttpServletResponse response) {
int pno = (new Integer(request.getParameter("pno"))).intValue();
String hql = "from MyUser";
MyUserPage myUserPage = getMyUserPage();
myUserPage.init(pno, hql);
Page myUserOnePage = myUserPage.getPage();
List myUserList = myUserPage.getPage().getList();
HttpSession session = request.getSession();
session.setAttribute("myUserOnePage", myUserOnePage);
session.setAttribute("myUserList", myUserList);
return mapping.findForward("listmyusers");
}
}
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html:html locale="true">
<head>
<base href="<%=basePath%>">
<title>查詢記錄列表</title>
<style type="text/css">
body{
background:#000000;
font-size:12px;
color:yellow;
}
a:link{
color:yellow;
text-decoration:none;
}
a:hover{
color:red;
text-decoration:none;
}
a:visited{
color:yellow;
text-decoration:none;
}
</style>
</head>
<body>
<table width="60%" align="center" bgcolor="green" border="1">
<tr>
<th colspan="10">MyUser查詢列表</th>
</tr>
<tr align="center">
<td width="20%"><b>ID</b></td>
<td width="20%"><b>姓名</b></td>
<td width="20%"><b>性別</b></td>
<td width="20%"><b>年齡</b></td>
<td width="20%"><b>住址</b></td>
</tr>
<logic:present name="myUserList">
<logic:iterate id="myUser" name="myUserList" type="org.shirdrn.spring.entity.MyUser">
<logic:present name="myUser">
<tr align="center">
<td width="20%" height="10"><bean:write name="myUser" property="id"/></td>
<td width="20%" height="10"><bean:write name="myUser" property="userName"/></td>
<td width="20%" height="10"><bean:write name="myUser" property="gender"/></td>
<td width="20%" height="10"><bean:write name="myUser" property="age"/></td>
<td width="20%" height="10"><bean:write name="myUser" property="addr"/></td>
</tr>
</logic:present>
</logic:iterate>
</logic:present>
</table>
<table align="center" width="60%" bgcolor="green" border="1">
<tr>
<td align="center" colspan="10">
<logic:present name="myUserOnePage">
<html:link page="/listMyUsers.do?pno=1">首頁(yè)</html:link>
<logic:equal name="myUserOnePage" property="hasPreviousPage" value="false">上一頁(yè)</logic:equal>
<logic:equal name="myUserOnePage" property="hasPreviousPage" value="true">
<a href="<%=path%>/listMyUsers.do?pno=<bean:write name="myUserOnePage" property="prePage"/>">上一頁(yè)</a>
</logic:equal>
每頁(yè)<bean:write name="myUserOnePage" property="pageSize"/>條記錄
共<bean:write name="myUserOnePage" property="rowCount"/>條記錄
當(dāng)前第(<bean:write name="myUserOnePage" property="currentPage"/>/<bean:write name="myUserOnePage" property="totalPage"/>)頁(yè)
<logic:equal name="myUserOnePage" property="hasNextPage" value="false">下一頁(yè)</logic:equal>
<logic:equal name="myUserOnePage" property="hasNextPage" value="true">
<a href="<%=path%>/listMyUsers.do?pno=<bean:write name="myUserOnePage" property="nextPage"/>">下一頁(yè)</a>
</logic:equal>
<a href="<%=path%>/listMyUsers.do?pno=<bean:write name='myUserOnePage' property='totalPage'/>">末頁(yè)</a>
</logic:present>
</td>
</tr>
</table>
</body>
</html:html>
<web-app xmlns="http://localhost:8080/SpringHibernateStrutsPage/listMyUsers.do?pno=1
posted @ 2008-06-12 15:45 七郎歸來(lái) 閱讀(877) | 評(píng)論 (0) | 編輯 收藏