繁体   English   中英

基于Spring MVC注释的配置不起作用

[英]Spring MVC annotation based configuration not working

我试图在本教程的帮助下创建一个简单的Spring MVC项目,但部署时它显示404服务器错误。由于我是Spring MVC的初学者,因此尽管经历了所有在这里和其他地方也能得到解答。非常感谢您提供帮助。

这些是内容:

  • 的pom.xml

     <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com</groupId> <artifactId>deevigeweb</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>deevigeweb Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> <build> <finalName>deevigeweb</finalName> </build> </project> 
  • Servlet初始化程序 (DeevigeServletInitializer.java)

     package com.deevigeweb.config; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class DeevigeServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] {DeevigeWebMVCConfig.class}; } @Override protected Class<?>[] getServletConfigClasses() { return null; } @Override protected String[] getServletMappings() { return new String[] {"/"}; } } 
  • Web MVC配置 (DeevigeWebMVCConfig.java)

     package com.deevigeweb.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @EnableWebMvc @Configuration @ComponentScan({"com.deevigeweb"}) public class DeevigeWebMVCConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } @Bean public InternalResourceViewResolver viewResolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setViewClass(JstlView.class); resolver.setPrefix("/WEB-INF/views"); resolver.setSuffix(".jsp"); return resolver; } } 
  • 控制器 (SearchViewController.java)

     package com.deevigeweb.controllers.webapp; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; public class SearchViewController { @RequestMapping(value="/",method=RequestMethod.GET) public ModelAndView doLanding(){ return new ModelAndView("searchview"); } } 
  • JSP (searchview.jsp)

     <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Welcome</title> </head> <body> <h1>Welcome</h1> </body> </html> 
  • 目录结构 项目结构

也许添加斜杠可以为您解决问题:

resolver.setPrefix("/WEB-INF/views/");

还要在SearchViewController类上添加@Controller批注

SearchViewController上添加类级别的@Controller批注。 你错过了。

@Controller
public class SearchViewController {
    @RequestMapping(value="/",method=RequestMethod.GET)
    public ModelAndView doLanding(){
        return new ModelAndView("searchview");
    }
}

现在,URL localhost:8080 / deevigeweb /将返回searchview.jsp页面。

项目中不需要web.xml ,因为这是基于Java的纯配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM