这是关于accessing resources in jsp page of spring mvc app的问题的后续跟进 感谢@ kmb385我能解决这个问题,但现在我的JSP文件中出现了以下eclipse错误 javax.servlet.jsp.JspException无法解析为类型 和
javax.servlet.jsp.PageContext无法解析为类型
按照kmb385的建议,这是我的控制器:
@Controller
public class AdminController {
@RequestMapping("/")
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView model = new ModelAndView("index");
model.addObject("msg", "hello world");
return model;
}
}
这是我的index.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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!-- <link type="text/css" rel="stylesheet" href="css/style.css"/> -->
<style type="text/css">
<%@include file="css/style.css" %>
</style>
<title>My Project - MainPage</title>
</head>
<body>
<h2 class="main_heading2">My Project - MainPage</h2>
<div style="float: right; width: 30%; text-align: center">
<p style="float:left;">an image should be here</p>
<img src="images/logo.jpg" alt="Logo"/>
<img src="${pageContext.servletContext.contextPath}/resources/images/logo.jpg" />
</div>
</body>
我通过在JSP验证器中禁用它来遇到“解决方案”,但除非您能给出合理的理由,否则请不要建议。我宁愿正确纠正这个问题
任何帮助表示赞赏
更新 按照@kmb385的要求构建路径屏幕抓取
答案 0 :(得分:35)
尝试在您提供的pom.xml中设置servlet-api
依赖项。这个jar可能与tomcat提供的servlet-api.jar冲突。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
还要确保包含jsp-api依赖项,再次设置为提供:
<!-- Servlet -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
通过右键单击项目&gt;确保所有maven依赖项都用于构建项目。属性。在部署程序集选项卡上,单击“添加”按钮,然后单击“Java构建路径条目”,再单击“Maven依赖项”,最后单击“完成”。
您可能还需要将maven依赖项添加到构建路径。右键单击您的项目&gt; Maven&gt;更新项目配置。
答案 1 :(得分:6)
如果您已经下载了maven中的所有依赖项并且错误仍然没有消失,请按照以下步骤操作:
这应该有用。
答案 2 :(得分:2)
尝试导入该课程。
修改你的jsp的第一行看起来像这样;
<%@ page language="java" import="javax.servlet.jsp.PageContext" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
答案 3 :(得分:1)
添加到pom.xml依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<强> JSP:强>
确保在标记之前添加jsp:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
获取JSP上下文:
<c:set var="contextPath" value="${pageContext.request.contextPath}"/>
导入样式css:
<link type="text/css" rel="stylesheet" href="${contextPath}/css/yourCssFile.css"/>
<强>分配器一小服务程序:强>
在“spring-dispatcher-servlet.xml”上添加以下行:
<beans xmlns="... xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="...
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:resources mapping="/resources/**" location="/resources/css/" />
也许,你需要添加这个适配器:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> [Optional]
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="0"/>
</bean>
答案 4 :(得分:0)
如何解决javax.servlet.jsp.PageContext无法解析为类型
1: - 选择您的项目并右键单击
2: - 转到属性
3: - 点击Targated Runtimes
4: - 检查标记&#34; Apache Tomcat v8.0&#34;
我在我的案例中使用Apache v8.0
答案 5 :(得分:0)
This will solve the problem
<!-- Need this to compile JSP -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
答案 6 :(得分:0)
此替代方法对我<%=request.getContextPath()%>
有效,它获取了Application上下文。