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 ...
随机推荐
- Web端 页面跳转 页面传值
要把 Default.aspx 页面 TextBox1中的值 传值到 Default.aspx Label上去 C#服务端跳转页面 Response 响应请求对象 Redi ...
- userBean之设置属性
package com.java.model; public class Student { private String name;private int age; public String ge ...
- 【Orange Pi Lite2】 ——1《如何开始使用开源硬件》
[Orange Pi Lite2] --1<如何开始使用开源硬件> 本文只在博客园发布 在开始前你需要准备的材料与软件 用户手册_Orange Pi Lite2 OrangePi_Lite ...
- 【Apache】HTTPD 2.4.37 + OpenSSL 1.1.1 企业级安全配置(含TLS修复)
我为什么要写这一篇稿子? 为了避免更多的运维.开发者没能实现企业的信息安全,我将共享出我个人的HTTPD的安全修复(2.2和2.4差不太多就看2.4就好) 起因:我为某M工作,但因某M和testin合 ...
- java基础—数组
一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的元素可以是任何数据类型,包括基 ...
- drawRect - 谈画图功能的内存优化
作者介绍 作者:毕洪博 ( @毕洪博 ),iOS 开发者,pop Art 追随者.现在正在鼓捣 AVFoundation,博客 bihongbo.com, 欢迎大家找我讨论技术. 作者已将本文在微信公 ...
- VueX源码分析(1)
VueX源码分析(1) 文件架构如下 /module /plugins helpers.js index.esm.js index.js store.js util.js util.js 先从最简单的 ...
- poj1265 Area
题目描述: vjudge POJ 由于题目乱码概括一下题意: 给出一个路径,求围成多边形中内部点数.边上点数(包括顶点)以及面积. 题解: 边上点数=$\sum gcd(dx,dy)$ $Pick$定 ...
- 02Vs2013常用路径配置
1.设置头文件路径 项目 -> xxx属性页 -> 配置属性 -> C/C++ -> 常规 -> 附加包含目录. 2.包含 x.lib 库路径 项目 -> xxx属 ...
- C++:100阶乘数组输出
#include <iostream> using namespace std; int main(){ int i =1; int a[2048]={0}; while(i !=101) ...