zoukankan      html  css  js  c++  java
  • 服务器端跳转

    服务器端跳转

    概述:
      服务器端跳转 又叫 做服务器端转发 还可以叫做 服务器端重定向,
      客户端发送一次请求之后, 服务器做了多次跳转,
      可以在服务器端使用 "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>
  • 相关阅读:
    人脸识别算法初次了解
    白话经典算法系列之二 直接插入排序的三种实现
    常见浏览器兼容性问题与解决方式
    MP3的频率、比特率、码率与音质的关系
    程序猿接私活经验总结,来自csdn论坛语录
    Java虚拟机工作原理具体解释
    簡單SQL存儲過程實例
    全栈JavaScript之路(七)学习 Comment 类型节点.
    strdup函数的使用方法
    POJ 2823 Sliding Window 【单调队列】
  • 原文地址:https://www.cnblogs.com/yslf/p/10745472.html
Copyright © 2011-2022 走看看