jsp不能引用js,cs等解决办法

最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情,实在无法忍受

问题:部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.web.servlet.PageNotFound] -<No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServlet with name ‘spring‘>,主要看尖括号内部分。

问题原因:罪魁祸首是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下:

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
 </servlet-mapping>

分析原因:<servlet-mapping>的<url-pattern>/</url-pattern>把所有的请求都交给spring去处理了,而所有available的请求url都是在Constroller里使用类似@RequestMapping(value = "/login/{user}", method = RequestMethod.GET)这样的注解配置的,这样的话对js/css/jpg/gif等静态资源的访问就会得不到。

解决方法:在web.xml里添加如下的配置

<servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.css</url-pattern>
</servlet-mapping>
 
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>

 </servlet-mapping>
    
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.jpg</url-pattern>
 </servlet-mapping>
    
 <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.js</url-pattern>
 </servlet-mapping>

解决方法2:在spring的配置文件中添加如下一行:

<mvc:default-servlet-handler/>

注意,需要是spring3.0.5以上版本

解决方法3

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
 
 <mvc:resources mapping="/resources/**" location="/resources/" />

例如:

  

  <!-- For static resources -->
  <mvc:resources mapping="/image/**" location="/images/" />
  <mvc:resources mapping="/js/**" location="/js/" />
  <mvc:resources mapping="/css/**" location="/css/" />
  <mvc:resources mapping="/html/**" location="/html/" />
  <mvc:resources mapping="/software/**" location="/software/" />  

  下面这种是直接根据静态文件的后缀来配置的,比较通用,不用为每个子目录配置一个:

	<mvc:resources location="/" mapping="/**/*.html"/>
	<mvc:resources location="/" mapping="/**/*.js"/>
	<mvc:resources location="/" mapping="/**/*.css"/>
	<mvc:resources location="/" mapping="/**/*.png"/>
	<mvc:resources location="/" mapping="/**/*.gif"/>

这个配置告诉spring 静态资源的处理方式

最好还是web.xml 中 "/"路径写为*.htm 等

时间: 2024-08-01 06:37:08

jsp不能引用js,cs等解决办法的相关文章

Xcode编译WebApps找不到js的错误解决办法&lt;转&gt;

使用Xcode做WebApps时,使用UIWebview来调用一个页面,有时会遇到问题,其一就是编译的时候出现黄色感叹号的Warning,js文件都报错:warning: no rule to process file '$(PROJECT_DIR)/jquery-1.8.1.min.js' of type sourcecode.javascript for architecture i386 错误原因是:js和html等资源文件加入到project的时候,Xcode错误的将js文件都放到了编译

eclipse中加放js文件报js语法错误解决办法

1) eclipse设置         window->preference-> JavaScript -> Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩号去掉 2) .project文件    下面的代码删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name

eclipse中jsp页面Invalid location of tag 解决办法分析小结

在jsp页面使用标签过程中有时候不注意规则的话,eclipse会提示一些错误,下面针对这些错误提出相应的解决办法: <form></form>标签 1. Invalid location of tag (form) form 应该写到table外面去,并且form标签里面也不能套form标签.<style></style>2. Invalid location of tag (style)  style应该写在head里面.<script><

eclipse js 报错解决办法

在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1.Eclipse代码 右键点击项目->properties->Validation->Errors/Warming 将Enable Javascript Sematic validation前面的钩子去掉 2.打开.project 文件下面代码去掉 Eclipse代码   <buildCommand> <name>org.eclipse.ws

window.opener引用为null的解决办法

项目使用的是iframe来包含新打开的页面,在使用IE的时候,通过window.open打开子页面之后,在子页面是可以获取到打开窗口的父页面的引用,但是在使用firefox与chrome的时候,却无法获得.而且使用window.close也无法关闭弹窗.针对这2个问题,找到了以下的解决办法,有更好的解决办法: 一.解决window.opener返回结果为null的问题 1.通过interval,在父页面定时为子页面添加引用 var c_win = window.open(url, "pageNa

ie不兼容的几个js问题及解决办法

1.table问题 在动态新增tr或者td时,createElement()一般用appendChild();都不生效,解决办法是用新增tbody,如 var table=document.createElement("table"); var tvody=document.createElement("tbody"); var tr=document.createElement("tr"); var td=document.createElem

JS事件冒泡解决办法

<div id="div1"> <div id="div2"> <input type="button" value="按钮"/> </div> </div> $(function(){ $("div1").click(function(){ alert("DIV1"); }); $("div2").clic

找不到引用microsoft.office.core解决办法 via mrcjiong

在控制面板中,选择"添加删除程序",找到office ,选择"更改",在对话框中选择"添加删除功能",然后选择自定义安装,添加上office工具 中的.net可编程性支持,安全起见,把excel下的,word下的此选项都添加上,然后点击"更新"按钮,更新office,完成后再回到.net开发平台. 如果以上办法无法解决的话,在打开项目引用,删除有叉标记的引用,右击选择添加引用,选择COM里面选择Microft Office 1

updatePanel导致JS失效的解决办法(转载)

吐槽下,维护别人之前做的项目好蛋疼,整个页面都是用微软的ajax框架. 今天给repeater用JS写一个hover事件 <script type="text/javascript"> $(function(){ $('.trhead').click(function(){ $(this).next('.trcontent').find('.divcontent').slideToggle('fast'); }); $('.trhead').hover(function()