在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案
2018-08-04 12:16
387 查看
在开发网站时候我们会遇到下面问题?
- - 在引用网页中引用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网页中 - 。。。
相关文章推荐
- gcc指定库路径,头文件路径以及实现静态动态链接 .
- SEO_ASP.net SEO优化(包含URL地址重写\viewState移动和压缩至服务器\SEO信息XML生成_根据URL地址重写文件)\web网站内容压缩 源码公开.本人授权可使用于商业项目。
- 旧项目适配 iOS9 时 .dylib 系统库文件的链接报错的问题处理
- javaweb中静态文件的常用处理方法汇总
- 网站项目:让一般处理文件.ashx的代码有折叠功能(#region)
- 404.17 - 动态内容通过通配符 MIME 映射映射到静态文件处理程序
- IIS配置asp.net网站出现错误:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- 自己的web服务器项目-静态请求和动态请求处理(二)
- JavaWeb项目实现文件上传动态显示进度实例
- javaweb中静态文件的常用处理方法汇总
- JavaWeb项目实现文件上传动态显示进度
- 用VS2005打开一个.NET2.0方案,里面有几个工程和一个网站,提示网站的项目.csproj文件无法打开:“此安装不支持该项目类型”,的解决办法。
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
- javaweb动态网站-----如何在javaweb项目中使用bootstrap框架
- (android文件下载)下载链接中包含特殊字符--空格,中文等,导致无法识别处理方案
- 【C++】vs2010一个项目怎么链接编好的静态库文件
- 加载动态链接库文件.so 失败出错—— No such file or directory (没有文件或目录)问题处理
- JavaWeb项目中springmvc和tomcat对静态文件的处理
- Django项目中静态文件的处理方法
- IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。