0

我正在学习如何使用 Eclipse 和 Tomcat 做一个 Maven 动态 Web 应用程序。该应用程序在没有 servlet 的情况下工作,但是当我尝试在我的代码中引入它时出现该错误。我调试发现问题。我认为,这些是相关的点:

  1. 为了能够部署一个war文件,我在maven中添加了具有提供范围的依赖“servlet-api”,如下所示: How to compile a servlet for Tomcat in command line?错误:包 javax.servlet 不存在

  2. 错误出现在 MostrarLibros.jsp 中。如果我使用没有 servlet 的下一个代码,一切正常:

    listaDeLibros = Libro.buscarTodos();
    

    但是,如果我将该行更改为下面提供的行,则会出现异常。实际上,变量“listaDeCategorias”在运行后为空(我调试了它):

    listaDeCategorias = (List<String>) request.getAttribute("listaDeCategorias");
    
  3. 我在 Servlet ControladorLibros.java 中添加了一个断点,但调试器永远不会停在那里。代码:

    package com.arquitecturajava;
    
    import java.io.IOException;
    import java.util.List;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ControladorLibros extends HttpServlet {
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            RequestDispatcher despachador = null;
            if (request.getServletPath().equals("/MostrarLibros.do")) {
                List<Libro> listaDeLibros = Libro.buscarTodos();
                List<String> listaDeCategorias = Libro.buscarTodasLasCategorias();
                request.setAttribute("listaDeLibros", listaDeLibros);
                request.setAttribute("listaDeCategorias", listaDeCategorias);
                despachador = request.getRequestDispatcher("MostrarLibros.jsp");
            } else if ...
    
            (...)
    
            request.setAttribute("listaDeLibros", listaDeLibros);
                request.setAttribute("listaDeCategorias", listaDeCategorias);
                despachador =    request.
                        getRequestDispatcher("MostrarLibros.jsp");
            }
            despachador.forward(request, response);
        }
    }
    

4 - web.xml:

<servlet>
    <description></description>
    <display-name>ControladorLibros</display-name>
    <servlet-name>ControladorLibros</servlet-name>
    <servlet-class>com.arquitecturajava.ControladorLibros</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ControladorLibros</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

5 - 项目结构:

Eclipse中的项目结构

是因为应用程序找不到 servlet 吗?在这种情况下,为什么找不到?

4

0 回答 0