jsp页面中有三句java代码,使用和不使用的区别很大,使用过后会有什么不同尼?请看下面详细分析。
这是我写的一个jsp页面中一段代码,分析其中三句java语言。
一、<% String path = request.getContextPath();%>jsp里面用到意思是:
1. request.getContextPath() 获得当前的项目根目录路径,假设项目名为library,那么获得的地址就是http://localhost:8080/library/;3.将当前项目的根目录复制给变量path。
request.getContextPath()是在开发web项目时,经常用到的方法,其作用是获取当前系统路径。
当使用Tomcat作为web服务器时,项目一般部署在tomcat下的webapps的目录下,具体来说有两种部署路径:
一是将web项目中的webRoot下的文件直接拷贝到webapps/ROOT下,删除ROOT下的原文件。
二是在tomcat下的webapps中创建以项目名称命名的文件夹(或者也可以自行命名),并将webRoot下的文件直接拷贝到该文件夹下。
方法一中request.getContextPath()的返回值为空,即“”,中间无空格,区分null;
方法二中其返回值为:/[创建的文件夹的名称]。
二、<% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %>在里面的意思是:
将“项目路径basePath”放入pageContext中
另外,对于SmartUpload.downloadfile()方法,其文件名参数中的路径部分是一个相对路径,并不包含由request.getContextPath()函数读取的部分,而仅仅包含该路径下的路径。
getContextPath效果:
path IS: /jspSmartUpLoad
basePath IS:http://localhost:8080/jspSmartUpLoad/
request.getScheme() IS:http
request.getServerName() IS:localhost
request.getServerPort() IS:8080
三、<%=basePath%>
base标记是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
base 元素可规定页面中所有链接的基准 URL
我们可以使用 <base>标签中的href属性来设置,所有的“相对基准 URL”。如下代码段:
<html><head>
<base href="<%=basePath%>">
</head>
<a href="jsp/login.jsp">login</a>
</html>
base只能应用于标记<head></head>之间,后面就可以直接使用相对路径(即相对于base标签),如<a href="jsp/login.jsp">login</a>。
这是设置基础路径的basepath为变量
简单的静态网页的话你设置比如:<base href="http://www.baidu.com">,那你下面的href属性就会以你上面设的为基准,如:<a href="http://www.baidu.com/xxx.htm"></a>你现在就只需要写<a href="xxx.htm"></a>
当我们执行上述JSP后,所返回的html代码如下:
<html><head>
<base href="http://localhost:8080/library/">
</head>
//从这以后开始,设置了<base>后,相对路径就是相对于base中的路径,而不再是浏览器地址的请求路径。
<a href="jsp/login.jsp">login</a>
</html>
我们可以看到JSP返回的html代码中,包含了<base href="http:/localhost:8080/library/">的内容。也就是说在本html代码中,遇到的所有“相对链接”都是相对于base的路径。
如下图在开发工具中很好的展示了路径的变化(我设置的端口号为80,故没有显示端口号):