码迷,mamicode.com
首页 > 其他好文 > 详细

服务器重定向和客户端重定向

时间:2019-04-20 21:17:01      阅读:540      评论:0      收藏:0      [点我收藏+]

标签:服务   request   xtend   alt   code   std   职位   throw   prot   

一、服务器重定向

  服务器重定向又叫做服务器转发和服务器跳转,在大部分的开发中从用户发送请求到看到数据会经历如下过程:

1.用户发送请求到服务器

2.服务器会将请求交给对应的控制器(目前是Servlet)处理,在控制器中调用业务层方法取得数据

3.之后将取得数据保存到request内置对象

4.然后在跳转到页面将保存在request内置对象中的数据再次取出来之后显示到页面,用户就有能够看到信息

总结:服务器端重定向(跳转,转发)的特征

1.实现的方式是调用RequestDispatcher类的forword()方法

2.服务器端转发浏览器的地址栏信息不会发生改变

3.使用服务器端转发之后,可以在jsp页面中取得保存在request内置对象中的属性

4.使用${参数名}在jsp中取得对应的值的方式叫做EL表达式

服务器重定向简单demo,实现数据库中的雇员信息保存到request内置对象并在jsp中显示

public class EmpServlet extends HttpServlet{
    //取得业务层实现类对象
    private IEmpService empservice=(IEmpService)ServiceFactory.getInstance(IEmpServiceImpl.class);    
@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//将雇员信息保存到requset内置对象
        Integer empno = Integer.parseInt(req.getParameter("id"));
        try {
            //将查询到的数据保存到request内置对象
            req.setAttribute("emp", empservice.findEmpById(empno));
            //跳转显示雇员的页面
            //取得实现跳转的对象
            RequestDispatcher dispatcher = req.getRequestDispatcher("/pages/emp.jsp");
            //开始转发
            dispatcher.forward(req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    
}

jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>
        显示雇员的信息
        ${emp} 
    </h1>
    <table border="1">
        <tr>
        <td>编号</td><td>姓名</td><td>职位</td><td>领导编号</td><td>入职日期</td>
        <td>薪资</td><td>奖金</td><td>部门编号</td>
        </tr>
        <tr>
        <td>${emp.empno}</td>
        <td>${emp.ename}</td>
        <td>${emp.job}</td>
        <td>${emp.mgr}</td>
        <td>${emp.hiredate}</td>
        <td>${emp.sal}</td>
        <td>${emp.comm}</td>
        <td>${emp.deptno}</td>
        </tr>
    </table>
</body>
</html>

技术图片

二、客户端重定向

  客户端重定向又叫做客户端转发,就是每次进行的转发都是客户端的一个新的请求。实现客户端转发的方式有很多,如页面的超链接转发、表单提交、js中使用window.locatino.href实现 的都是客户端转发,但是以上的的转发是在客户端直接实现的,也可以在servlet中实现客户端转发,要在servlet实现客户端转发需要使用到response内置对象的一个方法sendRedirect("转发的路径")。

总结:客户端重定向(转发)的特征

1.浏览器地址栏信息改变,不再是提交表单的路径

2.客户端转发就是发送了一次新的请求,在整个登录中发送了两次请求,第一次点击登录按钮提交表单时候的请求,第二次在servlet中使用sendRediect方法实现的跳转(跳转到欢迎页面)

3.客户端转发之后保存在request内置对象中的属性不存在了,因为是一次新的请求,而request只能表示当次表示请求

与服务器端转发的区别

1.服务器端转发时浏览器的地址栏信息没有发生改变

2.服务器端转发欢迎页面(jsp页面)之后依然可以取得保存在request内置对象中的属性

3.服务器端转发对于客户端来就只发送了一次请求

 

服务器重定向和客户端重定向

标签:服务   request   xtend   alt   code   std   职位   throw   prot   

原文地址:https://www.cnblogs.com/whymoney1000/p/10742580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!