我是 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>
提前致谢。
评论中建议的解决方案是从 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>