代码编织梦想

SpringMVC转发与重定向的使用

转发:由web服务器跳转(可携带数据集合)。
重定向:由浏览器跳转(跳转页面)。

转发:forward
重定向:redirect

请求转发

Index.jsp

<a href="${pageContext.request.contextPath}/forward.action">请求转发页面</a>

<a href="${pageContext.request.contextPath}/forwardAction.action">请求转发action</a>
@RequestMapping("/forward ")

public String relay(){

    return "realyjsp";//默认使用InternalResourceViewResolver拼接前缀后缀进行页面转发
//或者给全路径 随便跳转 return "forward:/webPage/redirectJsp.jsp ";

}
@RequestMapping("/forwardAction")

public String forwardAction(){

        //forward:可以屏蔽前缀和后缀的拼接

    return "forward:/relay.action";//请求转发action

}

重定向

Index.jsp

<a href="${pageContext.request.contextPath}/redirect.action">重定向页面</a>

<a href="${pageContext.request.contextPath}/redirectat.action">请求转发页面</a>

@RequestMapping("/redirect")

public String redirect(){

        //redirect:同样可以屏蔽前缀和后缀的拼接

    return "redirect:/webPage/redirectJsp.jsp";//重定向

}
@RequestMapping("/redirectat")

public String redirectat(){

    //redirect:同样可以屏蔽前缀和后缀的拼接

    return "redirect:/redirect.action";//重定向.action

}

Servlet转发与重定向原理

转发与重定向的区别

在Web应用中通过两种方式,可以完成资源的跳转
转发、重定向
 
//转发的是一次请求
//request.getRequestDispatcher("/list").forward(request,response);
//重定向                    根路径(项目名)+url-pattern
response.sendRedirect("/ServletWeb/list");
转发

转发是一次请求,最终请求结束之后。浏览器地址栏上还是原来的地址
转发是由web服务器完成
request.getRequestDispatcher("/list").forward(request,response);
当调用forward(); 方法时,会将当前的request和response对象传递给下一个servlet

重定向

重新定方向,(重定向时的路径需要以项目名开始):浏览器自发向服务器发送全新的请求
重定向是由浏览器完成。
重定向发送的是get请求
response.sendRedirect(项目根路径+url-pattern);
response.sendRedirect("/ServletWeb/list");
//动态获取根路径(项目名称)
response.sendRedirect(request.getContextPath()+"/error.html");

什么时候使用转发和什么时候使用重定向

如果上一个Servlet当中向request域当中绑定了数据,向从下一个Servler当中把数据从request域里面取出来,则使用转发机制

剩下的所有请求均使用重定向。

转发servlet类

 

public class ServletA extends HttpServlet {

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //使用Servlet转发机制。执行ServletA后,跳转至ServletB,调用请求转发器,将request,response参数传递给另一个HttpServlet子类

   request.getRequestDispatcher("/servletB").forward(request,response);

    }

}

public class ServletB extends HttpServlet {

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取系统当前时间

        Date nowTime =new Date();

        //向request域 中绑定数据

        request.setAttribute("NowTime",nowTime);

        //从request域 获取数据

        Object obj = request.getAttribute("NowTime");

        response.setContentType("text/html;charset=utf-8");

        response.setCharacterEncoding("utf-8");

        PrintWriter out = response.getWriter();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

        String timeStr = sdf.format((Date)obj);

        out.print("当前时间: "+ timeStr);

    }

}

转发html页面

//既可以转发Servlet类也可以转发html(属于Web容器当中合法的资源都可以转发)
request.getRequestDispatcher("/share.html").forward(request,response);

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47268883/article/details/129673217

浅谈springmvc面试问题_奋斗_小蚂蚁的博客-爱代码爱编程

一.简单的谈一下SpringMVC的工作流程 1、用户发送请求至前端控制器DispatcherServlet  2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。  3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。  4、Dispa

深入浅出mvc,springmvc源码分析 struts2源码分析_小飞侠v科比的博客-爱代码爱编程

第1章 深入浅出 MVC 本章课程介绍的是 MVC 模型,它包含了 Model(模型),View(视图)和 Controller(控制器)。其中 Model,通常指的就是 JavaBean。 View,通常指的是 JSP

浅谈 Web 网站架构演变过程-爱代码爱编程

我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理   网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或

浅谈SpringMVC框架-爱代码爱编程

MVC设计模式 什么是MVC设计模式 设计模式(Design Pattern)是一套被反复使用,多数人知晓的、经过分类的,代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解,保证代码的可靠性。 设计模式使代码编写真正工程化; 设计模式是软件工程的基石脉络,如同大厦结构一样。 MVC设计模式 MVC设计模式是一种通用的

浅谈Request,Session和Model向前端传递数据-爱代码爱编程

文章目录 前言结论如下图所示:总结及应用 前言 为了弄清楚它们三个如何向前端如何传递数据,我花了半天时间编写Demo来实测,终于搞明白了他们之间的关系。 结论如下图所示: 对号代表前端能接收到从controller传来的数据,错号反之 解释一下第一行和第二行: A页面通过Xcontroller,Xcontroller通过Ycontro

SpringMVC知识点整理-爱代码爱编程

1、概述 在了解SpringMVC之前,我们需要知道MVC架构设计模式以及J2EE的三层架构设计,MVC模式如下图所示: 三层结构如下图所示: SpringMVC则是基于 MVC 设计理念的 Web 框架,集成于SpringFramework中。SpringMVC也就是我们熟知的’SSM’中的’S’,它通过一套 MVC 注解,让 POJO 成为处

浅谈SpringMVC-爱代码爱编程

目录 1.什么是SpringMVC 1.1简介 1.2原理简述 2.第一个SpringMVC程序 2.1.程序代码 2.2结合代码分析原理 2.2.1探究原理 2.2.2分析代码 3.注解实现SpringMVC 3.1 web.xml文件不变 3.2 springmvc-servlet.xml文件做如下变动 3.3HelloCont

浅谈安全漏洞及工具-爱代码爱编程

一,什么是安全漏洞       安全漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。举例来说,比如最近一次的Log4j 漏洞事件,攻击者仅需向目标输入一段代码,不需要用户执行任何多余操作即可触发该漏洞,使攻击者可以远程控制用户受害者服务器,90% 以上基于 java 开发的应用平台都会受到

浅谈ssm框架中的请求转发和重定向-爱代码爱编程

浅谈ssm框架中的请求转发和重定向 ssm究竟是什么controller到底该怎么去写理解重定向与请求转发总结 ssm究竟是什么 ssm框架由spring、springmvc、mybatis构成,spring的作用就是减少各层之间的耦合度,将对象交给ioc容器进行管理。。springmvc则是将各层的作用清晰的凸显出来,controller就

springmvc模块_卡布达的西瓜的博客-爱代码爱编程

SpingMVC 模块 简介 Spring MVC是一种基于MVC架构模式的轻量级Web框架。 SpringMVC处理过程 Spring MVC的处理过程: DispatcherServlet 接收用户的请求找

如何优雅的用poi导入excel文件-爱代码爱编程

在企业级项目开发中,要经常涉及excel文件和程序之间导入导出的业务要求,那么今天来讲一讲excel文件导入的实现。java实现对excel的操作有很多种方式,例如EasyExcel等,今天我们使用的是POI技术实现excel文件的导入。 POI技术简介 1.POI概念 Apache POI 是用Java编写的免费开源的跨平台的Java AP

jvm监控搭建-爱代码爱编程

文章目录 JVM监控搭建整体架构JolokiaTelegrafInfluxdbGrafana JVM监控搭建 整体架构 JVM 的各种内存信息,会通过 JMX 接口进行暴露。 Jolokia

单元测试详解-爱代码爱编程

总览 什么是单元测试为什么要做单元测试关于单元测试的一些误解有哪些主流的单元测试框架各个框架示例赏析各个框架对比如何进行单元测试问题思考 一,什么是单元测试 维基百科中是这样描述的:在计算机编程中,单元测试又称为模块测

【javaee初阶】第七节.网络原理tcp/ip协议-爱代码爱编程

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:JavaEE初阶 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!! 文章目录 前言 一、TCP/IP协议五层协议栈; 1.1 应用层协议; 二、传输层协议; 2.1 UDP协议; 2.2 TCP协议; 总结 前言 今天我们将学习有

liunx下的进程程序替换_linux进程代码段能被置换出去吗-爱代码爱编程

文章目录 前言1.进程替换1.为啥要进行进程程序替换2.如何进程程序替换呢?3.程序替换失败以及返回值的理解4.进程程序替换的原理 2.进程程序替换接口1.execl2.exclp3.execv4.exe