前两天项目出现了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的方式的更多相关文章

  1. mavn项目(springMVC) 引入静态资源(js、css)等

    在web.xml中配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern ...

  2. springmvc引入静态资源文件

    如果web.xml中配置的DispatcherServlet请求映射为“/”, springmvc将捕获web容器所有的请求,当然也包括对静态资源的请求.springmvc会将他们当成一个普通请求处理 ...

  3. SpringMVC不能引入静态资源

    SpringMVC不能引入静态资源 问题:部署项目后程序加载或用浏览器访问时出现类似的警告, 2011-01-19 10:52:51,646 WARN [org.springframework.web ...

  4. SpringMVC访问静态资源的三种方式(转)

    本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...

  5. SpringMVC访问静态资源

    SpringMVC访问静态资源 在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被Dis ...

  6. springMVC去掉静态资源的拦截

    前端控制器的配置 <!-- springmvc的前端控制器 --> <servlet> <servlet-name>springMVC</servlet-na ...

  7. $ is not defined与SpringMVC访问静态资源

    编写前台Jquery代码时,遇到谷歌浏览器报错:Uncaught ReferenceError: $ is not defined 意味着Jquery库并没有导入到页面.这是有几种情况需要考虑: 1. ...

  8. springmvc之静态资源访问不到 -记一次惨痛的经历

    springmvc之静态资源访问不到 -记一次惨痛的经历 问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源. 控制台: $ 未定义 页面: GET http:/ ...

  9. 【SpringMVC】静态资源访问的问题

    在项目中经常会用到一些静态的资源,而一般我们在配置SpringMVC时会让SpringMVC接管所有的请求(包括静态资源的访问), 那么我们怎样才能最简单的来配置静态资源的访问呢? 一,在web.xm ...

随机推荐

  1. Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xml序列化的

    /// <summary> /// Image(支持 XML 序列化) /// </summary> [XmlRoot("XmlImage")] publi ...

  2. Outlook 0x800CCC1A 错误

    使用POP3帐户时,您可能在Outlook 2013/2016中看到以下错误.我在Exchange Server 2013环境中遇到此问题,在Windows 8.1上运行的Microsoft Outl ...

  3. 洛谷 P2014 选课

    题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...

  4. 机器学习&深度学习资料分享

    感谢:https://github.com/ty4z2008/Qix/blob/master/dl.md <Brief History of Machine Learning> 介绍:这是 ...

  5. 【UML】时序图Sequence diagram(交互图)(转)

    前言         UML时序图是UML动态图之一,它是强调时间顺序的交互图. 定义         时序图是显示按时间顺序排列的对象之间交互的图. 组成元素   对象         包括三种命名 ...

  6. spring-data-JPA源码解读

    spring-data-JPA源码部分有两个很重要的部分:1.识别repositories接口 2.将接口添加代理实现类并托管spring管理 JpaRepositoriesRegistrar 目的是 ...

  7. 天坑之mysql乱码问题以及mysql重启出现1067的错误解决

    相信很多小伙伴都遇到过数据库中文乱码问题,很头疼,明明Navicat上的编码格式都是utf-8是一样的啊? 为什么还是乱码? 原因是Navicat上的数据库编码格式并不是真正的编码格式 ,所以明白了吗 ...

  8. Python语言编写脚本时,对日期控件的处理方式

    对日期控件,日期控件的输入控一般是不能手动输入的:把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多此类型input框都是禁 ...

  9. 采用maven 对tomcat 进行自动部署

    在工作过程中经常会遇到项目频繁发不到额过程,而且在这个过程中会一直进行一些简单但是繁琐的重复性工程 1.打war 包 2.停掉tomcat 3.copy war 包 4.启动tomcat 听说mave ...

  10. 【卡常 bitset 分块】loj#6499. 「雅礼集训 2018 Day2」颜色

    好不容易算着块大小,裸的分块才能过随机极限数据:然而这题在线的数据都竟然是构造的…… 题目描述 有 $n$ 个数字,第 $i$ 个数字为 $a_i$. 有 $m$ 次询问,每次给出 $k_i$ 个区间 ...