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

我应该将jsp文件放置在Spring Boot项目中的位置

司寇山
2023-03-14

最近,我开始使用spring boot,我正在尝试将我的旧spring项目转换为使用它,所有这些项目都是web应用程序。我设法编译、打包和运行应用程序,但当我尝试在浏览器中访问它们时,我无法访问我的视图。

首先,我尝试将jsp页面放在通常的文件夹src/main/webapp/WEB-INF/jsp中,但在从官方留档中阅读本文后:

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-spring-mvc-static-content

我试着把它们放在src/main/resources文件夹中。这些都不管用。任何人都可以告诉我应该将这些文件放在哪里,以便在应用程序运行时可以访问它们?

我的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.spring</groupId>
    <artifactId>app</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.8.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
           </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
        </dependency>
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901-1.jdbc4</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <properties>
        <start-class>com.spring.app.Application</start-class>
    </properties>

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

</project>

我有这个控制器来映射视图:

@Controller
public class AcessoController {

    @RequestMapping(value = "/signin")
    public String signin(Model model) {
        return "acesso/signin";
    }

    @RequestMapping(value = "/admin")
    public String admin(Model model) {
        return "private/admin";
    }

    @RequestMapping(value = "/index")
    public String index(Model model) {
        return "public/index";
    }

}

此配置类:

WebAppConfig。Java语言

@EnableWebMvc
@Configuration
@ComponentScan(value="com.spring.app")
public class WebAppConfig extends WebMvcConfigurerAdapter {

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

}

WebAppInitializer.java

@Order(value=1)
public class WebAppInitializer implements WebApplicationInitializer {

    @SuppressWarnings("resource")
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
          // Create the 'root' Spring application context
          AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
          rootContext.register(WebAppConfig.class);

          // Create the dispatcher servlet's Spring application context
          AnnotationConfigWebApplicationContext jspContext = new AnnotationConfigWebApplicationContext();
          jspContext.register(DispatcherConfig.class);

          // Register and map the dispatcher servlet
          ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(jspContext));
          dispatcher.setLoadOnStartup(1);
          dispatcher.addMapping("/");
    }

}

DispatcherConfig。Java语言

@Configuration
@Import(WebAppConfig.class)
public class DispatcherConfig {

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

}

共有1个答案

盖马鲁
2023-03-14

如果使用Jetty或Tomcat作为嵌入式servlet容器,只需将您的包装从jar更改为war,然后使用java-jar启动它...

 类似资料:
  • 问题内容: 我已经在Eclipse中创建了一个新项目,并且想要包含ANTLR jar文件。 在项目中引用jar文件之前,通常将它们放置在哪里?您是在eclipse中创建“源目录”还是常规的“目录”?然后您从那里引用它们吗? 我希望能够轻松地传输该项目,而不必在我的项目文件夹外声明对jar文件的引用,但是我不确定Java世界中的常规约定是什么。 任何指导将不胜感激。 问题答案: 我通常创建一个/ l

  • 我创建了一个简单的Maven项目,没有原型,一切都很好。然后我添加了一个CVA。主/资源目录下的pmml文件。之后,我想读取该文件,但得到了FileNotFoundException。我尝试了以下方法: 方法一: 方法二: 方法3: 方法四: 它们都不起作用。有什么建议吗? 以下是项目结构的屏幕截图:

  • 问题内容: 在阅读exploringflask.com时,我了解到最佳实践是使用两个不同的配置文件,一个用于开发,一个用于生产。我不知道是否将密钥放置在开发或生产配置中。 实例文件夹的私有性质使其非常适合用于定义不想在版本控制中公开的键。这些可能包括您应用的秘密密钥或第三方API密钥。 我认为不应共享密钥。我应该将密钥放入开发配置或生产配置中,还是应该为每个配置使用不同的密钥? 问题答案: 将密钥

  • 问题内容: 我应该将Maven 2项目放在哪里,以便将Maven放在目标EAR工件中? 问题答案: 本应打包在最终EAR的目录下(旁标准)。 使用Maven EAR插件, 额外文件要包含在EAR中 的默认位置(可以使用参数控制)是。因此,以下操作将起作用(使用默认值):

  • 问题内容: 我有一个简单的java maven项目。我执行时的一个类需要从类路径中加载xml配置文件。我不想在生成jar时打包此类xml文件,但我想在conf子文件夹下的zip程序集中包含默认的xml文件,并且我也希望此默认xml在单元测试中可用以对其进行测试。 如我所见,此默认xml有2个可能的位置: 两种解决方案都需要特殊的pom动作: 在解决方案1中,我在构建过程中将自动副本复制到目标文件夹

  • 问题内容: 我使用netfishs 6.7.1和glassfish v2.1编写了一个Web服务项目,将log4j.properties放入项目的根目录并使用: 在构造函数中: 在功能上: 但是,这是错误信息(实际上,我已经尝试将它几乎可以实现的每个目录都放入): 问题答案: 我知道回答这个问题有点晚了,也许您已经找到了解决方案,但是我将发布我找到的解决方案(在我进行大量Google搜索之后),因