当前位置: 首页 > 知识库问答 >
问题:

无法查看spring boot jsp文件

赵晨
2023-03-14

我正在使用spring boot应用程序。我为它设置了MvcConfig类,并将tomcat嵌入jasper和jstl依赖项添加到pom中。xml。然而,我无法在“WEB-INF”文件夹中查看我的jsp文件,我将得到404错误(白标错误页面)。我已经设置了应用程序。属性。这是我的申请表。属性:

#
## View resolver
#
spring.view.prefix: /WEB-INF/jsp/
spring.view.suffix: .jsp

这是我的MvcConfig类:

package com.goodvideotutorials.spring.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("home");
    }

}

以下是我的home.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Up and running with Spring Framework quickly</title>
</head>
<body>
    <h2>Hello, world!</h2>
</body>
</html>

插入src内部

我已经将这些依赖项添加到pom.xml:

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

这是我的申请表。java类:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
       public static void main(String[] args)  {
           ApplicationContext ctx = SpringApplication.run(Application.class, args);
    }
}

和我的控制器类:

@Controller
public class RootController {

//  @RequestMapping("/")
//  public String home() {
//
//  return "home";
//  
//  }

}

无论如何,如果我在控制器中对代码进行注释,并且不使用MvcConfig,那么它就不起作用。如果我对该代码进行注释并使用MvcConfig类,它就不能正常工作。这是url:localhost:8080

我刚刚测试了很多东西,但它显示的是“白标签错误页面”,而不是JSP。我还在JEE环境中安装了Tomcat服务器。这会导致问题吗?

共有3个答案

闾丘康安
2023-03-14

遵循以下步骤

1-tomcat嵌入jasper依赖项

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

2-添加以下配置为应用程序。属性

spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp

3-您要显示的任何JSP页面,以便在控制器中添加以下代码

@RequestMapping("/")
public String welcome(Model model) {
    model.addAttribute("message", "Hello World !!!");
    return "welcome";
}

所以基于上面的代码,它将在webapps/welcome.jsp中查找welcome.jsp文件

这是它仍然有一些疑问,然后看看下面的链接

Spring Boot和JSP集成

吕修伟
2023-03-14

Spring boot通过以下方式自动帮助您:

添加文件src/main/Resources/application.properties

spring.view.prefix: /WEB-INF/jsp/ 
spring.view.suffix: .jsp

和依赖关系:

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

或者,您应该添加视图解析器的配置,如:

@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

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

更改应用程序,如:

public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
南门意蕴
2023-03-14

只有我的2美分。

对我来说,我在服务器日志中收到了以下警告:

WARN  : ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/welcome.jsp]

并且显示了白标错误页面,为了修复它,我修改了我的JSP位置

src/main/webapp/WEB-INF/jsp/welcome.jsp

src/main/webapp/templates/jsp/welcome.jsp

为什么它对我有效?

Spring文档明确指出,ResourceHttpRequestHandler将拒绝任何包含WEB-INF或META-INF的URL。

ResourceHttpRequestHandler文档链接

来自文档:标识无效的资源路径。默认情况下拒绝:包含“WEB-INF”或“META-INF”的路径

因此,当我用模板替换WEB-INF文件夹名称时,它就开始工作了。

注意:我的内部视图解析器也配置了所需的前缀和后缀。我正在使用spring boot starter父级-2.1.2。释放

 类似资料:
  • 大约6个月前,我创建了一个wordpress网站。一切都很好,直到几天前,我们开始在前端和后端看到Wordpress“白色死亡屏幕”。 经过大量调试尝试后,我们决定重新安装wordpress并保留旧的wp-内容文件。 现在,在尝试访问站点时可以看到这一点(wp_debug设置为false,因此理想情况下不应该发生)- > 警告:require(/home/vaidya/public_html/wp

  • 查看文件里面的内容,你可以用 vi 打开这个文件,如果你只想输出文件里的内容,可以使用 cat 命令。如果文件比较大,你只想输出文件的最后一小部分,可以使用 tail 命令。 先在 ninghao-project/README.md 文件里追加点内容,可以这样做: echo "hello" >> ninghao-project/README.md cat cat,可以直接输出文件里的内容。 ca

  • 问题内容: 在XCode 6.3和XCode 7中使用快速代码运行项目时,出现以下错误: 由于您无权查看文件“ ***。app”,因此无法打开 我的应用程序不再启动。我检查了编译器设置是否正确。可执行名称和捆绑包名称也正确。 几次清理了项目,也删除了XCtest目标。 问题答案: 有时可能是由于文件中的错误损坏所致。尝试创建一个具有相同名称的新项目,然后用新的项目替换当前的项目。

  • 我有个问题。My laravel在共享主机上看不到图像。 我有公共文件夹在~/域/DOMAIN/public_html/APP和其余的文件在~/域/DOMAIN/文件。 我的文件正在上载到~/domains/DOMAIN/files/storage/app/public/uploads/avatars 但在应用程序中,我看不到这一点。 这是上传代码: 你能帮我做什么吗?

  • 我正在手动将一些Excel文件上传到Azure Blob存储(已启用Data Lake Store Gen2)。上传文件后,我可以在通知窗口中看到上传状态,但在相应的文件夹中看不到该文件。尝试了不同的文件,但有相同的问题。它一直工作到今天早上。文件大小:~150Kb 知道吗?

  • 我已经建立了一个本地wordpress环境,这是一个现场网站的复写本,这样我们就可以进行新的设计。 live站点数据库已复制到localhost php myadmin中,运行正常。 localhost站点位于htdocs文件夹中名为/3dfc/的文件夹中。 因此,我有一个网站地址-http://localhost:8888/3dfc - 我可以查看整个网站没有问题,除了主页。 有没有关于如何修复