关于Handler之间的跳转技巧和视图解析器viewClass属性
老师,在学习项目过程中,发现老师多次使用return "redirect:xxx";的语句来实现Handler之间的控制器处理方法的跳转。我想学一下这个redirect应该是怎么使用的。
由于在spring核心配置文件配置了视图解析器,在返回的时候会对路径进行前缀和后缀的添加,也就是返回的字符串是/WEB-INF/pages/redirect:xxx.jsp,我想问下,如果在xxx前面加个/,即/WEB-INF/pages/redirect:/xxx.jsp则代表访问的是哪个目录下的xxx.jsp页面?也就是说xxx前面的/是什么意思?
先前学请求转发和重定向的时候,有老师说请求转发和重定向方法中的路径参数前面的“/”含义不一样,一个是当前项目根目录,一个是不带上下文的服务器根目录,那通过return"redirect:to_change_password";转发的页面实质是请求转发还是重定向原理呢?即request中的变量是否仍旧有效?
在学习springMVC框架初期,老师演示了视图解析器的配置,当时只配置了往返回的字符串类型添加前缀后缀的属性,当然这也能正常访问。本次项目的视图解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean>
在这里,增加了一条
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
视频中老师说这属性是指明按什么格式什么规律去转换,那我想value设置的应该就是转换类。我有点纳闷,难道视图解析还能有格式的选择的?什么意思啊?这个还有其他的值么,分别又是有什么作用呢?
正在回答
同学你好。下面来一条条解答你的疑惑:
1、由于视图解析的作用,"redirect: xxx.jsp"返回的路径为/WEB-INF/pages/xxx.jsp,"redirect: /xxx.jsp"返回的路径为/WEB-INF/pages//xxx.jsp。都是不影响的,都可以访问
2、return "redirect"是重定向,Request会丢失,其中的变量会失效。
3、如果在JSP中使用JSTL标签来处理格式化和信息的话,那么就会让InternalResourceViewResolver将视图解析为JstlView。但如果不配置viewClass的话,默认是InternalResourceView。
如果想让InternalResourceViewResolver将视图解析 为JstlView,而不是InternalResourceView的话,那么我们只需设置它的viewClass属性即可
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
也就是说,用到jstl中fmt标签的时候,需要配置这个属性。
如果解答了同学的疑问,望采纳~
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星