jsp+struts2+spring+mybatis分页样例
分页公共页面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib prefix="s" uri="/struts-tags" %> 4 5 <% 6 String path = request.getContextPath(); 7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 8 %> 9 10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 11 <html> 12 <head> 13 <base href="<%=basePath%>"> 14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 15 <title>分页页面</title> 16 </head> 17 <body> 18 当前第<s:property value="#session.page.pageIndex"/>页 , 19 共有<s:property value="#session.page.pageTotal"/>页, 20 每页显示<s:property value="#session.page.pageSize"/>条, 21 <s:if test="#session.page.pageIndex > 1"> 22 <a href="<%=basePath%><s:property value="actionName"/>?page.pageIndex=1&actionName=<s:property value="actionName"/>">首页</a> 23 </s:if> 24 <s:else> 25 首页 26 </s:else> 27 <s:if test="#session.page.pageIndex > 1"> 28 <a href="<%=basePath%><s:property value="actionName"/>?page.pageIndex=<s:property value="#session.page.pageIndex - 1"/>&actionName=<s:property value="actionName"/>">上一页</a> 29 </s:if> 30 <s:else> 31 上一页 32 </s:else> 33 <s:if test="#session.page.pageIndex < #session.page.pageTotal"> 34 <a href="<%=basePath%><s:property value="actionName"/>?page.pageIndex=<s:property value="#session.page.pageIndex + 1"/>&actionName=<s:property value="actionName"/>">下一页</a> 35 </s:if> 36 <s:else> 37 下一页 38 </s:else> 39 <s:if test="#session.page.pageIndex < #session.page.pageTotal"> 40 <a href="<%=basePath%><s:property value="actionName"/>?page.pageIndex=<s:property value="#session.page.pageTotal"/>&actionName=<s:property value="actionName"/>">尾页</a> 41 </s:if> 42 <s:else> 43 尾页 44 </s:else> 45 </body> 46 </html>
jsp列表页
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>教练分页页面</title> </head> <body> <s:include value="../common/navgation.jsp"></s:include> <br/><br/><br/><br/><br/><br/><br/><br/> <table style="background-color: black;"> <tr> <th>头像</th> <th>姓名</th> <th>地址</th> <th>年龄</th> </tr> <c:forEach items="${jl }" var="jl"> <tr> <td> <img alt="头像" src="<%=basePath%>${jl.head}" width="30px" height="30px"> </td> <td>${jl.name }</td> <td>${jl.address }</td> <td>${jl.age }</td> </tr> </c:forEach> </table> <s:include value="../common/page.jsp"></s:include> </body> </html>
Struts2配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="user" namespace="/user" extends="struts-default"> <action name="jlDetails" class="userAction" method="jlDetailsAction"> <result name="success">/WEB-INF/user/jlInformetion.jsp</result> </action> </package> </struts>
action层代码
package com.cjsf.wfma.action;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.cjsf.wfma.bean.Page;
import com.cjsf.wfma.bean.User;
import com.cjsf.wfma.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Administrator
* @category 用户登录控制类
* @version v1.0
*/
@Controller("userAction")
@Scope("prototype")
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private List<User> jl;//教练
private Page page = new Page();
private String actionName;//标记jsp分页中在点击上一页下一页首页尾页的时候请求的action是分页的action
@Autowired
private UserService userService;
/**
* @category 教练分页
* @return 返回成功或失败
*/
public String jlDetailsAction(){
jl = userService.jlDetailsS(page);
if(jl!=null){
return "success";
}else{
return "error";
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public List<User> getJl() {
return jl;
}
public void setJl(List<User> jl) {
this.jl = jl;
}
public Page getPage() {
return page;
}
public void setPage(Page page) {
this.page = page;
}
public String getActionName() {
return actionName;
}
public void setActionName(String actionName) {
this.actionName = actionName;
}
}
service层
package com.cjsf.wfma.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cjsf.wfma.bean.Page;
import com.cjsf.wfma.bean.User;
import com.cjsf.wfma.dao.UserDao;
import com.cjsf.wfma.service.UserService;
import com.cjsf.wfma.util.SearchPageUtil;
import com.opensymphony.xwork2.ActionContext;
/**
* @author Administrator
* @category 用户业务逻辑处理接口
* @version v1.0
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
private SearchPageUtil spu = new SearchPageUtil();
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/**
* @category 教练分页
* @param page分页实体类
* @return 返回一个教练数组
*/
@Override
public List<User> jlDetailsS(Page page) {
page.setRowTotal(userDao.getJLCountD());//获取教练数据总条数
spu.getDataRows(page);//计算出总页数
spu.getStartPage(page);//设置起始行
ActionContext acKC = ActionContext.getContext();
acKC.getSession().put("page", page);//将分页信息存入 值栈中
return userDao.jlDetailsD(page);
}
}
dao层
package com.cjsf.wfma.dao.impl;
import java.util.List;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.cjsf.wfma.bean.Page;
import com.cjsf.wfma.bean.User;
import com.cjsf.wfma.dao.UserDao;
/**
* @author Administrator
* @version 1.0
* @category用户业务数据处理实现类
*/
@Repository("userDao")
public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
@Autowired
@Override
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
/**
* @category 教练分页
* @param page分页实体类
* @return 返回一个教练数组
*/
@Override
public List<User> jlDetailsD(Page page) {
return this.getSqlSession().selectList("com.cjsf.wfma.bean.mappingxml.UserMapper.jlDetailsD", page);
}
/**
* @category 查询教练的总数
* @return 返回一个整型数字
*/
@Override
public int getJLCountD() {
return this.getSqlSession().selectOne("com.cjsf.wfma.bean.mappingxml.UserMapper.getJLCountD");
}
}
user实体类映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cjsf.wfma.bean.mappingxml.UserMapper">
<select id="getJLCountD" resultType="int">
SELECT COUNT(*) FROM user WHERE TYPE='教练'
</select>
<select id="jlDetailsD" parameterType="com.cjsf.wfma.bean.Page" resultType="com.cjsf.wfma.bean.User">
SELECT * FROM USER WHERE TYPE='教练' LIMIT #{startRow},#{pageSize}
</select>
</mapper>
user实体类,省略了getter,setter,toString,有参构造 方法
package com.cjsf.wfma.bean;
import java.util.Date;
/**
* @author Administrator
* @version v1.0
* 用户实体类
*/
public class User {
private int id;//编号
private String nickname;//昵称
private String password;//密码
private String name;//姓名
private String sex;//性别
private int age;//年龄
private Date brithday;//出生日期
private String address;//住址
private String tell;//电话
private String qq;//qq
private String email;//邮箱
private String type;//用户类别[管理员|学员|教练]
private String briefintroduction;//个人简介
private String head;//头像
}
page实体类,省略了getter,setter,toString,有参构造 方法
package com.cjsf.wfma.bean;
/**
* @category 分页实体类
* @author Administrator
*/
public class Page {
private Integer pageIndex = 1;// 第几页
private Integer pageSize = 1;// 每页大小
private Integer rowTotal;// 数据总条数
private Integer pageTotal;// 总共多少页
private Integer startRow;//起始行
}
SearchPageUtil分页工具类
package com.cjsf.wfma.util;
import com.cjsf.wfma.bean.Page;
/**
* @category 分页工具类
* @author Administrator
*/
public class SearchPageUtil {
/**
* @category 计算出总页数
* @param page
* @return
*/
public int getDataRows(Page page){
int ym = 0;//数据总页码
if (page.getRowTotal() % page.getPageSize() == 0) {
ym = page.getRowTotal() / page.getPageSize();
page.setPageTotal(ym);
} else {
ym = page.getRowTotal() / page.getPageSize() + 1;
page.setPageTotal(ym);
}
return page.getPageTotal();
}
/**
* @category 设置当前行
* @param page
*/
public void getStartPage(Page page){
page.setStartRow((page.getPageIndex() - 1) * page.getPageSize());
}
}
说明:
这个样例中还省略了spring配置文件(这个配置文件一般的都可以,没有特别的配置),另外省略了service,dao层接口文件。
这个样例是我在百度上查阅了一些大神的博客结合自己的项目而来。基本上可以实现分页功能,如有错误,恭请指正,哪位大神有更好的方法,希望可以分享一下。
浙公网安备 33010602011771号