【问题标题】:A JSP problem, first JSP error一个JSP问题,第一个JSP错误
【发布时间】:2010-08-05 19:12:25
【问题描述】:

在使用这些框架几年后,我有了我的第一个 JSP 页面。看来我不知道如何编写 JSP 了。

我用的是windows,tomcat 6.0.29,代码附上。我收到以下错误。然后我检查编译的 hello_jsp,第 22 行指向以下几行。我在类路径中有 el-api.jar、jasper-el.jar。即使我在jsp页面中评论java部分,它也有同样的错误。我的 web.xml 有问题吗?

hello_jsp:

public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }



java.lang.NullPointerException
      org.apache.jsp.jsp.hello_jsp._jspInit(hello_jsp.java:22)
      org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
      org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

hello.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">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="hello" scope="session" class="com.juhani.uml.test.webapp.jsp.HelloTest" />

Let's say: <%= hello.getGreetings() %>


</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>Simple UML Tool Test</display-name>

    <servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>com.juhani.uml.test.webapp.HelloWorld</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

    <servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>

    <session-config>
<session-timeout>30</session-timeout>
</session-config>

<!--
    <taglib>
<taglib-uri>/com/sun/web/taglibs/cache</taglib-uri>
<taglib-location>/WEB-INF/sun-web-cache.tld</taglib-location>
</taglib>
-->

</web-app>

【问题讨论】:

    标签: jsp


    【解决方案1】:

    您的问题是您将特定于服务器的库复制到您的 /WEB-INF/lib 中,因为它似乎解决了编译错误。然而,这是错误的解决方案。你仍然会在运行时遇到麻烦,因为/WEB-INF/lib 中的库在类加载中获得优先权,并且由于位置错误,一些必需的东西丢失了,一切都会中断。

    您应该将这些特定于服务器的库保留在它们最初所属的位置,而不是移动/复制它们。您需要做的就是在编译时类路径中包含它们的磁盘文件系统路径。一般的 IDE(Eclipse、Netbeans 等)只需单击一下即可完成。

    【讨论】:

      【解决方案2】:

      我解决了。我从战争文件中排除了 servlet-api.jar。我之所以会这么想,是因为我将 .jsp 文件移动到了 tomcat 根目录。然后就可以了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多