如果写重定向或者超链接的路径最好选择绝对路径,还有一个优点就是在你导入css.jsp的时候,路径的修改可以直接写这个资源路径,不用再判断上一级是谁,非常好用。
绝对路径:
在jsp中,地址栏/表示localhost:8080/项目名 + 后面写(自己写项目下的路径)
在servlet中, /表示localhost:8080 + 需要自己加项目名(/项目名/文件路径),不过servlet中的相对路径也挺好用,全凭个人喜好。
不过在jsp页面使用绝对路径之前需要先声明一段代码,如下:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>"> //如果不使用绝对路径,请不要写上这句话,否则相对路径会被打乱。
<base href="<%=basePath%>"> //这个代码是放在jsp中的<head></head>中的,不要放错位置。
相对路径:这个login.jsp和thefirst.jsp在同一个文件目录下,可以直接写
绝对路径:如果声明好之后,可以直接写在项目路径下的资源路径,这样的话,这个login.jsp,无论在哪一个超链接中,都会被找到(只要项目路径下的资源路径正确)。
<a href="login.jsp"><button id="buttonlogin">登录/注册</button></a>
<a href="html/login.jsp"><button id="buttonlogin">登录/注册</button></a>
看例子:
在项目路径下WebRoot目录下的html中,有login.jsp和thefirst.jsp,两个文件,从thefirst.jsp中访问login.jsp,需要编写的超链接是
相对路径:
<a href="login.jsp"><button id="buttonlogin">登录/注册</button></a>
绝对路径:
<a href="html/login.jsp"><button id="buttonlogin">登录/注册</button></a>
移动jsp文件后:
那么使用相对路径就是…/d/login.jsp
<a href="../d/login.jsp"><button id="buttonlogin">登录/注册</button></a>
而绝对路径只需要修改一下login,jsp资源路径就可以直接访问,比起上面的相对路径思考起来更简单,只需要考虑你要跳转的网页在哪一个路径下,然后写上就行,不需要思考你要跳转的网页在哪一个路径下,还有这个网页和哪一个网页所对应的路径关系,一个两个还行,如果多了的话就会让你混乱。
<a href="d/login.jsp"><button id="buttonlogin">登录/注册</button></a>
实测,非常的好用。