【问题标题】:Getting attribute from java class in Servlet(doesn't see forwarded request in JSP) [duplicate]从Servlet中的java类获取属性(在JSP中看不到转发的请求)[重复]
【发布时间】:2015-10-26 13:28:58
【问题描述】:

我正在研究 Head First Servlet 和 JSP,但遇到了这个问题。 该主题从本书的第 480 页开始。 我正在尝试开发没有 IDE 的 servlet。 此 servlet 应以表格形式显示电影列表。

这是我的代码 MoviesList.java:

package com.model;
import javax.servlet.*;
import javax.servlet.http.*;

public class MovieList extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse res){
        String[] movieList = {"Hannah Montana", "Kill Bill", "Terminator 2"};
        req.setAttribute("movieList", movieList);
    }
}

Show.jsp:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html><body>
<strong> Movie list:</strong>
<br><br>

<table>
     <c:forEach var="movie" items="${movieList}">
          <tr>
            <td>${movie}</td>
         </tr>
    </c:ForEach>    
</table>

</html></body>

Tomcat8 在浏览器中显示的内容:

type Exception report

消息:绝对 uri:http://java.sun.com/jsp/jstl/core 无法在 web.xml 或随此应用程序部署的 jar 文件中解析

描述:服务器遇到一个内部错误,导致它无法完成此请求。

exception:

org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:277)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:75)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:243)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:124)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:411)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1430)
    org.apache.jasper.compiler.Parser.parse(Parser.java:139)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

注意 Apache Tomcat/8.0.24 日志中提供了根本原因的完整堆栈跟踪。

我无法将 java 类中的代码绑定到 jsp。我错过了 DD 还是?

Now I solved it, thanks a lot!
I have got nex question:
It renders only text "Movie list:" and nothing more
How I fix that?

现在我更改了我的 servlet 代码,因此它将请求转发给 Show.jsp 并重新编译了我的类,重新启动了 tomcat,但它仍然无法工作......

req.setAttribute("movieList", movieList);


     try {

  getServletConfig().getServletContext().getRequestDispatcher(

    "Show.jsp").forward(req ,res );



} catch (ServletException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

} catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

}

【问题讨论】:

  • stackoverflow.com/tags/jstl/info 你把罐子放在哪儿了?
  • 嗨,你是什么意思?
  • 我的意思是阅读信息页面并下载 JSTL jar 并放入您的 lib 文件夹中。
  • 这个通过了吗? javax.servlet.jsp.jstl-1.2.1-javadoc
  • 谢谢,已经解决了!但现在的问题是我的电影去哪儿了!它只显示“电影列表:”,仅此而已

标签: java spring jsp tomcat servlets


【解决方案1】:

默认情况下,Tomcat 不会包含 JSTL 库。 因此,您应该下载 JSTL jar(standard.jar 和 jstl.jar)并将它们放在应用程序的 WEB-INF/lib 文件夹中。

【讨论】:

  • 我已将 javax.servlet.jsp.jstl-1.2.1-javadoc 添加到我的 WEB-INF/lib 文件夹中,现在它显示:描述服务器遇到内部错误,阻止它完成此操作要求。异常 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.Show_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:176) .......我错了吗下载文件?我在search.maven.org/#browse|-1002239620 上得到了它
  • 看来我取得了一些进展。刚刚阅读了link 关于 JSTL 线程的内容,现在它向我展示了下一个:/Show.jsp (line: 11, column: 1) 结束标记“</c:ForEach”是不平衡的
  • 非常感谢!我解决了这个 结束标记必须是小写:!它现在呈现“电影列表:”,仅此而已......(我错过了范围还是?
猜你喜欢
  • 2011-02-28
  • 2015-04-18
  • 1970-01-01
  • 2014-02-25
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多