在开发网站时候我们会遇到下面问题?

  • - 在引用网页中引用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中稍微配置一下,就可以啦,下面看看怎么来操作。

  1. 创建一个commons.jsp文件,文件写入下面代码
 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %>
  1. 在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项目中处理静态文件或动态链接拼接网站地址的最优处理方案的更多相关文章

  1. 擦他丫的,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了!

    擦 ,今天在Django项目中引用静态文件jQuery.js 就是引入报错,终于找到原因了! 问题在于我使用的谷歌浏览器,默认使用了缓存,导致每次访问同一个url时,都返回的是缓存里面的东西.通过谷歌 ...

  2. 再eclipse的javaweb项目中添加JQuery文件时jquery-2.1.4.min.js报错

    解决方法: eclipse导入jquery包后报错,下面有个不错的解决方法,需要的朋友可以参考下 eclipse导入jquery包后报错,处理步骤如下: 1.打开项目.project文件,去掉如下内容 ...

  3. Django 项目中添加静态文件夹

    在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件 在 index.html 文件中添加 <!DOCTYPE html> <html lang=" ...

  4. django项目部署在Apache服务器中,静态文件路径的注意点

    django Apache部署静态文件的路径注意点 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEBUG = True 时, ...

  5. log4j在javaWeb项目中的使用

    在前边的文章中对log4j的配置文件进行了说明,今天介绍如何在普通的javaWeb项目中使用log4j. 在日常的开发过程中,日志使用的很频繁,我们可以利用日志来跟踪程序的错误,程序运行时的输出参数等 ...

  6. JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式

    近期在做JavaWeb项目,总是出现各种的路径错误,并且发现不同情况下 /  所代表的含义不同,导致在调试路径上浪费了大量时间. 在JavaWeb项目中尽量使用绝对路径  由于使用绝对路径是绝对不会出 ...

  7. JavaWeb项目中web.xml有关servlet的基本配置

    JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...

  8. 【jsp】怎么在jsp文件中引入静态文件(.js .css)

    如果在jsp文件中引入静态文件比如(.js或.css等等),可以在使用 /项目名称/路径 的方式,但是这种方式如果在修改了项目了名称后就显得比较麻烦了.除了之外还许多方式,比如相对路径等等.一般情况下 ...

  9. Django中对静态文件的支持(转)

    英文原文:[http://agiliq.com/blog/2013/03/serving-static-files-in-django/] 译文:[http://segmentfault.com/a/ ...

随机推荐

  1. Mac环境配置好ant后提示Permission denied

    1.ant环境变量配置如下 打开终端,输入vi ~/.bash_profile export ANT_HOME=/Users/administrator/Documents/software/apac ...

  2. android 批量上传图片

    额外还需要NetUtil和服务器端UpLoadPicture package com.example.girdviewtest; import java.util.ArrayList;import j ...

  3. LeetCode 70 Climbing Stairs(爬楼梯)(动态规划)(*)

    翻译 你正在爬一个楼梯. 它须要n步才干究竟顶部. 每次你能够爬1步或者2两步. 那么你有多少种不同的方法爬到顶部呢? 原文 You are climbing a stair case. It tak ...

  4. scala中计算的的一个小问题,超出Int.maxValue时不会报错

    如果小于Int.max时他不会报错 def sumcount(str:String): Int ={ val ints = for(c <- str)yield { println(c.asIn ...

  5. arm + fpga 核心板

  6. Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL

    Merry X'mas! Spider Studio本年度最后一次重大更新发生在圣诞节, 又是一次美好的巧合 :) 本次更新主要包含两个重要功能: 1. 引入第三方程序集 在"设置" ...

  7. Linux系统查看公网IP地址

    curl members.3322.org/dyndns/getip

  8. 在CentOS中编译FFmpeg for Android静态库(含fdk aac,x264)

    本文可以编译出集成了x264和fdk_aac的库,而且支持neon 下载源码: https://github.com/mstorsjo/fdk-aac http://sourceforge.net/p ...

  9. 001Maven_基本介绍及安装

    Maven入门教程 介绍.环境配置 Maven介绍 Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项 ...

  10. MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。

    MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得. 之前的项目比较简单,多是用JSP .Servlet + JDBC 直接搞定,在项目中尝试用 Strut ...