html - 为什么表单动作空返回上一页?
问题描述
虽然我正在学习 Murach 的 Java Servlet 和 JSP,但我有一个关于 HTML 格式的问题哈哈
在 index.jsp 上提交表单后,将调用 EmailListServlet,它会进行一些验证,如果一切正常,则调用Thanks.jsp。
- 索引.jsp 文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Murach's Java Servlets and JSP</title>
<link rel="stylesheet" href="styles/main.css" type="text/css"/>
</head>
<body>
<h1>Join our email list</h1>
<p>To join our email list, enter your name and
email address below.</p>
<p><i>${message}</i></p>
<form action="emailList" method="post">
<input type="hidden" name="action" value="add">
<label class="pad_top">Email:</label>
<input type="email" name="email" value="${user.email}"
required><br>
<label class="pad_top">First Name:</label>
<input type="text" name="firstName" value="${user.firstName}"
required><br>
<label class="pad_top">Last Name:</label>
<input type="text" name="lastName" value="${user.lastName}"
required><br>
<label> </label>
<input type="submit" value="Join Now" class="margin_left">
</form>
</body>
</html>
- EmailLisServlet
package murach.email;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import murach.business.User;
import murach.data.UserDB;
public class EmailListServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String url = "/index.html";
// get current action
String action = request.getParameter("action");
if (action == null) {
action = "join"; // default action
}
// perform action and set URL to appropriate page
if (action.equals("join")) {
url = "/index.jsp"; // the "join" page
}
else if (action.equals("add")) {
// get parameters from the request
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String email = request.getParameter("email");
// store data in User object
User user = new User(firstName, lastName, email);
// validate the parameters
String message;
if (UserDB.emailExists(user.getEmail())) {
message = "This email address already exists.<br>" +
"Please enter another email address.";
url = "/index.jsp";
}
else {
message = "";
url = "/thanks.jsp";
UserDB.insert(user);
}
request.setAttribute("user", user);
request.setAttribute("message", message);
}
getServletContext()
.getRequestDispatcher(url)
.forward(request, response);
}
}
- 谢谢.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Murach's Java Servlets and JSP</title>
<link rel="stylesheet" href="styles/main.css" type="text/css"/>
</head>
<body>
<h1>Thanks for joining our email list</h1>
<p>Here is the information that you entered:</p>
<label>Email:</label>
<span>${user.email}</span><br>
<label>First Name:</label>
<span>${user.firstName}</span><br>
<label>Last Name:</label>
<span>${user.lastName}</span><br>
<p>To enter another email address, click on the Back
button in your browser or the Return button shown
below.</p>
<form action="" method="post">
<input type="hidden" name="action" value="join">
<input type="submit" value="Return">
</form>
</body>
</html>
问题是我不明白为什么当我在thanks.jsp 上提交表单时,一旦action 元素为空,它就会返回到index.jsp。你能告诉我我要放弃什么吗?
解决方案
推荐阅读
- vba - 将列转换为单列
- python - 在python中获取1到100万之间随机数的最快方法
- angular - 角度 httpClient 中的捕获错误仍然记录 401
- c++ - 为什么我在尝试将数组中的值写入 CSV 文件时会出现段错误
- css - CSS - 显示:表格单元格无法正常工作
- flask - flask socketIO 多处理值
- python - 无法使用 python 在 for 循环中解析 .msg 文件
- css - 使用 d-inline-block 引导内联
- python - 键入“(”时python IDLE关闭
- python - 从 blablacar 网站提取 5000 个骑行细节