随机分页查询数据库:
一、后台controller方法:
@RequestMapping(value="/setPn",method=RequestMethod.GET)
@ResponseBody
public String setPn(int count,HttpServletRequest request) {
//设置固定的count 和 totalPage
Random rand = new Random();
//传入的查询40条数据,pn 的范围是:100-40=60 ,pn[0,60]随机数
int pn = rand.nextInt(questionService.selChoiceSumNum()-count+1)+count;
System.out.println(pn);
request.getSession().setAttribute("totalPage",count+pn-1);
request.getSession().setAttribute("count",count);
request.getSession().setAttribute("pn",pn);
return pn+"";
}
@RequestMapping(value="/findTitle",method=RequestMethod.GET)
public String findNextTitle(Model model,
HttpServletRequest request,@RequestParam("pn")int pn) {
PageBean pageBean = new PageBean();
//每页题目数量
int pageSize = 1;
//字段开始的记录索引
int startPage;
if(pn==1 || pn<1){
startPage=0;
}else{
startPage = (pn-1)*pageSize;
}
int totalPage = (int) request.getSession().getAttribute("totalPage");
int count = (int) request.getSession().getAttribute("count");
int pn0 = (int) request.getSession().getAttribute("pn");
pageBean.setPageSize(1);
pageBean.setTotalRecord(totalPage);
pageBean.setCurrentPage(pn);
pageBean.setPn(pn0);
QustChoice qustChoice = questionService.findSigleChoice(1,startPage,pageSize);
model.addAttribute("qustChoice", qustChoice);
model.addAttribute("count", count);
model.addAttribute("cur", pn-pn0+1);
model.addAttribute("pageBean", pageBean);
return "analysis/online_choice";
}
二、前台调用方法页面–zhuanxiangExam.jsp:
<!-- 按照试题类型 -->
<tr>
<td rowspan="4"><h1>按照试题类型</h1></td>
<td>选择题</td>
<td>请输入题目数量:<input id="choice" type="text" name="count"/></td>
<td><a href="javascript:showChoiceTitle()">进入练习</a></td>
</tr>
<!--注意(参数传递):input标签中name的值,就是后台要接受的参数值-->
function showChoiceTitle(){
var count = $("#choice").val();
$.ajax({
url:"${APP_PATH}/group/setPn.do",
type:"GET",
data:"count="+count,
success:function(result){
alert(result)
$(location).prop('href', '${APP_PATH}/group/findTitle.do?pn='+result);
}
})
};
三、前台页面显示页面–online_choice.jsp
<!--数据库数据显示部分-->
<div class="subject-question">
<p>题目${pageBean.currentPage }:<c:out value="${qustChoice.choiceInfo }"></c:out></p>
</div>
<a href="javascript:void(0);" class="subject-options" data-id="35152">
<label class="radio" id="component_0_checkbox_0">
<span class="icons"></span>
<input type="radio" data-toggle="radio" value="35152">
<pre>A:<c:out value="${qustChoice.choiceOp1 }"></c:out></pre>
</label>
</a>
<!--分页部分-->
<div class="subject-action clearfix">
<div class="subject-opr">
<a href="javascript:void(0);" data-id="22454" class="js-follow collect-subject nc-req-auth">收藏本题</a>
</div>
<div class="subject-next">
<input id="finsh" type="button" name="button1" class="btn warning-btn" value="交卷" onclick="finshexam()">
<a href="${APP_PATH }/group/findTitle.do?pn=0">
<input id="before" type="button" name="button2" class="btn btn-primary" value="第一题">
</a>
<c:if test="${pageBean.hasPrev }">
<a href="${APP_PATH }/group/findTitle.do?pn=${pageBean.currentPage-1}">
<input id="before" type="button" name="button2" class="btn btn-primary" value="上一题">
</a>
</c:if>
<c:if test="${pageBean.hasNext }">
<a href="${APP_PATH }/group/findTitle.do?pn=${pageBean.currentPage+1}">
<input id="before" type="button" name="button2" class="btn btn-primary" value="下一题">
</a>
</c:if>
<br/>
<h2>总共${count }题,当前第${cur }题</h2><br/>
</div>
</div>