服务器端跳转
概述:
服务器端跳转 又叫 做服务器端转发 还可以叫做 服务器端重定向, 客户端发送一次请求之后, 服务器做了多次跳转, 可以在服务器端使用 "req.getRequestDispatcher("跳转路径").forward(req,resp)" 实现服务器端跳转用户发送请求看到数据的过程:
1.用户发送请求到服务器 2.服务器会将请求交给对应的控制器 (目前是 Servlet 处理), 在控制器中调用业务层方法获取数据 3.将获取的数据保存到 request 内置对象 4.在跳转到页面将保存在 request 内置对象中的数据再次读取出来之后显示到页面 (用户看到信息)服务器端跳转的特征:
1.浏览器的地址栏信息不会发生改变 2.使用服务器端跳转之后, 可以在 jsp 页面中获取保存在 request 内置对象中的属性 3.对于客户端来说只发送了一次请求Demo: 服务器端跳转
1.将雇员的信息保存到 request 内置对象1 @SuppressWarnings("serial") 2 public class EmpServlet extends HttpServlet { 3 //获取业务层实现类对象 4 private IEmpService empservice = (IEmpService)ServiceFactory.getInstance(EmpServiceImpl.class); 5 @Override 6 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 7 Integer empno = Integer.parseInt(req.getParameter("id")); 8 9 try {10 //将查询的数据保存到 request 内置对象11 req.setAttribute("emp", empservice.findEmpById(empno));12 //跳转到显示雇员的页面13 //获取实现跳转的对象14 RequestDispatcher dispatcher = req.getRequestDispatcher("/pages/emp.jsp");15 //开始转发16 dispatcher.forward(req, resp);17 } catch (Exception e) {18 e.printStackTrace();19 }20 }21 @Override22 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {23 this.doGet(req, resp);24 }25 }
2.动态页面:定义 emp.jsp 文件获取雇员信息
在 jsp 中使用 ${key值.对象属性名} 的方式获取保存在 request 内置对象 这种方式叫做 EL 表达式 (Expression language).1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 5 6 7Insert title here 8 9 1011 显示雇员信息12 ${emp}13
14
编号 | 姓名 | 职位 | 薪资 | 领导编号 | 入职日期 | 佣金 | 部门编号 | 17
${emp.empno} | 20${emp.ename} | 21${emp.job} | 22${emp.sal} | 23${emp.mgr} | 24${emp.hiredate} | 25${emp.comm} | 26${emp.deptno} | 27