尽管我正在研究Murach的Java Servlet和JSP,但对HTML格式哈哈有疑问
在index.jsp上提交表单后,将调用EmailListServlet,它会进行一些验证,如果一切正常,则将调用thank.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>
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);
}
}
<!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>
问题是我不明白为什么当我在thank.jsp上提交表单时,一旦action元素为空,它将返回index.jsp。 你能告诉我我放手吗?