奇怪的错误:在url映射spring mvc上找不到资源

时间:2016-04-27 08:47:16

标签: java spring maven spring-mvc

一切似乎都没问题,但是当我启动应用程序时,我发现了一个奇怪的资源错误。 这是我的控制器类

@Controller
public class HomeController {

        @Autowired
        private IMusicStoreService musicStoreService;

    @RequestMapping(value="/")
    public ModelAndView test(HttpServletResponse response) throws IOException{

        return new ModelAndView("home","musicDetForm",new MusicDetails());
    }

        @RequestMapping(value="AddSong",method = RequestMethod.POST)
        @ResponseBody
        public String addSong(@ModelAttribute("musicDetForm") MusicDetails musicDetails){
           return musicStoreService.addSong(musicDetails);
        }

        @RequestMapping(value = "SongList/",method = RequestMethod.GET)
        @ResponseBody
        public List<MusicDetails> getSongList(){
            return musicStoreService.getSongList();
        }
}

这是我的pom.xml文件的代码部分

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
        <java.version>1.6</java.version>
        <spring.version>3.1.0.RELEASE</spring.version>
        <cglib.version>2.2.2</cglib.version>
</properties>

这是我的web.xml文件

<display-name>MusicStore</display-name>
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>SpringDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>
                org.springframework.web.context.support.AnnotationConfigWebApplicationContext
            </param-value>
        </init-param>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>aish.vaishno.musicstore</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>

当我使用sts在tomcat上启动我的应用程序时,我的构建没有显示错误但是我收到此错误

HTTP Status 404 - /MusicStore/

为什么我得到上述错误,尽管我的映射似乎没问题。

1 个答案:

答案 0 :(得分:0)

您是否将MusicStore存储在WEB-INF /中? 如果将其设置为web.xml中的索引

,则可以访问

但是,一旦您发送请求,响应通常会发送到您提供的URL,并且应该是一个&#39; JSP&#39;文件,但不是servlet。

在你的情况下,代码搞砸了很多,我没有看到任何View或JSP或网页跟随你的MusicStore控制器,确定你可以直接打印它,但那不是一个良好的做法。

如果您可以提供更多代码内容,则可能会更有帮助。 现在,解决方案是在第一次加载servlet时检查是否可以访问索引页,或者检查映射。