jsp/html页面中的路径
2017-03-13 14:30
183 查看
Html/Jsp页面中的路径,是供浏览器使用的。“/”代表的是服务器根目录,一个服务器会有多个web应用,所以请求资源时需要加应用名才能正确访问。
页面中使用的相对路径,也是由浏览器根据当前页面的url或<base>元素解析成完整请求路径的。
页面中使用路径的常用方式如下:
1.当前应用的根路径+静态资源的相对路径:
浏览器解析时会将”/”解析为服务器。如果不加当前应用的根路径,有可能会错误地把static当作应用名,取决于部署时path的设置。所以最好统一添加应用的根路径。
获取当前应用的根路径:
EL表达式:${pageContext.request.contextPath};
JSP:<% =request.getContextPath() %>
若工程文件就是在根目录下,通过request.getContextPath()返回的字符串为空。
2.当前应用的绝对路径+静态资源的相对路径:
缺点:每个请求前都要加${pageScope.basePath}
3.利用<base>标签
默认情况下,页面中相对路径的请求都是相对于当前页面的url发出的;如果当前页面存在<base>标签,则请求是相对<base>中设定的值。
缺点: 对于被包含的文件依然无效。
Servlet内所有的路径都要用绝对路径,即以”/”开头,代表当前的web应用。
req.getRequestDispatcher("/pages/login.jsp").forward(req, resp);转发路径中”/”代表当前应用。
页面中使用的相对路径,也是由浏览器根据当前页面的url或<base>元素解析成完整请求路径的。
页面中使用路径的常用方式如下:
1.当前应用的根路径+静态资源的相对路径:
<link type="stylesheet" href="${pageContext.request.contextPath}/satic/ css/common.css"> <form action="${pageContext.request.contextPath}/servlet/login" method="post">
浏览器解析时会将”/”解析为服务器。如果不加当前应用的根路径,有可能会错误地把static当作应用名,取决于部署时path的设置。所以最好统一添加应用的根路径。
获取当前应用的根路径:
EL表达式:${pageContext.request.contextPath};
JSP:<% =request.getContextPath() %>
若工程文件就是在根目录下,通过request.getContextPath()返回的字符串为空。
2.当前应用的绝对路径+静态资源的相对路径:
<%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=gbk" isELIgnored="false"%> <% String appContext= request.getContextPath();// 获取当前应用的根路径构建当前应用的绝对路径(/appName) String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + appContext ; // 将basePath存入pageContext中,将来用EL表达式读取 pageContext.setAttribute("basePath",basePath); %> <html> <body> <a href="${pageScope.basePath}/jsp/login.jsp"> </body> </html>
缺点:每个请求前都要加${pageScope.basePath}
3.利用<base>标签
默认情况下,页面中相对路径的请求都是相对于当前页面的url发出的;如果当前页面存在<base>标签,则请求是相对<base>中设定的值。
<%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=gbk" isELIgnored="false"%> <% String appContext= request.getContextPath();// 获得当前应用的根路径 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + appContext ; %> <html> <head> <base href="<%=basePath%>"> <!--设定base标签--> </head> <body> <a href="/jsp/login.jsp">Login</a> </body> </html>
缺点: 对于被包含的文件依然无效。
Servlet内所有的路径都要用绝对路径,即以”/”开头,代表当前的web应用。
req.getRequestDispatcher("/pages/login.jsp").forward(req, resp);转发路径中”/”代表当前应用。
相关文章推荐
- 项目访问index.html,默认跳转到login.jsp页面,隐藏地址栏每次显示请求路径和参数,定个在域名不变
- 引用外部.css或.js文件的路径问题--jsp或html页面引用
- 引用外部.css或.js文件的路径问题--jsp或html页面或是在web项目中的引用
- struts应用中JSP页面链接CSS样式表的路径问题
- apache ,html,jsp 避免页面中的部分资源被cache
- 转:Html+Asp+Php+Jsp:4种语言禁止浏览器缓存页面的方法+真正防止html缓存的手技术
- jsp里动态生成XML,并绑定到页面表格 (转自http://www.cnblogs.com/huazi4995/articles/587059.html)
- JSP页面中如何使用相对路径访问文件
- jsp servlet 中的页面路径问题
- jsp,html 清除页面缓存
- 用dwr输出的html源代码为什么在jsp页面中输出的还是html源代码
- JSP生成HTML页面,以提高访问效率
- JSP页面显示表格[http://fan.yculblog.com/post-108193.html]
- 如何在html、php、jsp、asp等页面中添加分析代码(跟踪代码)
- JSP页面用户目录文件路径合成
- JSP生成静态HTML页面的实践方法和设计思路
- jsp与html的路径问题
- JSP页面和HTML页面的区别和功能
- JSP页面自动生成html页面或任何格式页面
- JSP页面超链接的绝对路径和相对路径问题