SpringMVC中的自定义视图解析器
先决条件:
- 我们平时的jsp文件都是放到web目录下,现在我们如果把jsp文件放到web-inf下,就发现没有办法访问,这样的设计的目的就是为了提高项目访问的安全性
遇到的问题:
- 放到web-inf下的文件该如何访问呢?
解决的方案:
- WEB-INF下的所有文件必须通过转发的形式访问
- 方式一
<%--转发到指定的页面中--%>
<jsp:forward page="WEB-INF/update.jsp"></jsp:forward>
- 方式二
@RequestMapping("update")
public String demo1(){
return "/WEB-INF/update.jsp";
}
遇到的新问题:
- 文件放到 WEB-INF 下 虽然是安全了,但是我们书写项目的时候可能有 30 个页面,这样一来,我们书写访问的方法需要书写 30 个这样就非常的麻烦
解决方案实现:
<!--自定义视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyCon3 {
// /AAAAA_war_exploded/show
// /AAAAA_war_exploded/update
// /AAAAA_war_exploded/delete
//输入什么地址就往哪里跳转
@RequestMapping("/{path}")
public String demo(@PathVariable String path) {
return path;
}
/**
* demo2--@RequestMapping("/demo2")等于 demo2
* <p>
* 如果没有 @RequestMapping("/{path}")
* <p>
* 我们发现,在返回路径的时候还是会走自定义视图解析器,如果我们不希望走自定义视图解析器
* <p>
* 就需要书写具体的跳转代码 :forward:/index.jsp redirect:/index.jsp
*/
@RequestMapping("/demo2")
public String demo2() {
System.out.println("进入demo2");
return "forward:/index.jsp";
}
}
运行结果:
DEMO2:
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: