我正在学习如何使用Eclipse和Tomcat进行maven动态Web应用程序。应用程序在没有servlet的情况下工作,但是当我尝试在我的代码中引入它时,我收到了错误。我调试找到问题。我认为,这些是相关的观点:
为了能够部署war文件,我向maven添加了依赖“servlet-api”的提供范围,如下所示: How to compile a servlet for Tomcat in command line? error: package javax.servlet does not exist
错误发生在MostrarLibros.jsp中。如果我使用没有servlet的下一个代码,一切正常:
listaDeLibros = Libro.buscarTodos();
但如果我将该行更改为下面提供的那一行,则会出现异常。实际上,变量“listaDeCategorias”在运行后为空(我调试了它):
listaDeCategorias = (List<String>) request.getAttribute("listaDeCategorias");
我在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 - 项目结构:
是否因为应用程序找不到servlet?在这种情况下,为什么找不到?