Struts2基础之三:URL路径的跳转 和basePath



一:URL经过Struts找到jsp的流程

上一个示例的URL是http://127.0.0.1:8080/Struts2Project01/myAction01,以它为例:


1. “127.0.0.1:8080/” 会找到Tomcat下web应用的根目录

2. “Struts2Project01” 是tomcat的项目,既然是tomcat的项目 就会先检查其中的web.xml文件

3. web.xml中存在我们设置的过滤器,所以会首先执行过滤器(在配置Servlet之前),这个Struts2的<filter>会去找项目中的struts.xml

4.struts.xml中此<package>的namespace=“/” ,所以“Struts2Project01/XXXXX.action ”的XXXXX,归这个包所解析,

5.“myAction01” 在这个<package>中找对应的 <action>名称,我们正好配置过了这个名称要去执行class中的action,

(这儿如果在包里找不到,还会去找namespace=“”,也就是所有命名空间都可调用的action。再找不到就只能告诉taomcat找不到所需了)

6.我们自定义包中的action执行后,返回“success”

7.<result>校验得到成功信息,所以跳转到指定的jsp,显示内容


web.xml文件如下:(过滤器)

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

struts.xml如下:(namespace、action、result)

	<package name="ma1" namespace="/" extends="struts-default">
        <action name="myAction01" class="com.rt.struts2.actionDemo.MyAction_01"><!-- 包.类名称 -->
            <result >
                /helloStruts2.jsp
            </result>
        </action>
    </package>





二:跳转时的路径

添加一个获得basePath的scriptlet

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
还可以在<head>标签中加一个<base>标签

  <head> 
  	<base href="<%=basePath%>"/>

  </head>



这样跳转的时候就可以根据绝对路径跳转,而不是当前页的相对地址

	<a href="forwardPath/forwarded.jsp"> head中带“base:标签的跳转 (路径前自动补齐base)</a><br>
    <a href="<%=basePath%>forwardPath/forwarded.jsp"> 使用scriptlet变量"basePath"的跳转 </a>
    










  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值