首页
登录 | 注册

相对路径与绝对路径个人理解

绝对路径分为本地绝对路径和网路绝对路径两种

本地绝对路径:即物理路径,某一个具体的文件所在的磁盘的路径

网路绝对路径:即对某一资源进行访问时的IP地址

相对路径也分为两种包括以'/'开头的和不以'/'开头的

以/开头的又分为前台相对路径和和后台相对路径

前台相对路径:由浏览器进行解析执行的代码当中所包含的路径。eg:form表单对象当中所包含的Action路径,超链接路径等

后台相对路径:由服务器对象来进行解析执行的代码当中所包含的路径。eg:java代码当中的路径,xml文当中的路径,以及jsp页面当中java代码当中所包含的以/开头的路

径都属于后台相对路径。

在一个web应用当中前后台相对路径之间的差别是:

前台相对路径的相对参考路径是web服务器的根路径,即http://localhost:8080/或http://127.0.0.1:8080/

后台相对路径的相对参考路径则是web服务器的应用路径,即web服务器根路径当中的具体的web项目,http://localhost::8080/project/

不以/开头的相对路径无论是在前头还是在后台,其参考路径为当前资源访问的路径,而非当前资源所在的路径。

具体例子如下:

login.jsp:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>表单登录界面</title>
</head>
<body>
<!--form action="/test/login.action" 有/之后为前台相对路径,该相对路径等价于http:localhost:8080/test/login.action
但是在http:127.0.0.1:8080/web服务器目录当中并没有一个名字为test的项目,当前项目名字为struts2Demo03所以将会在
表单提交之后出现404错误.要想解决404错误就要向服务器对象指明当期所访问的到底时web应用当中的那个项目所以Action改为
form action="Struts2Demo03/test/login.action" 即可正常的进行资源的访问操作-->
<!-- action="test/login.action" 为不带/的相对路径该路径的参照路径为为当前的login.jsp页面所要访问的路径(注意不是login.jsp页面所在的路径,以为在进行多次提交失败
时Action对象当中所要访问的路径是会发生变化的),即http:locathost:8080/Struts2Demo03所以当前的相对路径等价于
http://localhost:8080/Struts2Demo03/test/login.action  该路径指明了在web应用项目当中的具体的哪一个项目,所以不会出现上述404错误
action="${pageContext.request.contextPath }/test/login.action" pageContext.request.contextPath为获取当前页面对象所在的目录路径,即等价于http://localhost:8080/Struts2Demo03/-->
<form action="test/login.action" method="post">
<!--使用当前方式在表单提交失败时,访问的路径每次都是会发生变化的-->
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age">
<input type="submit" value="登录">
</form>
</body>
</html>
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Struts2Demo03</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <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>
</web-app>
struts.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- namespace="/test" 为后台相对路径,参照路径为当前项目 该相对路径相当于 http://127.0.0.1:8080/Struts2Demo003/test-->
	<package name="loginPackage" namespace="/test" extends="struts-default">
		<action name="login" class="com.action.LoginAction">
			<result name="success">/welcome.jsp</result>
			<result name="fail">/login.jsp</result>
		</action>
	</package>
</struts>
package com.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String execute() throws Exception {
		System.out.println("name="+name);
		System.out.println("age="+age);
		return "fail";
	}
}
welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功界面</title>
</head>
<body>
<h2>使用EL表单式来进行输出操作</h2>
	name=${name}<br>
	age=${age}
</body>
</html>




2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.009 s.
京ICP备10005923号