jsp方法getServletContext()未定义为eclipse中的类型

时间:2013-11-12 16:12:09

标签: eclipse jsp scriptlet

我正在使用eclipse助手进行Java EE开发。 我正在开发一个Struts Web应用程序。 在JSP页面中,我使用这样的代码

<script type="text/javascript" src="<%out.print(getServletContext().getContextPath());%>/js/jquery.js"></script>
<link rel="stylesheet" href="<%out.print(getServletContext().getContextPath());%>/css/home.css" />

当我运行我的服务器时,此页面正常工作。但是,Eclipse在getServletContext()

上显示错误
  

方法getServletContext()未定义类型    __2F_Compiler_2F_WebContent_2F_pages_2F_home_2E_jsp

以下是截图:

screenshot

因为页面正常工作,我想在Eclipse中隐藏此错误。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

我不能代表Eclipse的错误,但在这种特定情况下,您应该使用隐式JSP scriptlet变量application而不是使用HttpServlet - 继承的方法。

<script type="text/javascript" src="<%out.print(application.getContextPath());%>/js/jquery.js"></script>
<link rel="stylesheet" href="<%out.print(application.getContextPath());%>/css/home.css" />

无关具体问题,这是一种90年代编写JSP的方式,自从几十年前发布的JSP 2.0以来,这是officially discouraged。你确定在学习JSP的同时阅读最新的资源吗?你应该使用EL表达式。

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/home.css" />

或者,通过<c:set>保存样板:

<c:set var="root" value="${pageContext.request.contextPath}" />
...
<script type="text/javascript" src="${root}/js/jquery.js"></script>
<link rel="stylesheet" href="${root}/css/home.css" />

另见:

答案 1 :(得分:0)

如果您使用Tomcat 6.0,则应添加扩展Servlet。

  

项目 - &gt;属性 - >添加库 - >服务器运行时

它会添加apache的lib。