大家都知道,在WEB项目中的webapp/WEB-INF目录下是一个访问的私密目录,当我们项目中有些东西不想被用户在浏览器通过链接浏览时,便可以放进WEB-INF目录下。以至于,当我们将jsp页面放入该目录下时会发现,页面无法通过链接跳转访问。
想要在页面链接访问WEN-INF下的页面,有两种方式:
1.请求重定向
如:
<jsp:forward page="${pageContext.request.contextPath}/WEB-INF/views/jsp/index.jsp"></jsp:forward>
2.使用内部资源视图解析器
我们访问页面时,不可能一直使用请求重定向,大多数还是使用请求转发。所以,我们可以定义一个工具控制器类,让我们想要访问的WEB-INF下的页面走内部资源视图解析器
第一步:定义一个工具控制器类
@Controller
@RequestMapping("/page")
public class pageController {
/**
* @Title: toPage
* @Description: 二级页面跳转,例如 WEB-INF/user/login.jsp
*/
@RequestMapping(value = "{pageName1}/{pageName2}/{pageName3}", method = RequestMethod.GET)
public ModelAndView toPage(@PathVariable("pageName1") String pageName1, @PathVariable("pageName2") String pageName2,@PathVariable("pageName3") String pageName3) {
ModelAndView mv = new ModelAndView(pageName1+"/"+pageName2+"/"+pageName3);
return mv;
}
/**
* @Title: toPage
* @Description: 二级页面跳转,例如 WEB-INF/user/login.jsp
*/
@RequestMapping(value = "{pageName1}/{pageName2}", method = RequestMethod.GET)
public ModelAndView toPage(@PathVariable("pageName1") String pageName1, @PathVariable("pageName2") String pageName2) {
ModelAndView mv = new ModelAndView(pageName1+"/"+pageName2);
return mv;
}
/**
* @Title: toPage
* @Description: 一级页面跳转,例如 WEB-INF/logout.jsp
*/
@RequestMapping(value = "{pageName1}", method = RequestMethod.GET)
public ModelAndView toPage(@PathVariable("pageName1") String pageName1) {
ModelAndView mv = new ModelAndView(pageName1);
return mv;
}
}
第二步:在配置文件中注册内部资源视图解析器,并设置前缀后缀
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="viewClass"-->
<!-- value="org.springframework.web.servlet.view.JstlView"/>-->
<property name="prefix" value="/WEB-INF/views/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
第三步:在页面中使用
[<a href="${pageContext.request.contextPath}/page/login">登录</a>
<a class="reg" href="${pageContext.request.contextPath}/page/register">免费注册</a>]
页面目录:

网友评论