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

Spring Boot无法识别JSP

姬银龙
2023-03-14

我已经使用注释配置了Spring Boot。我有以下文件:1)用于配置spring boot的AppStarter类

 
        @Configuration
        @EnableAutoConfiguration
        @PropertySource(value = "classpath:app.properties", ignoreResourceNotFound = true)
        @ComponentScan(basePackages = "com.sample.config")
        public class AppStarter extends SpringBootServletInitializer{

        @Value("${server.contextPath}")
        private String contextPath;

        @Value("${server.port:8080}")
        private String port;

        @Bean
        public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
            return new PropertySourcesPlaceholderConfigurer();
        }

        @Bean
        public EmbeddedServletContainerFactory servletContainer() {
            TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
            factory.setPort(Integer.valueOf(port));
            factory.setContextPath(contextPath);
            factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notfound.html"));
            return factory;
        }

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

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

2) WebConfig类



        @Configuration
        @ComponentScan(basePackages = {"com.sample.rest"})
        @EnableWebMvc
        public class WebConfig extends WebMvcConfigurerAdapter
        {
            @Bean
            public static PropertySourcesPlaceholderConfigurer properties()
            {
                PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
                Resource[] resources = new ClassPathResource[]{new ClassPathResource("app.properties")};
                configurer.setLocations(resources);
                configurer.setIgnoreUnresolvablePlaceholders(true);
                return configurer;
            }


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

3)app.properties

core_pool_size = 100
max_pool_size = 600
queue_capacity = 160
server.port=8080
spring.view.prefix: /WEB-INF/pages/
spring.view.suffix: .jsp

4) UserController类

@Controller
public class UserController extends AbstractController {

    @RequestMapping(value = "/user/add")
    public String user()
    {
       return "adduser";
    }
} 

5)pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>1.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>1.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.1.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.hateoas</groupId>
        <artifactId>spring-hateoas</artifactId>
        <version>0.16.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.dozer</groupId>
        <artifactId>dozer</artifactId>
        <version>5.5.1</version>
        <exclusions>
            <exclusion>
                <artifactId>commons-logging</artifactId>
                <groupId>commons-logging</groupId>
            </exclusion>
            <exclusion>
                <artifactId>org.slf4j</artifactId>
                <groupId>slf4j-log4j12</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j</artifactId>
                <groupId>log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <scope>provided</scope>
    </dependency>
    <!--Spring boot test-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>1.2.0.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <version>4.3.7.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
        <scope>runtime</scope>
    </dependency>
 </dependencies>

6) 添加用户。jsp,位于webapp/WEB_INF/pages文件夹中

当我试图通过localhost:8080/sample/user/add访问我的jsp时,我得到:< br >

org.springframework.web.servlet.PageNotFound |在 DispatcherServlet 中找不到名称为“dispatcherServlet”的 HTTP 请求的映射,其中包含 URI [/sample/WEB-INF/pages/adduser.jsp]

有人能在这个问题上提供任何帮助吗?


共有3个答案

饶承宣
2023-03-14

看起来您已经配置了一个嵌入式Tomcat容器。嵌入Tomcat时不支持JSP页面。http://docs . spring . io/spring-boot/docs/1 . 2 . 1 . release/reference/html single/# boot-features-JSP-limits

季华茂
2023-03-14

要使用localhost:8080/samples/user/add,您需要将控制器代码更改为此,

@Controller
@RequestMapping("/samples")
public class UserController extends AbstractController {

    @RequestMapping(value = "/user/add")
    public String user()
    {
       return "adduser";
    }
} 
林德辉
2023-03-14
  • 您配置了:spring.view.prefix:/WEB-INF/jsp/
  • 但是您的文件夹是:网络应用程序/WEB_INF/页面

/jspvs,/页面

您需要更改其中一个,以便它们匹配!

第二:您需要请求url(这是写在您的控制器,但不是jsp的路径!

所以使用: 本地主机:8080/

 类似资料:
  • 字符串不能解析为类型

  • 我有一个与cassandra连接的springboot应用程序。我试图在地图中创建地图,但遇到以下异常。在我看来,即使我使用了冻结值,它仍在发送cal,但没有关键字冻结 错误 代码 马文

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 问题内容: 我使用,当我得到 我删除了构建路径,然后又做了 ,仍然是同样的错误。 问题答案: 该代码不是Java SE的一部分,因此这些类将不在JRE中。您需要找到并下载包含这些类的JAR文件,然后将其添加到Eclipse构建路径中。 (可以在此处下载JAR的一个地方,但是如果此链接中断,可以轻松进行自己的搜索。请转到Maven Central或findjar。)

  • 问题内容: 我有一个jimfs(内存文件系统中的Google)从字节数组中创建的zip文件。当尝试使用打开该文件时,出现错误,提示无法识别该提供程序。我的代码如下: URI类似于:。 堆栈跟踪为: jimfs未与一起列出。它位于分别与 for 相比的单独的类加载器中。 提供者的打印如下: 我尝试基于jimfs ClassLoaderTest示例手动设置类加载器,但没有成功。我在Linux上运行。