学习目标
- (1)jsp代码重用
- (2)部门模块
- (3)部门CRUD
jsp代码重用
- (1)jsp代码是可以重用
- (2)jsp代码如何重用?
建立jsp页面 A,保存重用代码
在当前页面 B 中引入A
<jsp:include page="A.jsp" />
- (3)B可以将参数传给A
<jsp:param name="jack" value="rose"/>
${param.jack}
demo02.jsp
<body>
<%-- 子标签param,将k-v值传给被include页面--%>
<jsp:include page="demo02_common.jsp">
<jsp:param name="jack" value="rose" ></jsp:param>
<jsp:param name="url" value="http://www.baiud.com" ></jsp:param>
</jsp:include>
我是主要内容
<jsp:include page="demo02_common.jsp"></jsp:include>
</body>
demo02_common.jsp
<body>
<h1>我是可以重用的jsp代码部分</h1>
${param.jack}
${param.url} //分页需要使用地址参数
</body>
jsp代码重用- 分页代码
- (1)分页工具条,肯定是可以重用的
page.jsp
company-list.jsp
<div class="box-footer">
<jsp:include page="../common/page.jsp">
<jsp:param value="${path}/company/list.do" name="pageUrl"/>
</jsp:include>
</div>
page.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<div class="pull-left">
<div class="form-group form-inline">
总共${pi.pages} 页,共${pi.total} 条数据。
</div>
</div>
<div class="box-tools pull-right">
<ul class="pagination" style="margin: 0px;">
<li >
<a href="javascript:goPage(1)" aria-label="Previous">首页</a>
</li>
<c:if test="${pi.pageNum != 1 }">
<li><a href="javascript:goPage(${pi.prePage})">上一页</a></li>
</c:if>
<c:forEach begin="1" end="${pi.pages}" var="i">
<li class="paginate_button ${pi.pageNum==i ? 'active':''}"><a href="javascript:goPage(${i})">${i}</a></li>
</c:forEach>
<c:if test="${pi.pageNum != pi.pages }">
<li><a href="javascript:goPage(${pi.nextPage})">下一页</a></li>
</c:if>
<li>
<a href="javascript:goPage(${pi.pages})" aria-label="Next">尾页</a>
</li>
</ul>
</div>
<form id="pageForm" action="${param.pageUrl}" method="post">
<input type="hidden" name="curr" id="curr">
<input type="hidden" name="pageSize" id="pageSize">
</form>
<script>
function goPage(page) {
document.getElementById("curr").value = page //curr=2
document.getElementById("pageSize").value = ${pi.pageSize} //pageSize=3
document.getElementById("pageForm").submit()
}
</script>
</body>
</html>
- (2)重新修改页面的el表达式
部门管理-需求分析
- (1)组织架构图
- (2)
parent_id
的含义
如果一个部门记录的parent_id为null,没有上级部门
反之就是有 - (3)如何体现一个分司有几个部门?
company_id
部门分页列表后台
- (1)包名如何定义? 按功能 system
- (2)Dept 实体类中不定义
parent_id
class Dept{
private Dept parent;
}
-
(3)classpath与classpath*, 区别?
classpath: 读取当前项目的类路径
classpath*: 读取当前项目及依赖工程的类路径 -
(4)如何实现同时查询部门和父部门的映射?
<assoication property column javaType select>
部门分页列表后台
(1)TestDeptService
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class TestDeptService {
private static final Logger l = LoggerFactory.getLogger(TestDeptService.class);
//1:注入部门业务类
//1.1定义接口
//1.2定义了实现类
//1.3在实现类上加@Service
@Autowired
IDeptService iDeptService;
@Test
public void test01(){
//部门分页显示
int curr=1;
int pageSize=3;
String companyId="1";
//2 调用分页查找方法
PageInfo<Dept> pi = iDeptService.findByPage(curr,pageSize,companyId);//整数 参1 当前第几页 参2 每页多少条 参3 公司id
//打印
l.info("test01 pi="+pi);
}
}
(2)Dept
public class Dept {
//成员变量是小驼峰 第二个单词起首字母大写
//deptId
//数据库 每个单词小写 使用_隔开
//dept_id
private String deptId;
private String deptName;
//private String parentId; //上级部门
private Dept parent; //上级部门
private Integer state;
private String companyId;//企业id
private String companyName;
(3)IDeptService
public interface IDeptService {
//查询指定公司id的第几个部门分页
PageInfo<Dept> findByPage(int curr, int pageSize, String companyId);
}
(4)DeptServiceImpl
@Service//将给spring管理
public class DeptServiceImpl implements IDeptService {
//还需要注入dao 根据三层架构 service调用dao
@Autowired
IDeptDao iDeptDao;
@Override
public PageInfo<Dept> findByPage(int curr, int pageSize, String companyId) {
//调用dao查询所有的记录
//select * from dept;
//select count(*) from dept;
//select * from dept limit 0,20;
PageHelper.startPage(curr,pageSize);
List<Dept> list = iDeptDao.findAll();
return new PageInfo<>(list);
}
}
(5)IDeptDao
public interface IDeptDao {
List<Dept> findAll();
Dept findById(String deptId);
}
(6)IDeptDao.xml
<?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" >
<!--namespace: 需要映射的Dao接口类型-->
<mapper namespace="com.wzx.dao.system.dept.IDeptDao">
<select id="findAll" resultMap="findOneMap">
select * from pe_dept
</select>
<!--将查询结果映射到成员变量-->
<resultMap id="findOneMap" type="dept">
<id column="dept_id" property="deptId"/>
<result column="dept_name" property="deptName"/>
<result column="company_id" property="companyId"/>
<result column="company_name" property="companyName"/>
<!-- 将parent_id 映射Dept类型-->
<association property="parent" column="parent_id" javaType="dept" select="findById">
</association>
</resultMap>
<select id="findById" parameterType="string" resultMap="findOneMap">
select * from pe_dept where dept_id = #{dept_id}
</select>
</mapper>
部门分页列表前台
(1)DeptController
@Controller
@RequestMapping("/dept")
public class DeptController {
@Autowired
IDeptService iDeptService;
private static final Logger l = LoggerFactory.getLogger(DeptController.class);
@RequestMapping(path="/toList",method ={ RequestMethod.GET, RequestMethod.POST})
public String toList(Model model, Integer curr, Integer pageSize, String companyId){
l.info("toList curr = "+curr);
l.info("toList pageSize = "+pageSize);
l.info("toList companyId = "+companyId);
//查询一个分页
PageInfo<Dept> pi = iDeptService.findByPage(curr, pageSize, companyId);
l.info("toList pi = "+pi);
model.addAttribute("pi",pi);
return "system/dept/dept-list";
}
}
(2)dept-list.jsp
分页
<c:forEach items="${pi.list}" var="dept" varStatus="st">
<tr>
<td><input type="checkbox" name="id" value="${dept.deptId }"/></td>
<td>${st.count }</td>
<td>${dept.deptId }</td>
<td>${dept.parent.deptName }</td>
<td><a href="/system/dept/toUpdate.do?id=${dept.deptId }">${dept.deptName }</a></td>
<th class="text-center"><button type="button" class="btn bg-olive btn-xs" onclick='location.href="/system/dept/toUpdate.do?id=${dept.deptId}"'>编辑</button></th>
</tr>
</c:forEach>
调用工具栏
<div class="box-footer">
<jsp:include page="../../common/page.jsp">
<jsp:param value="${path}/dept/toList.do" name="pageUrl"/>
</jsp:include>
</div>