一、<c:import/>
本标签的作用是在一个页面做红嵌入另一个资源内容。
二、实例
需求,因为每一个分页都需要用到:

所以可以把这个玩意拿出来做一个公共的东西。
示例代码:
newsDetailList.jsp页面:
<%@page import="com.kgc.util.PageSupport"%>
<%@page import="com.kgc.pojo.News"%>
<%@page import="java.util.List"%>
<%@page import="com.kgc.service.impl.NewsServiceImpl"%>
<%@page import="com.kgc.service.NewsService"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%--动态包含无法使用,页面报错,newsService无法使用 <jsp:include page="../common/common.jsp" /> --%>
<%@include file="../common/common.jsp" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>无标题文档</title>
<style type="text/css">
<!--
-->
</style>
<script>
function addNews(){
window.location="newsDetailCreateSimple.jsp";
}
// 下面这段代码不用事件触发,只要进了这个脚本就会执行的
var flag = ${param.flag};
if (flag != null && flag != "" && undefined != flag){
if (flag == "success") {
alert("删除成功");
} else {
alert("删除失败");
}
}
</script>
</head>
<body>
<!--主体-->
<div class="main-content-right">
<!--即时新闻-->
<div class="main-text-box">
<div class="main-text-box-tbg">
<div class="main-text-box-bbg">
<form name ="searchForm" id="searchForm" action="/news/jsp/admin/newsDetailList.jsp" method="post">
<div>
新闻分类:
<select name="categoryId">
<option value="0">全部</option>
<option value='1' >国内</option>
<option value='2' >国际</option>
<option value='3' >娱乐</option>
<option value='4' >军事</option>
<option value='5' >财经</option>
<option value='6' >天气</option>
</select>
新闻标题<input type="text" name="title" id="title" value=''/>
<button type="submit" class="page-btn">GO</button>
<button type="button" onclick="addNews();" class="page-btn">增加</button>
<input type="hidden" name="pageIndex" value="1"/>
</div>
</form>
<table cellpadding="1" cellspacing="1" class="admin-list">
<thead >
<tr class="admin-list-head">
<th>新闻标题</th>
<th>作者</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<%
//获取当前页码
String currntPage=request.getParameter("pageIndex");
if(currntPage==null)
currntPage="1";
int pageIndex=Integer.parseInt(currntPage);
//获取新闻记录总数量
int totalCount=newsService.getTotalCount();
//每页显示记录数
int pageSize=2;
/*获取总页数*/
PageSupport pages=new PageSupport();
pages.setCurrentPageNo(pageIndex);
pages.setPageSize(pageSize);
pages.setTotalCount(totalCount);
int totalPage=pages.getTotalPageCount();
//控制首页和末页
if(pageIndex<1)
pageIndex=1;
else if(pageIndex>totalPage)
pageIndex=totalPage;
//每页显示的新闻列表
List<News> newsList=newsService.getPageNewsList(pageIndex, pageSize);
request.setAttribute("list", newsList);
%>
<input type="hidden" id="totalPage" value="<%=totalPage%>"/>
<c:forEach items="${list}" var="news" varStatus="status">
<tr <c:if test="${status.count%2==0 }"> class="admin-list-td-h2"</c:if> >
<td><a href='newsDetailView.jsp?id=${news.id }'>
<c:out value="${news.title }" escapeXml="true"></c:out>
</a></td>
<td>${news.author }</td>
<td>
<fmt:formatDate value="${news.createDate }" pattern="yyyy-MM-dd"/>
</td>
<td><a href='adminNewsCreate.jsp?id=2'>修改</a>
<a href="javascript:if(confirm('确认是否删除此新闻?')) location='adminNewsDel.jsp?id=${news.id }'">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<%
//原来的分页条 %>
<c:import url="rollpage.jsp">
<c:param name="totalCount" value="<%=Integer.toString(totalCount) %>"></c:param>
<c:param name="pageIndex" value="<%=Integer.toString(pageIndex) %>"></c:param>
<c:param name="totalPage" value="<%=Integer.toString(totalPage) %>"></c:param>
</c:import>
</div>
</div>
</div>
</div>
</body></html>
rollpage.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'rollpage.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function page_nav(frm,num){
frm.pageIndex.value=num;
frm.submit();
}
function jump_to(frm,pageno){
//var regexp=/^\d+$/;
var regexp=/^[1-9]\d*$/;
var totalPage = document.getElementById("totalPage").value;
if(!regexp.test(pageno)){
alert("请输入 正确的数字!");
return false;
}else if((pageno-totalPage) > 0){
alert("总页码一共"+totalPage+"页,请输入正确的页码!");
return false;
}else{
page_nav(frm,pageno);
}
}
</script>
</head>
<body>
<%
// 分页条页面,所有使用分页的页面都可以复用
%>
<div class="page-bar">
<ul class="page-num-ul clearfix">
<li>共${param.totalCount}条记录 ${param.pageIndex}/${param.totalPage}页</li>
<c:if test="${param.pageIndex>1}">
<a href="javaScript:page_nav(document.forms[0],1)">首页</a>
<a href="javaScript:page_nav(document.forms[0],${param.pageIndex-1})">上一页</a>
</c:if>
<c:if test="${param.pageIndex<param.totalPage}">
<a href="javaScript:page_nav(document.forms[0],${param.pageIndex+1})">下一页</a>
<a href="javaScript:page_nav(document.forms[0],${param.totalPage})">最后一页</a>
</c:if>
</ul>
<span class="page-go-form"><label>跳转至</label>
<input type="text" name="inputPage" id="inputPage" class="page-key" />页
<button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button>
</span>
</div>
</body>
</html>
三、bug
3.1bug1:

原因:newsDetailList.jsp页面中的引用rollpage.jsp界面的代码中传过去的参数有问题。因为在rollpage.jsp界面参数都是int,而newsDetailList.jsp传过去的是String类型的数据。所以需要转换一下数据类型。
3.2bug2
今天上午点击增加新闻页面和下一页上一页和跳转查询都没有用,不知道什么原因,但是这次操作之后功能都恢复了。可能的原因是把newsDetailList.jsp页面重新剪切和粘贴了一下,具体为什么不清楚。
网友评论