时间:2021-05-19
简单跳转专题
个人建议重新练习一遍搭建的过程,如果感觉麻烦你可以直接复制上一个工程,但是需要修改pom.xml中的一点信息
1.核心配置类和加载类
2.JavaWeb阶段的跳转方式
请注意SpringMVC的方法中的形参,框架给我们完成了实例化的操作
package com.hanpang.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controller//告知其是一个控制器public class Demo01Controller { @RequestMapping(path="/test01") public ModelAndView 传统方式跳转_请求转发(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { System.out.println("默认对形参的进行了实例化操作"); request.getRequestDispatcher("/WEB-INF/jsp/demo01.jsp").forward(request, response); return null; } @RequestMapping(path="/test02") public ModelAndView 传统方式跳转_重定向(HttpServletRequest request,HttpServletResponse response) throws IOException { System.out.println("默认对形参的进行了实例化操作"); response.sendRedirect(request.getContextPath()+"/view/result01.jsp"); return null; }}NOTE: 这种方式我们几乎不再使用了,只是只是简单的演示和回顾一下,至少我们可以使用这种方式获取Servlet API!!!
3.Controller跳转到JSP的方式演示
在示例最后的时候,我们会加入JSP的视图解析器,开始阶段我们还是按照传统的方式,有一个循序渐进的过程
感觉跟Java Web阶段的方式差不多,只是重定向的时候设置了一个简单的前缀
4.Controller跳转到Controller的方式演示
类似于从一个Servlet调到另一个Servlet
5.加入JSP的视图解析器
上面的演示过程中,我们发现ModelAndView中setViewName是用来完成跳转的,这里面传递的数据是字符串,但是处理方式不太一样,当跳转的路径有前缀redirect:的时候,那么处理方式不一样.
还有,如果我们有多个类似/WEB-INF/jsp/demo01.jsp形式的字符串的时候,我们发现公共的部分很多,SpringMVC给我们提供了一个专门处理 Controller请求转发JSP页面 的类.
请注意我的描述: 如果发现你传递的字符串没有设置任何前缀标识,那么默认情况下使用配置JSP视图解析器处理,并且完成请求转发的操作
注解:配置核心配置类
**NOTE:**请注意方法上的注解@Bean
方法等价于XML中的代码如下
改进Controller跳转JSP代码
该视图解析器只能针对于JSP的请求转发,对重定向无效,请注意代码的注释内容
@RequestMapping(path="/test03") public ModelAndView 默认情况下是请求转发(){ ModelAndView mav = new ModelAndView(); //mav.setViewName("/WEB-INF/jsp/demo01.jsp"); //改进后:默认情况下,会使用JSP视图解析器处理, // prefix+"jsp/demo01"+suffix => /WEB-INF/jsp/demo01.jsp mav.setViewName("jsp/demo01");//发现字符串没有前缀修饰 return mav; } @RequestMapping(path="/test04") public ModelAndView 设置重定向的方式(){ ModelAndView mav = new ModelAndView(); //解析器对重定向无效 mav.setViewName("redirect:/view/result01.jsp"); return mav; }改进Controller跳转Controller代码
当配置完JSP视图解析器后,对上述的代码再次进行测试,查看访问结果有惊喜
符合我们之前说的"/test03"是一个字符串,默认情况下会使用JSP视图解析器进行处理,那么如何改进呢?
可以设置前缀"forward:",改进代码如下:
当发现字符串使用forward:修饰后,处理情况改变为从Controller请求转换到另一个Controller,而如果做到重定向的话,代码如下:
6.InternalResourceViewResolver 附录
InternalResourceViewResolver:它是URLBasedViewResolver的子类,所以URLBasedViewResolver支持的特性它都支持。
在实际应用中InternalResourceViewResolver也是使用的最广泛的一个视图解析器,那么InternalResourceViewResolver有什么自己独有的特性呢?
单从字面意思来看,我们可以把InternalResourceViewResolver解释为内部资源视图解析器,这就是InternalResourceViewResolver的一个特性。
InternalResourceViewResolver会把返回的视图名称都解析为InternalResourceView对象,InternalResourceView会把Controller处理器方法返回的模型属性都存放到对应的request属性中,然后通过RequestDispatcher在服务器端把请求forword重定向到目标URL。
比如在InternalResourceViewResolver中定义了prefix=/WEB-INF/,suffix=.jsp,然后请求的Controller处理器方法返回的视图名称为test,那么这个时候InternalResourceViewResolver就会把test解析为一个InternalResourceView对象,先把返回的模型属性都存放到对应的HttpServletRequest属性中,然后利用RequestDispatcher在服务器端把请求forword到/WEB-INF/test.jsp。这就是InternalResourceViewResolver一个非常重要的特性,我们都知道存放在/WEB-INF/下面的内容是不能直接通过request请求的方式请求到的,为了安全性考虑,我们通常会把jsp文件放在WEB-INF目录下,而InternalResourceView在服务器端跳转的方式可以很好的解决这个问题。下面是一个InternalResourceViewResolver的定义,根据该定义当返回的逻辑视图名称是test的时候,InternalResourceViewResolver会给它加上定义好的前缀和后缀,组成“/WEB-INF/test.jsp”的形式,然后把它当做一个InternalResourceView的url新建一个InternalResourceView对象返回。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
请求出现想要跳转到错误页面就需要对springmvc进行配置方法1:基于xml的配置springmvc.xml配置类erroe2.方法2:基于@Controll
springmvc的参数绑定有以下几种方法:1)默认的参数绑定RequestResponseSessionModel(实现ModelMap)2)简单类型参数绑定
SpringMVC上传文件的简单实例在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自
之前做过页面内的跳转,比较简单,最近项目需要实现跨页面跳转,并跳转到指定地点,试了很多方法,有用到传递参数然后让页面滚动相应的距离,但是一旦文章长短发生变化,滚
springmvc:是完成数据的封装和跳转的功能流程图如下:springmvc的配置流程1、导入jar包2、配置servlet文件init-param的作用是在