web.xml配置
<servlet>
<servlet-name>cms</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/smcms-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cms</servlet-name>
<url-pattern>/my/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cms</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cms</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
action 代码
@RequestMapping(value="/my/{userName}",method=RequestMethod.GET)
public ModelAndView index(HttpServletRequest request,HttpServletResponse response,@PathVariable("userName")String userName) throws Exception{
this.log.info("member index!");
ModelAndView mav = new ModelAndView("member/index");
return mav;
}
请求URL:http://localhost:8080/smcms/my/sysadmin
后台报:2013-12-27 11:26:23 org.springframework.web.servlet.DispatcherServlet noHandlerFound
警告: No mapping found for HTTP request with URI [/smcms/my/sysadmin] in DispatcherServlet with name 'cms'
一直想不明白为啥我这个请求URL,找不到映射?
当我把web.xml中的映射改成下面:
<servlet-mapping>
<servlet-name>cms</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>就是可以的,但是这样的话,所有请求都会被拦截器拦截,包括js,css,image之类的。所以请大家看下上面的只拦截/my/*,.html,*.do为啥报错?
</servlet-mapping>,
你的配置文件中已经映射/my到这个路径,你这个时候的访问路径已经是http://localhost:8080/ cms/my,
@RequestMapping(value="/my/{userName}你的请求路径中你又配置了一次。如果你想访问到它,应该是在前面配置的路径 http://localhost:8080/ cms/my再加上 /my/{userName},即 http://localhost:8080/ cms/my/my/{userName}。
谢谢分享!回答的很好 mvc:resource<mvc:resourcesmapping="/css/**"location="/css/"/>URI[/smcms/my/sysadmin]smcms是你的工程名字吧,运行之前可以设置下Context,路径不要带工程名应该能解决找不到映射的问题
你设置的是
/my/*
表示会拦截/my/sysadmin
那么你的@RequestMappingurl应该匹配这里的*号,不带/my
比如你这里的应该配成: @RequestMapping(value=“/{userName}")
虽然你的/smcms/my/sysadmin 会找到这个action方法,但是你的userName是获取不到的,应为这不是rest的url。你还是重新设计一下resturl吧
哦。吼吼。感谢各位大神。@ never_say ,@ hao123.com ,你们说的都对。请教了另一位spring大神,他指导加上: <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">@RequestMapping(value="/my/{userName}",method=RequestMethod.GET)这个
对应rest地址应该为 http://localhost:8080/smcms/my/my/sysadmin,如果想映射成 http://localhost:8080/smcms/my/sysadmin,就得改成 @RequestMapping(value="/{userName}",method=RequestMethod.GET)
这样不行的,看我之前的回复版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。