Spring 在ApacheTomcat上部署war文件时未加载CSS和JS文件
使用spring boot starter web mvc进行初始开发。当我在服务器上部署war文件时,它没有加载css和js文件,但当我使用spring boot运行相同的代码时,它工作正常。下面是加载js和css文件的目录结构和配置。谁能告诉我怎么做有什么问题吗?仅对项目使用基于java的配置。在部署项目之前,我参考了中的8.1.1,并使用了与下面相同的pom文件配置 配置文件-Spring 在ApacheTomcat上部署war文件时未加载CSS和JS文件,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,使用spring boot starter web mvc进行初始开发。当我在服务器上部署war文件时,它没有加载css和js文件,但当我使用spring boot运行相同的代码时,它工作正常。下面是加载js和css文件的目录结构和配置。谁能告诉我怎么做有什么问题吗?仅对项目使用基于java的配置。在部署项目之前,我参考了中的8.1.1,并使用了与下面相同的pom文件配置 配置文件- public class ViewWebAppConfig extends WebMvcConfigurerA
public class ViewWebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// configuration for assets/ static files
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource rb = new ResourceBundleMessageSource();
rb.setBasenames(new String[] { "validation" });
return rb;
}
}
pom.xml文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<log4j.version>2.7</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Dependency for rendering jsp pages -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler-jdt</artifactId>
<version>5.5.23</version>
<scope>provided</scope>
</dependency>
<!-- Dependency for rendering jsp pages -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
</dependencies>
org.springframework.boot
spring启动程序父级
1.3.4.1发布
UTF-8
UTF-8
1.8
2.7
org.springframework.boot
SpringBootStarterWeb
com.googlecode.json-simple
简单json
org.json
json
javax.servlet
jstl
org.apache.tomcat.embed
汤姆卡特·贾斯珀
假如
雄猫
贾斯珀编译器
5.5.23
假如
雄猫
jasper运行时
5.5.23
假如
雄猫
jasper编译器jdt
5.5.23
假如
org.apache.logging.log4j
log4japi
${log4j.version}
org.apache.logging.log4j
log4j型芯
${log4j.version}
org.springframework
弹簧芯
org.springframework
SpringWebMVC
org.springframework
SpringJDBC
使用spring标签加载js和css,如下所示-
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<spring:url value="/resources/assets/js/custom.min.js" var="customJS" />
<script src="${customJS}"></script>
<link href="${customFieldAgent}" rel="stylesheet"/>
<spring:url value="/resources/assets/css/customfieldAgent.css" var="customFieldAgent" />
下面是服务器日志-
17:03:10.014[http-nio-8080-exec-7]调试
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
-未找到[/${starrrJS}]17:03:10.014[http-nio-8080-exec-7]警告的处理程序方法
org.springframework.web.servlet.PageNotFound-未找到的映射
DispatcherServlet中URI为[/ui/$%7bstarrjs%7D]的HTTP请求
名称“dispatcher”17:03:10.014[http-nio-8080-exec-7]调试
org.springframework.web.servlet.DispatcherServlet-成功
已完成的请求17:03:10.018[http-nio-8080-exec-4]调试
org.springframework.web.servlet.DispatcherServlet-DispatcherServlet
名为“dispatcher”的正在处理的GET请求
[/ui/$%7BcustomJS%7D]17:03:10.018[http-nio-8080-exec-4]调试
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
-查找路径/${customJS}17:03:10.019[http-nio-8080-exec-4]调试的处理程序方法
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
-未找到[/${customJS}]17:03:10.019[http-nio-8080-exec-4]警告的处理程序方法
org.springframework.web.servlet.PageNotFound-未找到的映射
DispatcherServlet中URI为[/ui/$%7BcustomJS%7D]的HTTP请求
名称“dispatcher”17:03:10.019[http-nio-8080-exec-4]调试
org.springframework.web.servlet.DispatcherServlet-成功
已完成的请求
试着用这种方法,它对我有效 项目结构:
src/main/webapp/static/[css,js,images]
src/main/webapp/WEB-INF/views/[for all .jsp pages]
配置
@Configuration
@ComponentScan(basePackages = "parent package name where all packages reside")
public class ApplicationConfiguration 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) {
// when static resources are inside resources folder under WEB-INF
// registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/");
// when static resources are inside static folder under webapp
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}
}
让DispatcherServlet知道如何打包
import javax.servlet.Filter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { ApplicationConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
import javax.servlet.Filter;
导入org.springframework.web.servlet.support.AbstractAnnotationConfigDispatchersServletInitializer;
公共类应用程序初始化器扩展了AbstractAnnotationConfigDispatcherServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回新类[]{ApplicationConfiguration.Class};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回null;
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
现在把这些叫做视图,就像
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link href="<c:url value='/static/css/application.css' />" rel="stylesheet"></link>
</head>
将其添加到pom.xml中
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
javax.servlet
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
希望这能对你有所帮助。试试这个方法,它对我很有用 项目结构:
src/main/webapp/static/[css,js,images]
src/main/webapp/WEB-INF/views/[for all .jsp pages]
配置
@Configuration
@ComponentScan(basePackages = "parent package name where all packages reside")
public class ApplicationConfiguration 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) {
// when static resources are inside resources folder under WEB-INF
// registry.addResourceHandler("/resources/**").addResourceLocations("/WEB-INF/resources/");
// when static resources are inside static folder under webapp
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
}
}
让DispatcherServlet知道如何打包
import javax.servlet.Filter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { ApplicationConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
import javax.servlet.Filter;
导入org.springframework.web.servlet.support.AbstractAnnotationConfigDispatchersServletInitializer;
公共类应用程序初始化器扩展了AbstractAnnotationConfigDispatcherServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回新类[]{ApplicationConfiguration.Class};
}
@凌驾
受保护类[]getServletConfigClasses(){
返回null;
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
}
现在把这些叫做视图,就像
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link href="<c:url value='/static/css/application.css' />" rel="stylesheet"></link>
</head>
将其添加到pom.xml中
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
javax.servlet
jstl
1.2
javax.servlet
javax.servlet-api
3.1.0
希望这能对您有所帮助。在我的Spring Boot项目中,我试图将WAR文件部署到TOMCAT中,但它无法识别资源路径,它抛出了404 file not found错误,但当我作为SpringBootApplication运行时,它工作正常,仅在将WAR文件部署到TOMCAT中时才会出现问题。所以最后我透露了这个问题,现在它在我的专业版上运行得非常好