设为首页 收藏本站
查看: 528|回复: 0

[经验分享] 自定义分页标签结合spring mvc、bootstrap、mybatis、mysql的使用

[复制链接]

尚未签到

发表于 2016-10-25 06:47:08 | 显示全部楼层 |阅读模式
DSC0000.jpg
  pager.tld

<?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/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>Pager</description>
<tlib-version>1.0</tlib-version>
<short-name>page</short-name>
<uri></uri>
<tag>
<name>createPager</name>
<tag-class>com.test.utils.Pager</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>curPage</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
</attribute>
<attribute>
<name>totalPage</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
</attribute>
<attribute>
<name>pageSize</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
</attribute>
<attribute>
<name>totalCount</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
</attribute>
<attribute>
<name>formId</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
  Pager.java

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/***
* 分页控件
* @author 花非花雾非雾
*/
public class Pager extends TagSupport {
private static final long serialVersionUID = 1L;
private Integer curPage;
private Integer totalPage;
private Integer pageSize = TestConstance.pageSize;
private Integer totalCount = 0;
private String formId;
public void setCurPage(Integer curPage) {
this.curPage = curPage;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public void setFormId(String formId) {
this.formId = formId;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
int pageNumber = 0;
if (totalPage%pageSize==0) {
pageNumber = totalPage/pageSize;
} else {
pageNumber = (totalPage/pageSize)+1;
}
if (curPage < 1) {
curPage = 1;
}
try {
if (pageNumber > 0) {
out.print("<script type='text/javascript'>" +
"function go(pageNum){" +
"var f = document.getElementById('" + formId + "');"+
"f.action = f.action + '?pageNum=' + pageNum + '&pageSize="+pageSize+"';"+
"f.submit();"+
"}" +
"</script>");
out.print("<div class='pagination'><ul>");
int start = 1;
int end = totalPage;
for(int i=4;i>=1;i--){
if((curPage-i)>=1){
start = curPage-i;
break;
}
}
for(int i=4;i>=1;i--){
if((curPage+i)<=totalPage){
end = curPage+i;
break;
}
}
//如果小于9则右侧补齐
if(end-start+1<=9){
Integer padLen = 9-(end-start+1);
for(int i=padLen;i>=1;i--){
if((end+i)<=totalPage){
end = end+i;
break;
}
}
}
//如果还小于9左侧补齐
if(end-start+1<=9){
Integer padLen = 9-(end-start+1);
for(int i=padLen;i>=1;i--){
if((start-i)>=1){
start = start-i;
break;
}
}
}
if(curPage>1){
if(start>1){
out.print("<li><a href='javascript:go(1)'>首页</a></li>");
}
out.print("<li><a href='javascript:go("+(curPage-1)+")'>上一页</a></li>");
}
for(int i=start;i<=end;i++){
if(i==curPage){
out.print("<li class='active'><a href='#'>" + i + "</a></li>");
}else{
out.print("<li><a href='javascript:go("+i+")'>" + i + "</a></li>");
}
}
if(curPage<totalPage){
out.print("<li><a href='javascript:go("+(curPage+1)+")'>下一页</a></li>");
if(end<totalPage){
out.print("<li><a href='javascript:go("+totalPage+")'>尾页</a></li>");
}
}
out.print("<li><a href='javascript:void(0)'>共" + totalPage + "页" + this.totalCount + "条</a></li>");
out.print("</ul>");
}
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
public static Integer getStartIndex(Integer pageNum, Integer pageSize){
Integer res = 0;
if(pageNum>0){
res = (pageNum-1)*pageSize;
}
return res;
}
}
  BaseController

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.ui.Model;
public class BaseController {
//初始化分页相关信息
protected void initPage(Map<String,Object> map, Integer pageNum, Integer pageSize, Integer totalCount){
if(null==pageSize || pageSize.equals("")){
pageSize = FundTestConstance.pageSize;
}
if(pageSize>50){
pageSize = 50;
}
Integer totalPage = (totalCount+pageSize-1)/pageSize;
if(null==pageNum){
pageNum = 1;
}else if(pageNum>totalPage){
pageNum = totalPage;
}
map.put("startIndex", Pager.getStartIndex(pageNum, pageSize));
map.put("pageNum", pageNum);
map.put("totalPage", totalPage);
map.put("pageSize", pageSize);
map.put("totalCount", totalCount);
}
//将相关数据放入model
protected void initResult(Model model, List<Object> list, Map<String,Object> map){
model.addAttribute("list", list);
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry m = (Map.Entry)it.next();
model.addAttribute(m.getKey().toString(), m.getValue());
}
}
}
  TestController.java

@Controller
public class TestController extends BaseController{
@Autowired
private TestService testService;
public TestService getTestService() {
return testService;
}
public void setTestService(TestService testService) {
this.testService = testService;
}
@RequestMapping("/test")
public String test(Model model, @RequestParam(required=false) String type, @RequestParam(required=false) Integer pageNum,
@RequestParam(required=false) Integer pageSize) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("type", type);
Integer totalCount = this.testService.getTestsCount(map);
this.initPage(map, pageNum, pageSize, totalCount);
List list = this.testService.getTests(map);
this.initResult(model, list, map);
return "test";
}
@RequestMapping("/test/add")
public String testAdd(@RequestParam String type,Model model) {
Test test = new Test();
test.setType(type);
this.testService.addTest(test);
return this.test(model,null,null,null);
}
@RequestMapping("/test/del")
public String testDel(@RequestParam(required=true) Integer id, @RequestParam(required=false) Integer pageNum,
@RequestParam(required=false) Integer pageSize, Model model) {
this.testService.delTest(id);
return this.test(model, null, pageNum, pageSize);
}
@RequestMapping("/test/toEdit")
public String testToEdit(@RequestParam(required=true) Integer id, Model model) {
Test test = this.testService.getTestById(id);
model.addAttribute("test", test);
return "testEdit";
}
@RequestMapping("/test/edit")
public String testedit(@RequestParam(required=true) Integer id,
@RequestParam String type,
@RequestParam(required=false) Integer pageNum,
@RequestParam(required=false) Integer pageSize,
Model model) {
Test test = new Test();
test.setType(type);
this.testService.editTest(test);
return this.test(model, null, pageNum, pageNum);
}
}
  TestMapper.xml

<select id="getTests"  resultMap="baseResultMap" parameterType="map">
SELECT id, name, type, create_date, update_date
FROM test
WHERE 1=1
<if test="type!=null and type!=''">
AND type = #{type}
</if>
limit #{startIndex},#{pageSize}
</select>
<select id="getTestsCount" resultType="java.lang.Integer" parameterType="map">
SELECT COUNT(1)
FROM test
WHERE 1=1
<if test="type!=null and type!=''">
AND type = #{type}
</if>
</select>
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-290752-1-1.html 上篇帖子: mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性 下篇帖子: Mysql 创建数据库或表名是使用特殊符号
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表