为什么Jsp文件未与Controller映射在Spring Boot中返回视图

时间:2018-10-20 16:39:39

标签: spring jsp spring-boot

我正在从事Spring Boot项目。我只是创建此控制器以返回登录视图。

@Controller
public class loginController {
    @RequestMapping("/login")
    public String login(){
        return "login";
    }
}

login.jsp 文件位于** src / main / webapp / WEB-INF / jsp / login.jsp **

我在应用程序属性文件中这样设置前缀和后缀。

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
logging.level.org.springframework.web=DEBUG

与我设置类似的依赖项一样。

 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>



    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

我的项目结构是这样的。

enter image description here

如果我运行程序并按localhost:8080 / login,则会出现以下白色标签错误。谁能建议我为什么会这样和解决方案

  

Whitelabel错误页面

     

此应用程序没有针对/ error的显式映射,因此您将其视为备用。

2 个答案:

答案 0 :(得分:0)

您需要添加以下Maven依赖项:

  <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
   </dependency>

Jsp需要依赖javax.servelt来处理请求。

更新:

默认情况下,不处理您的jsp目录位置。请将其移至以下位置:

  

src / main / resources / META-INF / resources / WEB-INF / jsp

enter image description here

更新:  确保您的SpringBootApplication正在扫描控制器。您必须在日志中看到以下内容:

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}"

请在您的SpringBootApplication上添加注释@ComponentScan("com.example.controller"),以扫描您的控制器或将SpringBootApplication移动到通用软件包com.example

中。

答案 1 :(得分:0)

将您的main类放在com.example下! 和 尝试更换

  <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

 <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

这也是必需的

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
   </dependency>

您的项目结构应类似于https://i.stack.imgur.com/UaK8l.png