运行 Spring Web 来自 IDE 与来自 jar 文件
Running Spring web from IDE vs from jar file
我正在尝试创建一个简单的 Web 应用程序,它将在 FE 中使用 angular,在 BE 中使用 Spring。
如果我从我的 IDE (IntelliJ IDEA 2017.2) 运行 一切正常,但是如果我启动 jar 文件它找不到 jsp 页面并显示一个 Whitelabel 错误页面。
它的 gradle build 和 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 页面只包含一个
标签,没有别的。
我做错了什么,我想不通?
所以我让它工作了,但配置有点不同。我已删除
- 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";
}
}
我正在尝试创建一个简单的 Web 应用程序,它将在 FE 中使用 angular,在 BE 中使用 Spring。
如果我从我的 IDE (IntelliJ IDEA 2017.2) 运行 一切正常,但是如果我启动 jar 文件它找不到 jsp 页面并显示一个 Whitelabel 错误页面。
它的 gradle build 和 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 页面只包含一个
标签,没有别的。
我做错了什么,我想不通?
所以我让它工作了,但配置有点不同。我已删除
- 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";
}
}