package com.example.demo.utils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
public class PageUtils
{
/**
*
* @author 851286894@qq.com 改良版mygroup_20170928
*
* @param request
* request对象,用于传入属性
* @param currentPage
* 当前的页数
* @param pageSize
* 每页设定的行数
* @param source
* 存放了相应数据的集合
* @param dataCount
* 数据库中共存在多少条数据
*
* <br/>
* <br/>
* <br/>
* <b>note:</b> 该方法只是将jsp中的页面代码进行简化,jsp页面中使用如下el表达式可取出相应的模块 <br/>
* <b>${list}:</b> 数据列表 <br/>
* <b>${first}:</b> 首页 超链接 <br/>
* <b>${prev}:</b> 上一页 超链接 <br/>
* <b>${next}:</b> 下一页 超链接 <br/>
* <b>${End}:</b> 尾页 超链接 <br/>
* <b>${pageNo}:</b> 当前页数 <br/>
* <b>${pageCount}:</b> 总页数 <br/>
* <b>${dataInfo}:</b> 共有?条信息提示 <br/>
* <b>${pageInfo}:</b> 当前处于?/?页信息提示 <br/>
* <b>${group}:</b> 以上六条组合
*
* <br/>
* <br/>
* <b>note:</b> 因耦合性问题,使用该方法进行简化分页代码时,必须遵循以下命名规范 <br/>
* <b>method:</b> 在JSP中进行功能定义时必须有method参数作为接受和传输功能选择的标识。 <br/>
* <b>list:</b> 在JSP页面取出列表数据时必须使用${list},并且在调用列表功能时必须以list作为标识。 <br/>
* <b>pageSize:</b> 取出每页的数据条数 <br/>
* <b>currentPage:</b> 必须在JSP中使用currentPage作为分页的页码选择标识 <br/>
* <br/>
* <b>example-> student.do?method=list&pageNo=1;</b> <br/>
* <br/>
* <br/>
* 可在struts2框架下使用 <br/>
* <br/>
* 模糊查询时查询字段可以是以query开头的任意词组,可以有任意个查询字段,
* 取出该字段值时使用之前设置的query开头的任意词组作为标识
**/
/*
* 比如:person表中有100条记录,其中满足条件的记录有50个,每页显示两条满足条件的记录。
* 那么形参source:该页的两条满足条件的记录!
* 那么形参dataCount:满足条件的记录数!
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void page(HttpServletRequest request, Integer currentPage,
Integer pageSize, List<?> source, Integer dataCount)
{
//currentPage=1
//pageSize=2
//source={{2,李四,..},{3,王五,...}}
//dataCount=3
String url = request.getRequestURI();//url="/StudentManager/ListServlet"
//http://localhost:8080/StudentManager/ListServlet?currentPage=1&queryName=zan&queryDeptID=1
HashMap<String, String> queryMap = new HashMap<String, String>();
Map parameterMap = request.getParameterMap();//parameterMap={queryName:zan,currentPage=1}
Set keySet = parameterMap.keySet();//keySet={queryName,currentPage}
for (Object object : keySet)
{
String parameterName = object.toString();//parameterName="queryName" "currentPage"
String queryValue = request.getParameterValues(parameterName)[0];//queryvalue="zan" "1"
// System.out.println(queryValue);
if (parameterName.startsWith("query") && queryValue != null
&& !queryValue.equals(""))
{
queryMap.put(parameterName, queryValue);
}
}
//把queryMap转换为String:
//queryMap={queryName:zan,querydeptID:1}
String queryStr = "";
Set<String> queryNames = queryMap.keySet();//{"queryName","querydeptid"}
for (String queryName : queryNames)
{
queryStr += ("&" + queryName + "=" + queryMap.get(queryName));
//queryStr="&queryName=zan&querydeptid=1"
}
//到这里为止,请求参数:currentPage=1&queryName=zan&queryDeptID=1
//queryStr="queryName=zan&queryDeptID=1";
//System.out.println(queryStr);//"&queryName=zan&queryDeptID=1"
boolean flag = false;
if (url.contains("!"))
{
flag = true;
}
//flag=false
int pageCount = dataCount / pageSize
+ (dataCount % pageSize == 0 ? 0 : 1);//int,总页面
String first = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=1" + queryStr + "'> 首页 </a>";
//first=<a href='/StudentManager/ListServlet?method=list¤tPage=1&queryName=zan&queryDeptID=1'> 首页 </a>
String prev = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=1" + queryStr + "'> 上一页 </a>";
//prev=<a href='/StudentManager/ListServlet?method=list¤tPage=1&queryName=zan&queryDeptID=1'> 上一页 </a>
String next = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=" + pageCount + queryStr + "'> 下一页 </a>";
//next=<a href='/StudentManager/ListServlet?method=list¤tPage=2&queryName=zan&queryDeptID=1'> 下一页 </a>
String End = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=" + pageCount + queryStr + "'> 尾页 </a>";
String dataInfo = "<span>共有" + dataCount + "条数据 </span>";
String pageInfo = "<span> 当前处于第" + currentPage + "/" + pageCount
+ "页</span>";
if (currentPage > 1)
{
prev = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=" + (currentPage - 1) + queryStr
+ "'> 上一页 </a>";
} else
{
prev = "上一页";
first = "首页";
}
if (currentPage < pageCount)
{
next = "<a href='" + url + "?" + (flag ? "" : "method=list&")
+ "currentPage=" + (currentPage + 1) + queryStr
+ "'> 下一页 </a>";
} else
{
next = "下一页";
End = "尾页";
}
//到这里为止,上一页、下一页、首页、尾页都正常
request.setAttribute("pageCount", pageCount);//int,总页面
request.setAttribute("currentPage", currentPage.toString());//int,当前页的页面
for (String string : queryNames)//queryNames={"queryName","queryDeptID"}
{
request.setAttribute(string, queryMap.get(string));
}
request.setAttribute("pageSize", pageSize);//int,自己传入
request.setAttribute("list", source);//List<Student>,2个学生
request.setAttribute("first", first);//String first="<a href="...">首页</a>"
request.setAttribute("prev", prev);//String prev="<a href="....">上一页</a>"
request.setAttribute("next", next);//String next="<a href="...">下一页</a>"
request.setAttribute("End", End);//String End="<a href="...">尾页</a>"
request.setAttribute("dataInfo", dataInfo);//String dataInfo="<span>共有" + dataCount + "条数据 </span>"
request.setAttribute("pageInfo", pageInfo);//String pageInfo="<span> 当前处于第" + currentPage + "/" + pageCount+ "页</span>"
// ${group} 普通分页
request.setAttribute("group", dataInfo + "   " + first
+ "   " + prev + "   " + next
+ "   " + End + "  " + pageInfo);
int btncount = 10;// 按钮数
int start;// 开始的页码.当前页是50时,例如:上一页 45 46 47 48 49 50 51 52 53 54 下一页
int end;// 结束的页码
//上一页 下一页
start = currentPage - btncount / 2 < 1 ? 1 : currentPage - btncount / 2;//int start=45
end = start + btncount - 1;//int end=54
int prePage = currentPage - 1 < 1 ? 1 : currentPage - 1;//上一页,int ,49
int nextPage = currentPage + 1 > pageCount ? pageCount
: currentPage + 1;//下一页的页面,int ,51
if (end > pageCount)
{
end = pageCount;
start = end - btncount + 1;
nextPage = end;
}
start = start < 1 ? 1 : st
没有合适的资源?快使用搜索试试~ 我知道了~
springboot+JPA的CRUD和图片上传的小demo
共68个文件
class:12个
java:12个
jpg:12个
需积分: 20 29 下载量 192 浏览量
2018-04-27
17:43:44
上传
评论 2
收藏 690KB ZIP 举报
温馨提示
springboot结合jpa的增删查改,还有图片上传,小问题是图片上传到的地方是项目里的静态资源文件夹,添加成功返回list页面时不会显示,需要手动刷新项目的static文件夹,再刷新页面就可以显示图片。
资源推荐
资源详情
资源评论
收起资源包目录
springboot-test.zip (68个子文件)
springboot-test
pom.xml 2KB
target
test-classes
com
example
demo
SpringbootTestApplicationTests.class 652B
m2e-wtp
web-resources
META-INF
maven
com.example
springboot-test
pom.xml 3KB
pom.properties 243B
MANIFEST.MF 331B
classes
META-INF
maven
com.example
springboot-test
pom.xml 2KB
pom.properties 243B
MANIFEST.MF 331B
application.properties 884B
com
example
demo
dao
IUserRepository.class 839B
config
filter
WebConfiguration$MyFilter.class 2KB
WebConfiguration.class 1KB
contorller
HelloWorldController.class 994B
UserController.class 2KB
SchedulerTask.class 1KB
view
IndexContorller.class 4KB
SpringbootTestApplication.class 800B
service
IUserServic.class 128B
entity
User.class 2KB
utils
PageUtils.class 6KB
static
css
bootstrap.css 143KB
upload
e00413a5007d4c8ead03e6b1280b7031.png 37KB
e9a5e6b3af124572af9317c4c7803825.png 52KB
ce0a9e9402bc4dcab422e4db5929e607.jpg 33KB
9f626025d010424582b3ae0600220c01.jpg 18KB
c15f3409f80d47d08a527ffb31305d35.jpg 33KB
d9de869f54674a16ba23e48666521387.jpg 18KB
553203b85818445d9322354dfd9ec351.jpg 18KB
b2dc39155a904cc0b22037156bd0682a.png 37KB
f28fdd9462f045d4bd21f8197cb5b28a.jpg 33KB
mvnw 6KB
.settings
org.eclipse.m2e.core.prefs 97B
org.eclipse.wst.common.project.facet.core.xml 145B
org.eclipse.core.resources.prefs 243B
org.eclipse.jdt.core.prefs 243B
src
test
java
com
example
demo
SpringbootTestApplicationTests.java 341B
main
webapp
list.jsp 2KB
userEdit.jsp 3KB
index.jsp 591B
userAdd.jsp 3KB
resources
application.properties 884B
templates
static
css
bootstrap.css 143KB
upload
e00413a5007d4c8ead03e6b1280b7031.png 37KB
e9a5e6b3af124572af9317c4c7803825.png 52KB
ce0a9e9402bc4dcab422e4db5929e607.jpg 33KB
9f626025d010424582b3ae0600220c01.jpg 18KB
c15f3409f80d47d08a527ffb31305d35.jpg 33KB
d9de869f54674a16ba23e48666521387.jpg 18KB
553203b85818445d9322354dfd9ec351.jpg 18KB
b2dc39155a904cc0b22037156bd0682a.png 37KB
f28fdd9462f045d4bd21f8197cb5b28a.jpg 33KB
java
com
example
demo
dao
IUserRepository.java 527B
config
RedisConfig.java 2KB
filter
WebConfiguration.java 2KB
contorller
UserController.java 2KB
SchedulerTask.java 572B
HelloWorldController.java 515B
SpringbootTestApplication.java 560B
view
IndexContorller.java 4KB
service
IUserServic.java 74B
entity
User.java 1KB
utils
PageUtils.java 9KB
.project 1KB
.classpath 1KB
.gitignore 268B
.mvn
wrapper
maven-wrapper.jar 46KB
maven-wrapper.properties 110B
mvnw.cmd 5KB
共 68 条
- 1
资源评论
纯洁的大白
- 粉丝: 9
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- date0425111111111111111111111
- 包含贪心算法的定义及python代码部分实现
- 自动驾驶-状态估计和定位之扩展卡尔曼滤波.pdf
- csdn之x-ca-key,x-ca-nonce,x-ca-signature与x-ca-signature-headers探索
- 基于TM1620数码显示芯片STM32单片机驱动程序软件源代码.zip
- 【tomcat6使用redis配置session共享】
- 包含杨辉三角的说明及java代码实现
- FDN371N-NL-VB一款SOT23封装N-Channel场效应MOS管
- AutomotiveSPICE-V4.0 中文版
- Java实现杨辉三角的生成和打印代码示例.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功