道听途说Struts2之4:Path路径问题

来源:互联网 发布:react 数据undefined 编辑:程序博客网 时间:2024/05/01 20:04

         这几天写程序经常遇到路径问题,在使用servlet的时候,使用的映射路径,然后在servlet中跳转的时候经常使用..返回上一目录很麻烦。在Struts中同样也会有这种问题,在我们使用Action的时候经常会遇到。比如有如下的Struts.xml文件:

   

      <?xml version="1.0" ncoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <constant name="struts.devMode" value="true" />    <package name="path" extends="struts-default" namespace="/path">        <action name="path" >            <result >/path.jsp</result>        </action>    </package></struts>

         这样我们在地址栏里输入:http://localhost/项目名/path/path,这样就会返回/path.jsp文件给客户端。地址栏会变成:http://localhost/项目名/path/path.jsp。如果这个jsp文件中有一个连接:<a href="index.jsp">index.jsp</a>(index.jsp在项目根目录下,并且和path.jsp同目录),这样我们一点这个连接的时候就会报告错误。而地址栏会变成http://localhost/项目名/path/index.jsp,服务器找不到这样目录结构的文件。但是在正常情况下,这样是成功的。这就是跳转问题,链接默认的是在相同目录中去寻找,这里的相同目录指的是,地址栏中的目录结构。但是Struts的跳转一多就会搞不清楚了。所以这里使用绝对路径。

         但是使用绝对路径不能像“/index.jsp”这样写,这样会跳转到网站的根目录,而不是项目的根目录。这里介绍一下myeclipse中的默认设置方法。在jsp的开头加上:

<%

String path = request.getContextPath();

String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

在后面需要写路径的时候就可以使用“<%=basePath %>index.jsp”了,这样就方便了许多。

还可以在网页中使用base标签:<base href="<%=basePath%>" />

这样在后面需要写路径的时候就可以使用“index.jsp”了,这样就更加方便。

上面代码中的方法意思,读者自己去查文档,或者百度吧。

希望写到这里说明白了,如果哪里错了,还请指出

 

原创粉丝点击