【问题标题】:Spring MVC cannot resolve .jsp filesSpring MVC 无法解析 .jsp 文件
【发布时间】:2015-05-28 16:59:04
【问题描述】:

我正在尝试构建一个 RESTful Web 服务。我按照 spring.io 的说明进行了“hello project”(localhost:8080/greeting)的工作。 PS:我用的是Maven项目。该项目已经在 Github 上发布:https://github.com/Tommzy/OutlierDemo/

但是,当我试图让 spring mvc 解决我的一个视图 (.jsp) 时。据说

白标错误页面

这个应用程序没有明确的 /error 映射,所以你看到 这是一个后备。

2015 年 3 月 25 日星期三 01:31:04 EDT 出现意外错误(type=Not 找到,状态=404)。没有可用的消息

我不确定为什么总是会发生这种情况,因为我已经有一个如下配置文件。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="config")
public class WebConfig extends WebMvcConfigurerAdapter {

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

}

我项目的整个目录树是:

src-main|- java   |- config  |-  WebConfig.java

                  |- hello   |-  Application.java
                             |-  Greeting.java
                             |-  GreetingController.java
                             |-  PMethodController.java

        |- webapp |- WEB-INF |-  views   |-  pmethod.jsp
                             |-  web.xml

我从朋友那里复制了 web.xml。该文件在他的项目上运行良好。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <servlet>
        <servlet-name>mvc-Dispatcher</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>config</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-Dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>/</welcome-file>
    </welcome-file-list>
</web-app>

还有我的 PMethodController.java:

@Controller
public class PMethodController {

    @RequestMapping("/method1")
    public String handleRequest() {
        return "pmethod";
    }

}

我的应用程序.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

取决于以上所有,如果我运行项目然后输入http://localhost:8080/method1 它会在页面顶部向我显示 Whitelabel 错误页面。

【问题讨论】:

  • 你可以使用"org.springframework.web.servlet.view.InternalResourceViewResolver"作为你的viewResolver,Check this out

标签: java spring jsp spring-mvc view


【解决方案1】:

试试这个:

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

【讨论】:

  • 嗨!我尝试了您的代码,但是 TemplateResolver 无法导入到项目中。我正在做一个 maven 项目,是否需要向 pom.xml 添加更多内容才能使其正常工作?
  • 嘿抱歉添加了错误的代码,刚刚更新了新的。检查并告诉我。
  • 3 仍然无法正常工作,但我想我们快到了。
  • 希望如此。让我检查一下并回复你。
  • 耶!我只是在github上发布我的项目,这里是链接:github.com/Tommzy/OutlierDemo
【解决方案2】:

您会找到一个完整、简单的working example of JSPs with Spring Boot in the spring-boot-samples repository

修复应用的一些想法:

  • 删除您的 WebConfig 并将InternalResourceViewResolver 粘贴到您的应用程序类中。因为你没有扫描那个包裹,所以它没有被取走
  • 删除您的 web.xml 文件

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2016-03-13
    • 2017-09-21
    • 1970-01-01
    • 2014-08-27
    • 2020-06-27
    • 1970-01-01
    • 2016-05-29
    • 2012-07-30
    相关资源
    最近更新 更多