无法获取JSTL标记以与Tomcat 9一起使用[重复]

von4xj4u  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(126)

此问题在此处已有答案

How to install JSTL? The absolute uri: http://java.sun.com/jstl/core cannot be resolved(19个答案)
去年关闭了。
我用的是tomcat 9,但JSTL标签无法正常工作。我尝试了所有的解决方案,但似乎都不起作用。因此,我几乎要放弃我3个月的JSP学习了。我尝试的任何方法都不能使它正常工作。
我不确定是什么原因造成的。我不确定哪些版本的JSTL和web.xml与Tomcat 9兼容。我没有使用maven。

编辑:

通过下载最新的jstl-1.2.jar并将其添加到我的WEB-INF/lib文件夹中,我终于能够解决result.jsp文件中JSTL标记的功能问题。因此,我能够使标准forEach标记工作,但无法从servlet接收数组。我怀疑这与我的web.xml版本规范有关,我使用的是Tomcat 7和jstl-1.2。
在我的情况下,什么是合适的web.xml配置?
我收到此错误
类型例外报表
消息绝对URI:无法在web.xml或与此应用程序一起部署的jar文件中解析[http://java.sun.com/jsp/jstl/core]
描述服务器遇到意外情况,无法完成请求。
例外情况

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:54)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:294)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:81)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:122)
    org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:435)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:493)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450)
    org.apache.jasper.compiler.Parser.parse(Parser.java:144)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:206)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:391)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:367)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Note The full stack trace of the root cause is available in the server logs.

我的Servlet:

package com;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class MovieList extends HttpServlet {
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        String [] movieList = {"movie 1","movie 2","movie 3"};
        request.setAttribute("movieList", movieList);

        RequestDispatcher view = request.getRequestDispatcher("result.jsp");
        view.forward(request,response);
    }
}

我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
   http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>Tester</servlet-name>
    <servlet-class>Tester</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Tester</servlet-name>
    <url-pattern>/Tester</url-pattern>
  </servlet-mapping>


</web-app>

我的检视
第一个
"我得到了这个结果"

这是我从servlet中得到的

My environment

wlzqhblo

wlzqhblo1#

首先,我高度怀疑你在jsp文件的顶部漏掉了这个:

<%@ page isELIgnored="false" %>

第二,我认为需要将servlet从“doPost”更改为“doGet”
如果它仍然不能工作,我做了一个演示给你,我希望你知道maven和git

https://github.com/632691987/demo1.git

如果你还是不明白,给我留言通过以下链接:

https://github.com/632691987/demo1/issues/new

最后,我想给予一个笑话:19年前,当我第一次学习C语言中的“for”时,我想给予,因为我不懂!:)
我当了15年的程序员!

相关问题