zoukankan      html  css  js  c++  java
  • 重定向,请求转发和jsp等中的路径问题

    jsp中路径用相对路径的话jsp文件不能随便挪动,例如在webContent中直接创建的jsp文件a.jsp挪动到webContent下创建的文件夹a中,那么在a.jsp文件中用<a/>超链接访问webContent中的jsp文件b.jsp就会出现问题,除非删除a.jsp文件中开始的path和basePath的java代码块。

        所以说jsp中路径用相对路径的话会出现以下问题:

    1、资源的位置不能随意更改;2、需要使用../进行文件夹的跳出,使用比较麻烦;

        推荐使用绝对路径:因为如果是a.jsp跳转到b.jsp文件,不管a.jsp变动多少,只要b.jsp的文件路径不发生变动,绝对路径就不会出错,

    /项目名称/你的servlet或者要访问的jsp

    这里的第一个/是代表服务器根目录,就是相当于localhost:8080

    当然如果你的jsp文件是嵌套好几个文件夹的话,自己酌情添加/直到最后一个的是你需要的访问,但是当是需要的资源是java文件并且在包下的时候,因为一般都是直接写简称(就是webservlet中的)。

     也有些是这样写的(/虚拟项目名/资源名)。总之理解就行。

    注意:WebContent和src都算是根目录一类的,我也说不太清楚,但是希望理解我的意思。

        jsp中有自带的全局路径声明:在jsp的一开始写有

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

    head中写有<base href = "<%=basePath%>"

    这几句相当于是绝对路径,就是已经找到项目了,在路径中只要写资源的路径名称就行了。

    不过还是推荐使用自己会写绝对路径,因为在myeclipse中会自动生成那几句绝对路径代码,但是eclipse中不自动生成。

    Servlet中的重定向中的绝对路径和请求转发中的绝对路径不太一样,

    请求转发中的绝对路径是“/”表示”localhost:8080/projectname(项目名称)/“

    而重定向中的绝对路径/表示localhost:8080

    所以请在项目中注意些。

  • 相关阅读:
    C#类型转换
    C#面向对象之多态
    C#面向对象之继承
    C#各种字段类型对比
    C#关键字:static
    C#面向对象之封装
    C#关键字:访问修饰符
    C#类型成员:构造函数
    C#类型成员:方法
    C#类类型
  • 原文地址:https://www.cnblogs.com/toomucherror/p/10502348.html
Copyright © 2011-2022 走看看