struts2页面跳转及请求时的页面映射

1.页面映射:

struts2 约定要求,将JSP页面 放入WEB-INF下 !!!!  

因为webRootwebapp)下的页面是公开路径,可以直接访问,struts拦截器只能拦截WEB-INF下的页面action请求。

过滤器与拦截器区别:

过滤器可以拦截任何web资源,而拦截器只能拦截action请求。

所以我们将页面放在WEB-INF目录下的任何自定义文件夹下,但这样的问题是,如果我有很多页面,是不是每个页面都要写一个对应action呢,这样做显然是不行的,所以我们需要引入这样一个配置:

<package name="basicstruts2" extends="struts-default">

<action name="index">

<result>/index.jsp</result>

</action>

<!--需要进行权限控制的页面访问 -->

<action name="page_*_*">

<result>/WEB-INF/pages/{1}/{2}.jsp</result>

</action>

</package>

前面这个action标签代表的是访问index.action访问的是index.jsp页面,后面这个action才是我们需要关注的配置,这个配置代表当我访问page_*_*.action时候对应的是访问/WEB-INF/pages/*/*.jsp。(*)可以是任意字符。


2.页面跳转

一般我们在开发的时候都会将页面放到WEB-INF下的自定义文件夹下,但网站主页很多时候是通过放在WEB-INF目录下的index.jsp做跳转到指定目录下的指定页面。例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>跳转到主页</title>
</head>
<body>
<jsp:forward page="/page_common_index.action"></jsp:forward>
</body>
</html>

在index.jsp通过转发请求到page/common目录下的index.jsp页面。但是这样做,有一个问题,默认情况下,struts2只在请求方式下拦截,而像这种页面转发是不过滤的,这样的话我们上面配置的页面映射在这里就不会起作用,导致出现404,找不到页面,所以我们需要在web.xml的struts2的过滤器配置中加上转发的过滤:

好了,ok了。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值