JSTL(Java standard taglib)标签的使用
查询多个数据, 需要使用 JSTL 标签库, 使用这个标签库就可以迭代查询到的集合数据显示到页面,
要使用 JSTL 需要下载开发包, 可以到 maven 仓库下载
Demo: JSTL 的使用
1.下载 jstl 的开发包 (www.mvnrepository.com)
2.导入 jstl 的开发包 (直接拷贝的 lib 下)
3.在控制层中定义查询集合的方法
1 @SuppressWarnings("serial") 2 @WebServlet(urlPatterns= {"/emp/*"}) 3 public class EmpServlet extends BaseServlte{ 4 private IEmpService empservice = (IEmpService)ServiceFactory.getInstance(EmpServiceImpl.class); 5 @Override 6 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 7 String pathInfo = req.getPathInfo(); 8 try { 9 if ("/regist".equals(pathInfo)) { 10 this.regist(req, resp); 11 } else if ("/remove".equals(pathInfo)) { 12 this.removeEmpById(req, resp); 13 } else if ("/get".equals(pathInfo)) { 14 this.getEmpById(req, resp); 15 } else if ("/list".equals(pathInfo)) { 16 this.getEmpList(req, resp); 17 } 18 } catch (Exception e) { 19 e.printStackTrace(); 20 } 21 } 22 //模糊分页查询雇员信息 23 public void getEmpList(HttpServletRequest req, HttpServletResponse resp) throws Exception { 24 //模糊查询关键字 25 String kw = req.getParameter("kw"); 26 //当前页 27 Integer cp = Integer.parseInt(req.getParameter("cp")); 28 //每页显示的数据量 29 Integer ls = Integer.parseInt(req.getParameter("ls")); 30 Map<String, Object> map = empservice.findAllSplit(kw, cp, ls); 31 req.setAttribute("map", map); 32 //跳转到显示雇员列表的页面 33 req.getRequestDispatcher("/pages/emp.jsp").forward(req, resp); 34 } 35 36 //根据编号查询数据 37 public void getEmpById(HttpServletRequest req, HttpServletResponse resp) throws Exception { 38 //获取要查询的雇员编号 39 Integer id = Integer.parseInt(req.getParameter("id")); 40 Emp emp = empservice.findEmpById(id); 41 //将要查询的数据保存到 request 内置对象 42 req.setAttribute("emp", emp); 43 //使用服务端跳转到显示雇员的页面, 然后使用 el 表达式将数据获取 44 req.getRequestDispatcher("/pages/emp.jsp").forward(req, resp); 45 } 46 //添加数据 47 public void regist(HttpServletRequest req,HttpServletResponse resp) throws Exception { 48 super.saveFile(req, resp); 49 //将基本信息保存到数据库中 50 Emp emp = super.initObj(req, Emp.class); 51 emp.setImg(super.newFileName); 52 if (empservice.addEmp(emp)) { 53 //保存添加雇员的信息 54 req.setAttribute("emp", emp); 55 req.getRequestDispatcher("/pages/emp.jsp").forward(req, resp); 56 } 57 System.out.println(emp); 58 } 59 //删除数据 60 public void removeEmpById(HttpServletRequest req,HttpServletResponse resp) throws Exception { 61 //获取要删除的雇员的编号 62 Integer empno = Integer.valueOf(req.getParameter("id")); 63 //在删除之前先将雇员的照片信息查询 64 String fileName = empservice.findEmpById(empno).getImg(); 65 //调用业务层的删除方法 66 if (this.empservice.removeEmpById(empno)) { //如果数据库中的数据删除成功,则删除对应的照片 67 super.removeFile(req, fileName); 68 System.out.println("删除成功"); 69 //向客户端输出信息 70 resp.getWriter().println("数据删除成功 "); 71 } 72 } 73 74 @Override 75 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 76 this.doGet(req, resp); 77 } 78 @Override 79 public String getDir() { 80 return "empImgs/"; 81 } 82 }
4.将查询的数据显示到 jsp 页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4 <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta charset="UTF-8"> 8 <title>Insert title here</title> 9 <base href="/MvcPro/"/> 10 </head> 11 <body> 12 <table border="1"> 13 <tr> 14 <td>编号</td><td>姓名</td><td>职位</td><td>薪资</td><td>领导编号</td><td>入职日期</td><td>佣金</td><td>部门编号</td><td>照片</td> 15 </tr> 16 <c:forEach items="${map['emplist']}" var="emp"> 17 <tr> 18 <td>${emp.empno}</td> 19 <td>${emp.ename}</td> 20 <td>${emp.job}</td> 21 <td>${emp.sal}</td> 22 <td>${emp.mgr}</td> 23 <td>${emp.hiredate}</td> 24 <td>${emp.comm}</td> 25 <td>${emp.deptno}</td> 26 <td><img src="${emp.img}" style=Width:40px;higth:60px></td> 27 </tr> 28 </c:forEach> 29 </table> 30 </body> 31 </html>