如何在上下文根调用 servlet,welcome-file-list 不起作用 [重复]

问题描述 投票:0回答:1

我是 MVC 新手,我正在遵循此教程。页面加载时,我很难默认显示记录。这是我在当前代码中看到的

我的 sevlet 中的两个方法,insertUser 和 listAllUsers 方法都可以工作,但页面加载时默认情况下不会执行 listAllUsers。

如何在网站首次加载时自动显示内容?

这是我的servlet

@WebServlet("/")
public class SvPeople extends HttpServlet {

    private UserDAO userDAO;

    public void init() {
        String jdbcURL = "jdbc:mysql://localhost:3306/dbpeople";
        String jdbcUsername = "root";
        String jdbcPassword = "1234";
        userDAO = new UserDAO(jdbcURL, jdbcUsername, jdbcPassword);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String action = request.getServletPath();
        try {
            switch (action) {
                case "/insert":
                    insertUser(request, response);
                    break;
                default:
                    listAllUsers(request, response);
                    break;
            }

        } catch (SQLException ex) {
            throw new ServletException(ex);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

    protected void listAllUsers(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        List<User> listUser = userDAO.listUsers();
        request.setAttribute("listUser", listUser);
        RequestDispatcher dispatcher = request.getRequestDispatcher("list-users.jsp");
        dispatcher.forward(request, response);
    }

    private void insertUser(HttpServletRequest request, HttpServletResponse response)
            throws SQLException, IOException {
        String name = request.getParameter("name");

        User newUser = new User(name);
        userDAO.insertUser(newUser);
        response.sendRedirect("list-users.jsp");
    }
}

这是我正在使用的 JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Users</title>
    </head>
    <body>
        <h1>My form!</h1>
        <c:forEach var="user" items="${listUser}">
            <ul>
                <li><c:out value="${user.id}"></c:out></li>
                <li><c:out value="${user.name}"></c:out></li>
                </ul>
        </c:forEach>


        <form action="insert" method="POST">

            Name: <input type="text" name="name" placeholder="name">
            <input type="submit" name="submit-button">
        </form>
    </body>
</html>

最后,我不知道问题是否来自没有index.jsp作为主页,因为我使用list-user.jsp作为欢迎文件。这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="6.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd">
    <servlet>
        <servlet-name>SvPeople</servlet-name>
        <servlet-class>com.mycompany.crudtest.servlets.SvPeople</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SvPeople</servlet-name>
        <url-pattern>/SvPeople</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>list-users.jsp</welcome-file>
    </welcome-file-list>
</web-app>

提前致谢。

servlets
1个回答
0
投票

评论中建议的解决方案是从 web.xml 中删除 。

<welcome-file-list>
     <welcome-file>list-users.jsp</welcome-file>
</welcome-file-list>

这就是 web.xml 的样子。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="6.0" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd">
    <servlet>
        <servlet-name>SvPeople</servlet-name>
        <servlet-class>com.mycompany.crudtest.servlets.SvPeople</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SvPeople</servlet-name>
        <url-pattern>/SvPeople</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
© www.soinside.com 2019 - 2024. All rights reserved.