Springboot 配置jsp 能进入后台却找不到jsp页面

1.我按网上配置jsp的方法,在一个单独的springBoot工程中,可以通过springboot的Main启动,然后访问jsp页面成功。

然后,我在一个pom工程中添加了一个springboot 模块,然后按之前的方法配置完之后,访问jsp页面,能进入后台
但是,却找不到jsp页面,显示如下图:

clipboard.png

不知道为什么?

工程结构如下

clipboard.png

pom.xml 如图:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wuyou</groupId>
    <artifactId>spring-boot-web-jsp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-web-jsp</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.wuyou</groupId>
        <artifactId>springboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 使用Jasper引擎解析JSP -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <!--<scope>provided</scope>-->
        </dependency>
        <!-- jstl标签 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

application.properties 如下

spring.mvc.view.prefix= /WEB-INF/view/
spring.mvc.view.suffix= .jsp

controller 如下:

@Controller
public class JspController {

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView getListaUtentiView(){
        ModelAndView model = new ModelAndView("login");
        model.addObject("name", "Spring Boot");
        return model;
    }
    
    @RequestMapping(value = "/403", method = RequestMethod.GET)
    public ModelAndView to403(){
        ModelAndView model = new ModelAndView("403");
//        model.addObject("name", "Spring Boot");
        return model;
    }
}

工程源码地址:https://git.oschina.net/zh194...
有哪位大神有这方面经验的,还望指点一二?

阅读 21.9k
5 个回答

不能访问:Tomcat docbase: ---------->/C:/Users/ADMINI~1/AppData/Local/Temp/tomcat-docbase.8467610191904668066.8081/
能访问:Tomcat docbase: ------------>/D:/Workspace/IDEA/spring-boot-jsp/src/main/webapp/
主要原因:Tomcat未能找到src/main/webapp目录;
解决办法:1、重新创建新项目;2、创建一个配置Spring文件如下。

// 编写一个Config,设置其指向webapp目录即可,请优化配置webapp目录
@Configuration
public class TomcatConfig {

    @Bean
    public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
        ConfigurableEmbeddedServletContainer factory = new TomcatEmbeddedServletContainerFactory();
        factory.setDocumentRoot(new File("D:\\Workspace\\IDEA\\spring-boot-web-demo\\src\\main\\webapp\\"));
        return (EmbeddedServletContainerFactory) factory;
    }
}

有疑问请Mail:
mail: xfoobar@163.com

带上项目名访问试试。

加上这个试试:

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

运行没问题

新手上路,请多包涵

请问解决了吗 我也遇到了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题