springMVC 引入静态资源Js的方式
前两天项目出现了Js无法引入的情况,本篇博客先总结分析+批判自己犯的低级错,再说说几种访问静态资源的方式!
首先,由于在web.xml里面的servlet拦截匹配为<url-pattern>/</url-pattern>,所以,默认的时拦截所有请求。当项目访问引入的js文件,其实也是在服务器上,根据文件目录加载js文件。我那个为什么就没引进去呢?
首先,我把script文件夹放在了WEB-INF文件目录下,所以。。。。。。。也就呵 呵了
以下介绍两种引入静态资源,尤其是Js的方式,一种是本地引用,一种是从第三方引用!
一、本地引用
1.1,在spring的配置文件中添加如下一行:
<mvc:default-servlet-handler/>
在系统找不到Servlet时,并不会报404,而是会去静态资源里面找。
注意,需要是spring3.0.5以上版本。Ps,有的说是3.0.4版本以上,有的说是3.0.5以上,我也不知道,反正我们配置的依赖spring jar包是4打头的,哈哈哈哈哈哈哈。。。。。。
1.2,在web.xml中添加对静态资源的拦截
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
以后缀结尾,写到其他Servlet拦截前面,如果有filter的话,再往前。除了可以是js结尾,也可以是图片路径,css后缀之类的静态资源。
1.3,在springmvc的配置文件里使用<mvc:resources>
这个配置最不简单,但是好像项目里经常就是这样配置的:
<!-- 资源映射 -->
<mvc:resources location="/img/" mapping="/img/**" />
<mvc:resources location="/script" mapping="/script/**" />
上面的写法,就是要将每个静态资源的路径都加以映射,但其实静态资源也就那么几类,所以,还可以有如下写法:
<mvc:resources location="/" mapping="/**/*.js"/>
<mvc:resources location="/" mapping="/**/*.css"/>
不过,要是有图片资源,而图片资源的格式类型有很多的话,那还是用文件夹映射的方式比较靠谱。。。。。。
我目前就只写了个<mvc:default-servlet-handler /> ,感觉挺省事儿的!
二、从CDN引入
本地引入的,一般都是我们项目自己写的js文件之类的,那么每次开发时,其实都会用到其他很多Js库,比如说JQuery之类,或者什么AngularJs、Bootstrap之类的,有时候项目里会采用配置依赖,然后下载的方式。但,还有一种更为稳定的方式,那就是从CDN获取。
CDN:CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决
Internet网络拥挤的状况,提高用户访问网站的响应速度。
三、思考
我在想,以后项目要不要把前端和后端的代码分别打包部署。更甚至是把一个有特别要求的系统的静态Js、CSS之类的都特别部署之类的。我瞎想的,想想以后还是用CDN引入一些Js吧,快呀,能压缩精简的,人家都给压缩精简了。再有就是人家逛其他网页的时候,就下载了一些Js库什么的,就近获取,那得多快多省事。
我最近对写Js代码还挺有点小想法的,回头看看自己几年前,我只能说,我无比的庆幸,那时候的代码规范不咋地,以至于上面没有我的署名注释。。。。不然丢人要丢大了
springMVC 引入静态资源Js的方式的更多相关文章
- mavn项目(springMVC) 引入静态资源(js、css)等
在web.xml中配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern ...
- springmvc引入静态资源文件
如果web.xml中配置的DispatcherServlet请求映射为“/”, springmvc将捕获web容器所有的请求,当然也包括对静态资源的请求.springmvc会将他们当成一个普通请求处理 ...
- SpringMVC不能引入静态资源
SpringMVC不能引入静态资源 问题:部署项目后程序加载或用浏览器访问时出现类似的警告, 2011-01-19 10:52:51,646 WARN [org.springframework.web ...
- SpringMVC访问静态资源的三种方式(转)
本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...
- SpringMVC访问静态资源
SpringMVC访问静态资源 在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被Dis ...
- springMVC去掉静态资源的拦截
前端控制器的配置 <!-- springmvc的前端控制器 --> <servlet> <servlet-name>springMVC</servlet-na ...
- $ is not defined与SpringMVC访问静态资源
编写前台Jquery代码时,遇到谷歌浏览器报错:Uncaught ReferenceError: $ is not defined 意味着Jquery库并没有导入到页面.这是有几种情况需要考虑: 1. ...
- springmvc之静态资源访问不到 -记一次惨痛的经历
springmvc之静态资源访问不到 -记一次惨痛的经历 问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源. 控制台: $ 未定义 页面: GET http:/ ...
- 【SpringMVC】静态资源访问的问题
在项目中经常会用到一些静态的资源,而一般我们在配置SpringMVC时会让SpringMVC接管所有的请求(包括静态资源的访问), 那么我们怎样才能最简单的来配置静态资源的访问呢? 一,在web.xm ...
随机推荐
- Python3+Selenium3+webdriver学习笔记8(单选、复选框、弹窗处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记8(单选.复选框.弹窗处理)''' from selenium ...
- 清理winsxs文件夹(系统更新文件)的第三方工具
工具名称(第三方): Windows Update Clean Tool 下载地址: http://www.xiazaiba.com/html/24145.html http://dx5.xiazai ...
- destoon登录后跳转到指定网址
打开module\member\register.inc.php文件搜索:<input type="hidden" name="forward" valu ...
- vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')
vue props 传入对象Object,如果外层更改属性,默认里面是不更新,需要使用 this.$set(this.datese1, 'xsfaDateYear1', '')
- java基础—java读取properties文件
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...
- 类扩展Extension
延展(Extension):在本类里声明私有方法. 1:延展定义的方法是在implemetation中. 2:声明的方法是私有方法. 3:延展中声明的方法可以不实现. #import "Ho ...
- 深入理解ES6箭头函数的this以及各类this面试题总结
ES6中新增了箭头函数这种语法,箭头函数以其简洁性和方便获取this的特性,俘获了大批粉丝儿 它也可能是面试中的宠儿, 我们关键要搞清楚 箭头函数和普通函数中的this 一针见血式总结: 普通函数中的 ...
- 51nod——2502最多分成多少块
数据范围好小... 题目中没说要升序降序,不过样例解释里可以看出是要升序. #include <bits/stdc++.h> using namespace std; ],b[],visi ...
- Java AES加密解密工具 -- GUI 、在线传输文件
原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下: (1)将128位AES ...
- Voyager下的关系模型
关系:一个用户有几件商品,对应User表和Products表 在Products表下添加字段,user_id 打开products下的bread,点击Create Relationship Produ ...