我有一个论坛,用户可以在那里注册他们的详细信息,这些信息会被发送到一个Servlet,然后是一个Java bean。我遇到的问题是,当请求Java bean时,我无法让数据显示在另一个JSP页面上。因此,
论坛被发布到一个Servlet(
CreateAccount.jsp
允许用户输入论坛信息。论坛被发布到一个Servlet(
RegisterDetails.java
),并将其发送到一个Java bean(Register.java
)。然后error.jsp
从bean中显示这些数据。以下是我的代码。当前代码将每个值显示为null
。
Register.java
:package com.cassandra.MrBlabber.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Register")
public class Register extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Register() {
super();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RegisterDetails details = new RegisterDetails();
details.setName(request.getParameter("FullName"));
details.setEmail(request.getParameter("EmailAddress"));
details.setPassword(request.getParameter("Password"));
details.setUsername(request.getParameter("Username"));
request.setAttribute("details", details);
getServletContext().getRequestDispatcher("/WEB-INF/Error.jsp").forward(request, response);
}
}
RegisterDetails.java
:
package com.cassandra.MrBlabber.servlets;
public class RegisterDetails {
private String fullName;
private String emailAddress;
private String password;
private String username;
public RegisterDetails() {}
public String getName() { return fullName; }
public String getEmailAddress() { return emailAddress; }
public String getPassword() { return password; }
public String getUsername() { return username; }
public void setName(String value) { this.fullName = value; }
public void setEmail(String value) { this.emailAddress = value; }
public void setPassword(String value) { this.password = value; }
public void setUsername(String value) { this.username = value; }
}
CreateAccount.jsp
:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="/MrBlabber/css/stylesheet.css"/>
<title>MrBlabber/Create an Account</title>
</head>
<body>
<!-- Section -->
<section>
<!-- Sign Up -->
<article>
<div id="articleWrapper">
<h3>No Account? Sign Up</h3>
<form id="createAccount" onsubmit="return validateForm();" action="Register" name="createAccount" method="POST">
<input type="text" id="name" name="FullName" placeholder="Full Name"/>
<input type="text" id="email" name="EmailAddress" placeholder="Email Address"/>
<input type="password" id="password" name="Password" placeholder="Create a password"/>
<input type="text" id="username" name="Username" placeholder="Choose your username"/>
<input type="submit" value="Sign up for MrBlabber"/>
</form>
</div>
</article>
<article>
<div id="errorMessage" class="errorMessage">
<script src="/MrBlabber/javascript/CreateAccountValidation.js" type="text/javascript"></script>
</div>
</article>
</section>
</body>
</html>
Error.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="com.cassandra.MrBlabber.servlets.RegisterDetails" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>shit</h1>
<jsp:useBean id="RegisterDetails" class="com.cassandra.MrBlabber.servlets.RegisterDetails" scope="session"/>
<jsp:setProperty name="RegisterDetails" property="*"/>
<h1>
Name: <%=RegisterDetails.getName()%><br>
Email: <%=RegisterDetails.getEmailAddress()%><br>
Password: <%=RegisterDetails.getPassword()%><br>
Username: <%=RegisterDetails.getUsername()%><br>
</h1>
</body>
</html>
RegisterDetails
的新实例,因此<jsp:useBean>
标记无效。 您可以安全地将其删除。 您可以访问bean的属性,例如((RegisterDetails)request.getAttribute("details")).getfullName()
,以及其他字段。 传统上,输入字段的名称应以小写字母开头。 此外,如果您使用JSTL / EL,则可以像${details.fullName}
,${details.emailAddress}
,${details.password}
和${details.username}
一样简单地获取RegisterDetails
的属性。 - Tiny