springMVC 解决无法读取css、js等静态资源
来源:互联网 发布:淘宝封号支付宝花呗 编辑:程序博客网 时间:2024/04/26 06:09
最近使用spring mvc,做demo的时候好好的,${message}也能正常把ModelAndView中的键值对拿出来,但是有一个问题就是css、js、swf等静态文件读取不了,百度呗,问题描述和解决办法如下,看官别急,我先说一句,这些办法没有完全解决我的问题,静态资源还是读不到,慢慢看嘛。
首先说我的代码注解:
@Controllerpublic class ViewController { @RequestMapping("/init/{pageId}") public ModelAndView initView(@PathVariable("pageId")String pageId){ ModelAndView mv = new ModelAndView(); mv.setViewName(pageId); return mv; } @RequestMapping("/update/{pageId}") public void updateView(@PathVariable("pageId")String pageId , HttpServletResponse response){ // TODO Auto-generated catch block }}
这样的url使得我的初始化界面的访问路径为:http://localhost:8080/init/default,当我的web.xml中配置为如下时,就不能加载那些静态文件,顺便说一句,我的css、js这些资源放在WEB-INF下的一个文件夹里,而且没有和jsp文件放在一起,(这你就知道我同时犯了几个错误了),好的,我们开始debug。
<servlet> <servlet-name>MVCDEMO</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name> MVCDEMO </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
以下常规解决办法内容均来自大家的技术博客。
问题原因1:静态资源不能放在WEB-INF下,WEB-INF文件夹中的资源是只有服务器端才能访问的,客户端不能够访问到这个文件夹下的东西,所以如下图,虽然css资源的url完全正确,但是返回还是404。
问题原因2:/这一句会让DispatcherServlet捕获所有的http请求,让我们看看加载一个网页的时候一共要发送多少个请求给服务器,如下图:
大家可以看到,我们加载了一个网页http://localhost:8080/init/default.do,实际上浏览器向服务器发出了多条http请求,除了我们看的见的那条外,其他的都是请求静态资源css、js什么的,这时候DispatcherServlet就会连这些url一并捕获,但是又找不到对应的RequestMapping,所以就报错了,所以我们在web.xml中把/改成*.do,这样css这些静态资源的url就不会被捕获了,如下。
<servlet> <servlet-name> MVCDEMO </servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name> MVCDEMO </servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
我如上修改了,然而这并没有什么卵用,查看日志,报如下错:
[30/Jun/2015:20:17:00+0800] "GET/init/module/jquery-easyui-1.3.2/themes/icon.css HTTP/1.1" 404 1045
问题原因3:url居然是/init/module/jquery-easyui-1.3.2/themes/icon.css,可是我期望的url里并没有“/init”,细看jsp中的语句:
<link rel="stylesheet" type="text/css" href="/module/jquery-easyui-1.3.2/themes/default/easyui.css">
好吧难怪,因为我是在http://localhost:8080/init/default.do中请求css,default被定义为参数,所以此页面的css请求url就会被拼接到http://localhost:8080/init/之后,问题找到后,修改就很简单了,修改上述语句如下:
<link rel="stylesheet" type="text/css" href="${base}/module/jquery-easyui-1.3.2/themes/default/easyui.css">
然后就美美哒!
- springMVC 解决无法读取css、js等静态资源
- 解决使用SpringMVC时,css、js、image等静态资源无法加载的问题
- SpringMVC 无法加载js,css等静态资源文件
- 解决SpringMVC对js css等静态资源拦截
- 用maven搭建springmvc项目时,jsp页面无法加载js或者css等静态资源
- 出现js、css、png、gif等静态资源无法加载解决
- SSM框架css/js/images等静态资源无法加载的解决
- springMVC如何访问静态资源 如.js,.css等
- 解决springmvc请求丢失js等静态资源的方法
- Struts2----无法加载js,css等静态资源
- springmvc中解决JS,CSS等静态文件无法访问问题
- springMVC访问静态资源——js、css、img等资源访问不到
- springmvc controller跳转后jsp页面无法加载静态资源css,图片等错误解决方法
- 无法处理css、js等静态资源,所以无法正常显示
- springmvc出现页面引用的js,css等静态资源访问出现404问题
- springMVC下jsp引用外部js,css等静态资源的解决方法
- 定义不被SpringMVC拦截的静态资源(html, js, css等文件)通用方法
- springMVC下无法加载静态资源文件(js、css、image)
- 为android自定义View控件添加自定义的属性
- Eclipse下搭建Corba开发环境+HelloWorld实现过程
- HashMap循环遍历方式及其性能对比
- zoj-Known Notation
- 黑马-OC语法-self(关键字),“.”语法,声明对象等默认类型
- springMVC 解决无法读取css、js等静态资源
- 一个打通jni,java framework,application三层的练习
- 邻接图的广度优先遍历和深度优先遍历
- HDU 1576:A/B
- Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before
- Linux命令:rz和sz(上传和下载)
- RAID损坏后 对数据的完整备份
- OpenGL 与 GLSL 版本
- 哭声检测