Java 从IDE运行SpringWeb与从jar文件运行SpringWeb
我试图创建一个简单的web应用程序,在FE中使用angular,在BE中使用Spring 如果我从IDE(IntelliJ IDEA 2017.2)运行它,一切都正常,但是如果我启动jar文件,它就找不到jsp页面,并显示一个白标签错误页面 它的gradle build和thease是依赖项Java 从IDE运行SpringWeb与从jar文件运行SpringWeb,java,spring,jsp,spring-mvc,executable-jar,Java,Spring,Jsp,Spring Mvc,Executable Jar,我试图创建一个简单的web应用程序,在FE中使用angular,在BE中使用Spring 如果我从IDE(IntelliJ IDEA 2017.2)运行它,一切都正常,但是如果我启动jar文件,它就找不到jsp页面,并显示一个白标签错误页面 它的gradle build和thease是依赖项 dependencies { compile('org.springframework.boot:spring-boot-starter-data-rest') compile('org
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();
}
}
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;
}
}
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
return "ChartManagement";
}
}
ChartInitializer.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();
}
}
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;
}
}
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
return "ChartManagement";
}
}
我的jsp页面只包含一个标记,没有其他内容
我做错了什么,我想不出来?所以我让它工作了,但配置有点不同。我已经搬走了
- ChartConfiguration.java
- ChartInitializer.java
- main/resources文件夹中的所有内容
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
并将IndexController更改为
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
return "index";
}
}
所以我让它工作,但有点不同的配置。我已经搬走了
- ChartConfiguration.java
- ChartInitializer.java
- main/resources文件夹中的所有内容
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
并将IndexController更改为
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping(method = RequestMethod.GET)
public String getIndexPage() {
return "index";
}
}
/WEB-INF
!=/META-INF/resources/WEB-INF
,将您的WEB-INF
文件夹移动到src/main/resources
的直接根目录中。您刚刚尝试过它。这样它就不会从IDE启动。你有一个打包问题。JSP在Angular应用程序中做什么?我可以将其更改为html文件,目前我只希望它启动。但是我不太明白你的第一句话。/WEB-INF
!=/META-INF/resources/WEB-INF
,将您的WEB-INF
文件夹移动到src/main/resources
的直接根目录中。您刚刚尝试过它。这样它就不会从IDE启动。你有一个打包问题。JSP在Angular应用程序中做什么?我可以将其更改为html文件,目前我只希望它启动。但我不太明白你的第一句话。