Spring MVC在类上使用@RequestMapping后对静态资源的访问问题

tianshuang.me 2015-06-18 06:15:21
RT,上代码:
Controller:
package com.filmbusiness.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("Test")
public class TestController {

@RequestMapping(value = "/test")
public String insert() {
return "index";
}
}


jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="Shortcut Icon" href="favicon.ico" />
<title>Index</title>
</head>


<body>

Welcome to Group Five
<br>

</body>
</html>

通过IE调试发现

为何请求静态资源时要加上类上的@RequestMapping限定,请问怎么处理此种情况?

补充:web.xml中已经过滤了ico等静态文件,不会经过Spring MVC
	<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>
...全文
4106 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
捏捏小脸蛋 2017-12-18
  • 打赏
  • 举报
回复
这个问题解决了,你这使用的是相对路径,所以会将类注解路径加载跳转url上,改为绝对路径即可,即加上“/” 具体参考:http://blog.csdn.net/KH717586350/article/details/78834243
rx1989729 2017-08-21
  • 打赏
  • 举报
回复
<link rel="stylesheet" type="text/css" href="/king-rx/theme/easyui/themes/default/easyui.css" /> 静态资源前面带上项目名看看
qq_36869884 2016-11-29
  • 打赏
  • 举报
回复
同样遇到了这样的问题,目前我只有两个笨方法 1)用绝对路径<%=basePath%>把静态资源写死,比如<%=basePath%>imges/xx.png 2)不用tomcat了,用jetty,因为jetty的访问路径不需要服务名 将静态资源写成 /imges/xx.png(imges前面的"/"一定要加,这也相当于某种意义上的绝对路径了吧) 访问路径localhost:10000/test/home 加载时静态资源路径是localhost:10000/imges/xx.png,这样就可以加载出来了
奔腾的小马 2016-08-30
  • 打赏
  • 举报
回复
Spring MVC在类上使用@RequestMapping后对静态资源的访问问题 哥们,这个问题,如何解决的啊?
奔腾的小马 2016-08-28
  • 打赏
  • 举报
回复
哥们,问题解决了么? 能说说解决方案吗?http://localhost:8080/registration/loginController/images/bg.png 谢谢
莫默不作声 2016-05-01
  • 打赏
  • 举报
回复
在类前面加入了@RequestMapping后,该类的所有响应和请求都将会以加上@RequestMapping里面的路径作'为父路径。 加上@RequestMapping后静态资源的请求也被加上了@RequestMapping的路径 这个时候,怎么才能访问得到静态资源呢? 求大牛指导~~
qq_26809959 2016-03-02
  • 打赏
  • 举报
回复
我也遇到这个问题 原因是它是转发 所以路径是不变的 前面才跟上了RequestMapping中配置的路径 但是不知道怎么办
lala_623625 2015-11-25
  • 打赏
  • 举报
回复
遇到了同样的问题,不知道楼主怎么解决的啊
xia4820723 2015-11-05
  • 打赏
  • 举报
回复
楼主你好,我碰到了和你同样的问题,解决办法如下: springMVC提供了对静态资源的映射功能,详细见该链接:http://my.oschina.net/ydsakyclguozi/blog/468980 1、在web.xml中配置spring映射的url类型 我的示例 (映射.do后缀和.png后缀的链接,其中只有.png是静态资源哈,也可以加入.css什么的,或者直接/*映射所有资源): <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> <url-pattern>*.png</url-pattern> </servlet-mapping> 2、在spring的配置文件中加入代码:<mvc:resources location="/static/" mapping="/*/static/**"/> 这一代码会对静态资源进行映射。 也就是说如果/static/前有额外的一级目录(类进行RequestMapping生成的目录),将其映射为没有这一级目录的结构 如: 正确地址:http://localhost:8080/webproject/static/images/password.png 楼主情况下有问题的地址:http://localhost:8080/webproject/classmap/static/images/password.png 映射后的正确地址:http://localhost:8080/webproject/static/images/password.png
  • 打赏
  • 举报
回复
这个很简单啊,页面会自动给你加上contextpath,变成了.../Test/test/favicon.ico,你说他进了springmvc?哪里看出来的,我觉得有可能进有可能不进,看你default的servlet和springmvc的servlet的优先级咯。
tianshuang.me 2015-06-19
  • 打赏
  • 举报
回复
求高人解答啊
tianshuang.me 2015-06-19
  • 打赏
  • 举报
回复
引用 8 楼 scmod 的回复:
favicon.ico跟/favicon.ico好像效果不一样
不是这个的问题,不知道为啥请求静态资源时会加上类上限定的@RequestMapping地址
tianshuang.me 2015-06-19
  • 打赏
  • 举报
回复
引用 7 楼 Qiufg_BO 的回复:
你把@Controller下的那个RequestMapping去掉看看
去掉就可以,不知道为啥请求静态资源时会加上类上限定的@RequestMapping,我不能因为这个就不用类上的@RequestMapping吧
scmod 2015-06-19
  • 打赏
  • 举报
回复
favicon.ico跟/favicon.ico好像效果不一样
Qiufg_BO 2015-06-19
  • 打赏
  • 举报
回复
你把@Controller下的那个RequestMapping去掉看看
tianshuang.me 2015-06-18
  • 打赏
  • 举报
回复
引用 3 楼 ya52glp 的回复:
  <mvc:default-servlet-handler/>

 <mvc:annotation-driven />
springmvc配置中加入上面这行代码就行了
不是这个的问题,是为什么<link rel="Shortcut Icon" href="favicon.ico" />请求的路径是项目名下的Test(Controller的requestmapping)的favicon.ico?
Qiufg_BO 2015-06-18
  • 打赏
  • 举报
回复
刚刚 看错了 不好意思 你在类上面配了一个Test 方法上面配了一个test 所以要两个
Qiufg_BO 2015-06-18
  • 打赏
  • 举报
回复
引用 2 楼 u012552052 的回复:
[quote=引用 1 楼 Qiufg_BO 的回复:] 配置资源过滤 <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/>
web.xml里已经过滤了,是地址为啥加上了Test的问题,不是ico访问不到的问题[/quote]
引用 2 楼 u012552052 的回复:
[quote=引用 1 楼 Qiufg_BO 的回复:] 配置资源过滤 <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/>
web.xml里已经过滤了,是地址为啥加上了Test的问题,不是ico访问不到的问题[/quote] 我只是不习惯在web.xml配置不是必须在web.xml中配置 所以这个我也不知道怎么说
欧阳ananan 2015-06-18
  • 打赏
  • 举报
回复
  <mvc:default-servlet-handler/>

 <mvc:annotation-driven />
springmvc配置中加入上面这行代码就行了
tianshuang.me 2015-06-18
  • 打赏
  • 举报
回复
引用 1 楼 Qiufg_BO 的回复:
配置资源过滤 <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/>
web.xml里已经过滤了,是地址为啥加上了Test的问题,不是ico访问不到的问题
加载更多回复(1)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧