服务器端跳转

服务器端跳转

概述:
  服务器端跳转 又叫 做服务器端转发 还可以叫做 服务器端重定向,
  客户端发送一次请求之后, 服务器做了多次跳转,
  可以在服务器端使用 "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     @Override
22     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 <!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h1>
11         显示雇员信息
12         ${emp}
13     </h1>
14     <table border="1">
15         <tr>
16             <td>编号</td><td>姓名</td><td>职位</td><td>薪资</td><td>领导编号</td><td>入职日期</td><td>佣金</td><td>部门编号</td>
17         </tr>
18         <tr>
19             <td>${emp.empno}</td>
20             <td>${emp.ename}</td>
21             <td>${emp.job}</td>
22             <td>${emp.sal}</td>
23             <td>${emp.mgr}</td>
24             <td>${emp.hiredate}</td>
25             <td>${emp.comm}</td>
26             <td>${emp.deptno}</td>
27         </tr>
28     </table>
29 </body>
30 </html>

 

posted @ 2019-04-21 15:52  笑长不爱笑QvQ  阅读(637)  评论(0编辑  收藏  举报