• struts路径问题


    问题:使用struts2,如何处理action的路径?还有,在action转到的jsp中,如何写js,css,图

    片的路径?(例如访问 http://localhost/myproject/my/listUser.action后转到http://localhost/project/user /listUser.jsp,这时候浏览器还是停留在http://localhost/project/my/addUser.action。这时候jsp原来的图片定位(因为我们在listUser.jsp中引用的图片等是相对于该jsp路径的,但当前浏览器确是http://localhost/project/my/addUser.action,所以就都出错了)

    而解决jsp的路径问题,我觉得以下方式就基本完美了:

    <base>为页面上所有相对 URL 规定基准 URL:

    第一步:在jsp的head中添加base标签和一段java

    <%

        String path = request.getContextPath();//对应就是myproject,即我的web工程名

        String basePath = request.getScheme()(协议http) + "://"

                + request.getServerName()(服务器所在ip) + ":" + request.getServerPort()(服务器所在端口)

                + path + "/";

    %>

    <base href="<%=basePath%>">(这样所有的href标签引用的文件就会自动补上basePath。例如我在1.jsp文件中写了上面的代码,然后我想引用<a href=”2.jsp”(2.jsp在http://localhost/myproject)下,那么我不用写前面的这些,只需要2.jsp就可以了,实际上变成http://localhost/myproject/2.jsp)

    这样就变成 绝对路径.

    也就是说,需要写从项目根目录算起的绝对路径,但去掉开头的"/"

    第二步:所有action跳转,form提交写的action路径,都不要带目录位置。只写action名,例如addUser.action。

    这样,浏览器就一直停留在http://localhost/project/XXXXX.action  这一层。

    第三步:配置文件的action的url写成/XXXX,比如上面的就写成<action url=”/addUser”>

    另外,我发现另外一个更自然的办法,可以使得原来用相对路径定位的jsp继续可用,不必逐个修改链接:

    第一步:在jsp的head中同样添加base,但把getContextPath改为getRequestURL

    <%

        StringBuffer basePath = request.getRequestURL()

    %>

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

    注意是request.getRequestURL,这样获取出来的正好就是jsp的绝对路径。

    比如我的struct配置文件中

    <action path=”/my/listUser”(写成相对于根目录的路径) type=”hello.HelloAction” name=”HelloForm” scope=”request” validate=”true”> 

    <forward name=”SayHello”path=” /user/listUser.jsp”(这个路径写成相对于工程根目录,如myproject/user/listUser.jsp写成/user/listUser.jsp>

    例如浏览器地址栏是:http://localhost:8084/myproject/my/listUser.action

    base是<base href="http://localhost:8084/myproject/user/listUser.jsp">

    如果我们在listUser.jsp中引用一个图片1.jpg,该图片在user目录中。那么我们可以这样写<img src=../1.jpg>路径就变成http://localhost:8084/myproject/user/1.jpg

    第二步:jsp页面内,全部使用相对路径访问。

    第三步,action的路径写成../或者其他相对路径都可以,但要和配置文件的路径吻合。

    这个方法,可以兼容使用action和不使用action两种情况

    不要做一个似懂非懂的人,做一个脚踏实地的程序员
  • 相关阅读:
    Centos 7 安装jdk 配置环境变量
    【转载】C#检测客户端输入的内容是否含有危险字符串
    【转载】C#将图片以二进制流的方式存入数据库
    【转载】为何你的网站一直不被百度、搜狗、谷歌等搜索引擎收录
    【转载】目前国内主流的云服务器厂商有哪些
    【转载】阿里云服务器为网站选配Https证书
    【转载】网站遭遇DDoS攻击怎么办
    使用的阿里云服务器被黑客入侵怎么办
    HTTP状态码以及其含义大全
    Url的Base64编码以及解码
  • 原文地址:https://www.cnblogs.com/xuexiaohei/p/4448849.html
Copyright © 2020-2023  润新知