在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案
在开发网站时候我们会遇到下面问题?
- - 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径?
- - 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径
- - 如果写绝对路径吧,你在本地写的时候肯定的是localhost:8080/xxx/xxx,项目上线的时候你又要把网页中的这个替换为你的上线域名,体验很糟糕
我们怎么解决这样的问题呢?
我们可以在网页中使用Request对象来获取网页中的各种地址信息。
- request.getServletPath(); 获取当前网页的地址
- request.getScheme(); 获取协议
- request.getServerName(); 获取域名
- request.getServerPort(); 获取端口号
- request.getContextPath(); 获取项目名称
下面我们来拼接成一个通用的获取项目地址的变量,让在jsp网页中随处都可以使用它啦
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
获取到的就是下面这样的地址
basePath:http://localhost:8080/WebDemo/
我们可以在jsp页面写入下面代码
<% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/"; %>
在引用Js和css或者需要拼接路径的时候我们可以直接使用basePath这个变量,例如
<link rel="stylesheet" href="<%=basePath %>resources/assets/css/font-xxx.min.css" />
<link rel="stylesheet" href="<%=basePath %>resources/assets/css/xxx.min.css" />
<link rel="stylesheet" href="<%=basePath %>resources/assets/css/xxx.min.css" />
当然我们每一次都需要在jsp文件编写下面的代码吗?那可真的是太复杂了,我们可以直接在web.xml中稍微配置一下,就可以啦,下面看看怎么来操作。
- 创建一个commons.jsp文件,文件写入下面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %>
- 在web.xml进行配置,使所有的jsp网页都能自动的引用commons.jsp这个网页(ps:引入这个网页当然就能使用basePath这个变量喽~~直接就能使用啦)
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/commons.jsp</include-prelude>
</jsp-property-group>
</jsp-config>
注意:<include-prelude>/commons.jsp</include-prelude>标签中的jsp文件改成你的commons.jsp文件的存放地址
不适用这种方案的情况
- 前后端分离的项目
- Html网页中
- 。。。
在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案的更多相关文章
- 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!
擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...
- 再eclipse的javaweb项目中添加JQuery文件时jquery-2.1.4.min.js报错
解决方法: eclipse导入jquery包后报错,下面有个不错的解决方法,需要的朋友可以参考下 eclipse导入jquery包后报错,处理步骤如下: 1.打开项目.project文件,去掉如下内容 ...
- Django 项目中添加静态文件夹
在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件 在 index.html 文件中添加 <!DOCTYPE html> <html lang=" ...
- django项目部署在Apache服务器中,静态文件路径的注意点
django Apache部署静态文件的路径注意点 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEBUG = True 时, ...
- log4j在javaWeb项目中的使用
在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式
近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 / 所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径 由于使用绝对路径是绝对不会出 ...
- JavaWeb项目中web.xml有关servlet的基本配置
JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...
- 【jsp】怎么在jsp文件中引入静态文件(.js .css)
如果在jsp文件中引入静态文件比如(.js或.css等等),可以在使用 /项目名称/路径 的方式,但是这种方式如果在修改了项目了名称后就显得比较麻烦了.除了之外还许多方式,比如相对路径等等.一般情况下 ...
- Django中对静态文件的支持(转)
英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...
随机推荐
- django之整体复习
1. 配置文件: media: avatar = models.FileField(upload_to='avatar') sessiongs MEDIA_ROOT=os.path.join(BASE ...
- JVM虚拟机(五):JDK8内存模型—消失的PermGen
一.JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1.虚拟机栈: 每个线程有一个私有的栈,随着线程的创建而创建.栈里面存着的是一种叫“ ...
- XVAG音频文件格式提取
索尼的一种游戏音频格式,通过vgmstream工具可以提取 工具已经下载好:(包含dll包) http://files.cnblogs.com/files/hont/vgmstream-r1040-t ...
- HotSpot模板解释器目标代码生成过程源码分析
虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升.JVM的Hotspot ...
- nohu和&
在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup, 这就是渊源. 随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...
- ibatis中integer类型
假如java代码中设置的返回类型是integer类型,ibatis实际上返回的是BigDecimal,也就是说 ibatis转换成integer默认是bigdecimal类型的
- C#使用SendMessage传递字符串
来源:http://www.cnblogs.com/sizzle/archive/2007/08/29/874796.html 正文: 在C#中使用SendMessage,原本以为很简单的事,却处处碰 ...
- 串口编程-termios编程
linux使用terminfo数据库来描述终端能力以及调用对应功能的方法.POSIX定义了完成终端I/O的标准方法:termios函数族 #include <termios.h>#incl ...
- socket udp广播和多播的简单实现
UDP广播与多播 作者:legend QQ:1327706646 使用UDP协议进行信息的传输之前不需要建议连接.换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信 ...
- 【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
http://www.lydsy.com/JudgeOnline/problem.php?id=1010 蛋疼用latex写了份题解.. 2015.03.07 upd:很多东西可能有问题,最好看下边提 ...