从IDE运行Spring Web和从jar文件运行

时间:2017-09-09 11:35:38

标签: java spring jsp spring-mvc executable-jar

我正在尝试创建一个简单的Web应用程序,它将在FE中使用角度和在BE中使用Spring。

This is my setup

如果我从IDE(IntelliJ IDEA 2017.2)运行它,一切正常,但如果我启动jar文件,它无法找到jsp页面并显示Whitelabel错误页面。

Whitelabel Error Page

它的gradle构建和thease是依赖

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-rest')
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile 'javax.servlet:jstl:1.2'
}

ChartConfiguration.java

@Configuration
@EnableWebMvc
public class ChartConfiguration extends WebMvcConfigurerAdapter{

@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    registry.viewResolver(viewResolver);

}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}

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

}

ChartInitializer.java

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class ChartInitializer extends 
AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] { ChartConfiguration.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return null;
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

@Override
protected Filter[] getServletFilters() {
    Filter [] singleton = { new CORSFilter() };
    return singleton;
}

}

IndexController.java

@Controller
@RequestMapping("/")
public class IndexController {

@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
    return "ChartManagement";
}

}

我的jsp页面只包含

标签,没有别的。

我做错了什么,我无法弄明白?

1 个答案:

答案 0 :(得分:0)

所以我让它工作但配置有点不同。我已删除

  • ChartConfiguration.java
  • ChartInitializer.java
  • main / resources文件夹中的所有内容

现在我在main / resources中创建了一个名为templates的文件夹,里面是 index.html

此外,我添加了一个新的依赖

compile("org.springframework.boot:spring-boot-starter-thymeleaf")

并将IndexController更改为

@Controller
@RequestMapping("/")
public class IndexController {

@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
    return "index";
}

}