package taotoa.montao.dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import taotao.montao.dbcon.DBCon;
import taotao.montao.vo.DeptVO;
import taotao.montao.vo.PageVO;
public class TestDAO {
private DBCon db = null;
private PageVO page = new PageVO();
//获取总的信息数
public int getInfoCount()
{
int infoCount = 0;
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
//创建SQL语句
String strSql = "select * from dept";
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
infoCount++;
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return infoCount;
}
@SuppressWarnings("unchecked")
public List goupInfo(int nowpager,int pageContent,int pageSizeSize)
{
this.defaultInfo();
page.setNowPage(nowpager);
page.setPageSize(pageSizeSize);
page.setPageCount(pageContent);
List mmm = new ArrayList();
if(nowpager<=0)
{
page.setNowPage(1);
}
int startLine = (page.getNowPage()*page.getPageSize())-page.getPageSize(); //设置起始行
System.out.println("开始的数据: "+startLine);
//返回的结果集对象
List<DeptVO> list = new ArrayList<DeptVO>();
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
//创建SQL语句
String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
System.out.println(strSql);
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
DeptVO dept = new DeptVO();
dept.setId(rs.getInt("id"));
dept.setName(rs.getString("name"));
dept.setEmail(rs.getString("email"));
dept.setTel(rs.getString("tel"));
dept.setAddress(rs.getString("address"));
list.add(dept);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
mmm.add(0,list);
mmm.add(1,page);
return mmm;
}
@SuppressWarnings("unchecked")
public List setSize(int pagePageSize)
{
this.defaultInfo();
page.setPageSize(pagePageSize);
if(pagePageSize>=page.getInfoCount())
{
page.setPageCount(page.getInfoCount()/page.getPageSize());
}else
{
page.setPageCount(page.getInfoCount()/page.getPageSize()+1);
}
System.out.println("总的页数: "+page.getPageCount());
List mmm = new ArrayList();
//返回的结果集对象
List<DeptVO> list = new ArrayList<DeptVO>();
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
System.out.println(page.getPageSize());
//创建SQL语句
String strSql = "select * from dept limit 0,"+(page.getPageSize());
System.out.println(strSql);
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
DeptVO dept = new DeptVO();
dept.setId(rs.getInt("id"));
dept.setName(rs.getString("name"));
dept.setEmail(rs.getString("email"));
dept.setTel(rs.getString("tel"));
dept.setAddress(rs.getString("address"));
list.add(dept);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
mmm.add(0,list);
mmm.add(1,page);
return mmm;
}
@SuppressWarnings("unchecked")
public List gotoPage(int nowpager,int pageContent,int pageSizeSize)
{
this.defaultInfo();
page.setNowPage(nowpager);
page.setPageSize(pageSizeSize);
page.setPageCount(pageContent);
List mmm = new ArrayList();
if(nowpager>page.getPageCount())
{
page.setNowPage(page.getPageCount()); //如果请求的页面大于总页数
}
int startLine = page.getNowPage()*page.getPageSize()-page.getPageSize(); //设置起始行
//返回的结果集对象
List<DeptVO> list = new ArrayList<DeptVO>();
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
//创建SQL语句
String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
System.out.println(strSql);
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
DeptVO dept = new DeptVO();
dept.setId(rs.getInt("id"));
dept.setName(rs.getString("name"));
dept.setEmail(rs.getString("email"));
dept.setTel(rs.getString("tel"));
dept.setAddress(rs.getString("address"));
list.add(dept);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
mmm.add(0,list);
mmm.add(1,page);
return mmm;
}
@SuppressWarnings("unchecked")
public List nextInfo(int nowpager,int pageContent,int pageSizeSize)
{
this.defaultInfo();
page.setNowPage(nowpager);
page.setPageSize(pageSizeSize);
page.setPageCount(pageContent);
List mmm = new ArrayList();
if(nowpager>page.getPageCount())
{
page.setNowPage(page.getPageCount()); //如果请求的页面大于总页数
}
int startLine = (page.getNowPage()-1)*page.getPageSize(); //设置起始行
//返回的结果集对象
List<DeptVO> list = new ArrayList<DeptVO>();
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
//创建SQL语句
String strSql = "select * from dept limit "+startLine+","+page.getPageSize();
System.out.println(strSql);
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
DeptVO dept = new DeptVO();
dept.setId(rs.getInt("id"));
dept.setName(rs.getString("name"));
dept.setEmail(rs.getString("email"));
dept.setTel(rs.getString("tel"));
dept.setAddress(rs.getString("address"));
list.add(dept);
}
}catch(Exception ex)
{
ex.printStackTrace();
}finally
{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
mmm.add(0,list);
mmm.add(1,page);
return mmm;
}
//默认页面显示的数据
@SuppressWarnings("unchecked")
public List defaultInfo()
{
int nowPage = 1;
if (nowPage < 1)
{
nowPage =1;
}
//返回的结果集对象
List<DeptVO> list = new ArrayList<DeptVO>();
//设置页对象
page.setInfoCount(this.getInfoCount()); //设置记录总数
page.setNowPage(nowPage); //设置当前页数
page.setPageSize(5); //设置每页显示数
page.setPageCount(page.getInfoCount()/page.getPageSize()+1); //设置总页数
//获取Connection连接
db = new DBCon();
Connection conn = db.getConnection();
//创建SQL语句
String strSql = "select * from dept limit 0,"+(page.getPageSize());
//执行方法
Statement stmt = null;
ResultSet rs = null;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery(strSql);
while(rs.next())
{
DeptVO dept = new DeptVO();
dept.setId(rs.getInt("id"));
dept.setName(rs.getString("name"));
dept.setEmail(rs.getString("email"));
dept.setTel(rs.getString("tel"));
dept.setAddress(rs.getString("address"));
list.add(dept);
}
}catch(Exception ex)
{
Struts2.0+dwr无刷新分页
4星 · 超过85%的资源 需积分: 0 161 浏览量
更新于2008-06-15
2
收藏 453KB RAR 举报
Struts2.0框架是Java Web开发中广泛使用的MVC(Model-View-Controller)框架,它极大地简化了Java Servlet、JSP和JavaBean之间的交互。而DWR(Direct Web Remoting)则是一个JavaScript库,它允许在浏览器和服务器之间进行实时、双向通信,实现了Web应用的无刷新功能。将Struts2.0与DWR结合,可以创建出高效的、用户体验良好的分页应用。
**Struts2.0的核心概念:**
1. **Action类**:它是业务逻辑的载体,接收用户的请求并处理。
2. **配置文件**:`struts.xml`是Struts2的核心配置文件,用于定义Action、结果类型和拦截器栈等。
3. **Interceptor**(拦截器):提供了AOP(面向切面编程)功能,可以在Action执行前后插入自定义逻辑。
4. **Result**:Action执行后,根据配置返回的结果类型来决定如何展示页面。
5. **Model-View-Controller**:分离了业务逻辑、视图展示和用户交互,使得代码结构更清晰。
**DWR的主要特性:**
1. **AJAX通信**:DWR允许在浏览器端调用服务器端的方法,无需刷新整个页面。
2. **自动序列化/反序列化**:DWR能自动处理Java对象到JSON或JavaScript对象的转换。
3. **安全机制**:通过Caucho的安全策略,限制了浏览器对服务器的访问权限。
4. **异步更新**:可以实现部分页面的动态更新,提高用户体验。
5. **易于集成**:DWR提供了一套简单的API,与各种前端框架(如jQuery)结合方便。
**Struts2.0结合DWR实现无刷新分页的步骤:**
1. **配置DWR**:在Web应用的`web.xml`中配置DWR的Servlet,并在项目中引入DWR的JAR文件。
2. **创建Action**:编写一个Action类,包含获取分页数据的方法。
3. **实现分页逻辑**:在Action中实现数据库查询和分页计算,如使用PageBean封装每页数据。
4. **暴露DWR接口**:在DWR的配置文件`dwr.xml`中声明Action中的方法,使其可被JavaScript调用。
5. **前端页面**:在JSP页面上使用DWR的JavaScript库,动态加载分页数据,实现无刷新效果。
6. **事件处理**:监听用户翻页操作,通过DWR调用后台Action的方法,获取新的分页数据并更新页面。
在实际应用中,Struts2.0与DWR的结合可以带来高效且响应快速的分页体验。通过合理设计和优化,可以降低服务器压力,提高用户体验,同时保持代码的可维护性和扩展性。对于大型Web应用,这种技术组合是提高性能和用户满意度的重要手段。