【问题标题】:Spring MVC can not find proper jsp in WEB-INF/views/ packageSpring MVC 在 WEB-INF/views/ 包中找不到合适的 jsp
【发布时间】:2015-12-01 19:56:59
【问题描述】:

我正在从一本名为“Spring in Action”的书中学习 Spring MVC。然而。当我点击正确的控制器时出现 404 错误。我使用的是注解而不是 xml 配置,所以很难从网上找到。你可以看到我正在使用的非常简单的类和配置

SpittrWebInitializer.java

package spittr.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] {RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] {WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }
}

RootConfig.java

package spittr.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan(basePackages = "spittr",
                excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,
                                                        value = EnableWebMvc.class))
public class RootConfig {
}

WebConfig.java

package spittr.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"spittr.web"})
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
} 

HomeController.java

package spittr.web;

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

@Controller
public class HomeController {

    @RequestMapping(value = "/home", method = RequestMethod.GET)
    private String home() {
        return "home";
    }
}

最后在resources/WEB-INF/views/ 包下我有一个名为home.jsp 的jsp,就像;

<html>
<body>
<h1>Spring 4.0.2 MVC web service</h1>

<h3>Welcome!!!</h3>
</body>
</html>

可以点击控制器,所以我知道它们已经初始化没有任何问题,但是,上下文无法找到正确的 jsp。感谢您的帮助。谢谢

【问题讨论】:

  • 请复制您输入的网址。尝试选择项目单击 rigth 并单击运行。 (这是用于查找项目作为启动的 URL)
  • 我正在输入localhost:8080/spitter/home。 spitter 是 pom.xml 文件中定义的 artifactId。我知道我点击了控制器,因为我可以调试它。

标签: java spring jsp spring-mvc web-inf


【解决方案1】:

JSP 位置不正确 WEB-INF 位置在 src/main/webapp 下而不是资源下

【讨论】:

  • 完美!我认为资源/和webapp之间没有区别。那有什么区别呢?
  • resources 用于应用程序资源配置,这样的 webapp 用于 webapp 资源视图和提供静态资源(如 css 和图像)在此处查看 maven 标准目录布局maven.apache.org/guides/introduction/…
猜你喜欢
  • 2012-03-25
  • 2017-09-20
  • 1970-01-01
  • 2019-03-11
  • 2013-02-04
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多