当我加载我的JSP页面home.jsp时,我包含样式表signIn.css。但是在我无法加载资源的地方发生了一些事情:服务器响应了我的样式表状态404(Not Found)。当我的CSS文件存储在/customerPortal/src/main/webapp/WEB-INF/signIn.css时,我认为我的spring调度程序servlet正在寻找URI /customerPortal/signIn.css(没有使用spring我没有问题) 。我认为它与getServletMappings有关,它会切断文件位置。
我的CSS页面与home.jsp页面位于完全相同的位置。我还设置了SpringMvcInitializer类和MvcConfiguration类,因为我正在使用Spring启动。我也有一个家庭控制器。我没有使用spring-dispatcher-servlet.xml。
//MvcConfiguration.java
package Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import ShoppingCart.Cart;
@Configuration
@ComponentScan(basePackages="Controllers/")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver getViewResolver()
{
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".jsp");
return resolver;
}
@Bean
public Cart getCart(){
return new Cart();
}
}
//SpringMvcInitializer.java
package Configuration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {MvcConfiguration.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
//home.JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@include file="header.jsp" %>
<link rel="stylesheet" href="/src/main/webapp/WEB-INF/signIn.css">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body
</html>
我的jsp和css页面存储在/customerPortal/src/main/webapp/WEB-INF/home.jsp /customerPortal/src/main/webapp/WEB-INF/signIn.css中
但是在我的eclipse控制台上,我得到以下内容: - 名为'dispatcher'的DispatcherServlet处理[/customerPortal/signIn.css]的GET请求 - 没有找到[/signIn.css]的处理程序方法 - 找不到HTTP请求的映射DispatcherServlet中的URI [/customerPortal/signIn.css],名称为“dispatcher”
在我的Chrome控制台浏览器上,我得到:获取http://localhost:8035/customerPortal/signIn.css net :: ERR_ABORTED 404(未找到)
当我的CSS文件存储在/ customer Portal / src / main / webapp / WEB-INF / signIn.css时,为什么要查找URI /客户门户/签到In.css?
为了您的信息,您不能使用URL直接访问WEB-INF,Java servlet将不允许它。此外,不要在WEB-INF下放置资源
你现在该怎么办?
在webapp下创建一个名为,resources的文件夹,然后为css(resources / css)创建一个文件夹。然后将所有css放在css文件夹下。并创建另一个文件夹js并将所有JavaScript文件放在那里。
然后将此方法添加到您的MvcConfiguration类。
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
现在你在资源中拥有你的css,然后通过它访问它
<link rel="stylesheet" href="resources/css/signIn.css" />
解决当前问题,但不建议将静态资源放在WEB-INF下。
将您的<link rel="stylesheet" href="/src/main/webapp/WEB-INF/signIn.css">
代码更改为此
<style><%@include file="/WEB-INF/signIn.css"%></style>
祝你好运......!快乐的编码..!