从Java Bean获取数据以显示在JSP页面上 [英] Getting data from the Java bean to be displayed on a JSP page
问题描述
我有一个论坛,用户可以在其中注册详细信息,然后将其发送到Servlet,然后发送给Java Bean.我遇到的麻烦是,当请求Java bean时,我无法使数据显示在另一个JSP页面上.因此CreateAccount.jsp
允许用户输入论坛.
I've got a forum where a user can register there details and this gets sent to a Servlet and then a Java bean. What I'm having trouble with is that I can't get the data to be displayed on another JSP page when the Java bean is requested. So CreateAccount.jsp
allows the user to input into the forum.
该论坛已发布到Servlet(RegisterDetails.java
)并将其发送到Java Bean(Register.java
).然后error.jsp
显示来自bean的数据.下面是我的代码.当前代码将每个值显示为null
.
The forum is posted to a Servlet(RegisterDetails.java
) and sends it to a Java bean (Register.java
). Then error.jsp
shows this data from the bean. Below is my code. The current code shows each value as 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
不是bean,因为它没有实现java.io.Serializable
接口.
First of all, your class RegisterDetails
is not a bean because it does not implement the java.io.Serializable
interface.
其次,您确实需要对来自请求的数据进行某种类型的输入清理(以防止SQL/HTML/跨站点脚本注入),如果您要使用bean,我想应该把它放在在bean类中.
Secondly, you really need to implement some kind of input sanitization for the data coming from the request (to prevent SQL/HTML/Cross-site scripting injections), and if you are going to use beans I guess you should put that inside the bean class.
第三,您也可以省去bean的概念(这意味着您不需要jsp:useBean),只需将RegisterDetails类的实例作为常规类对象保存到会话中,然后就可以将其从在任何页面上的会话,如下所示:
Third, you could also dispense with the bean concept (meaning you won't need jsp:useBean) and just save the instance of the class RegisterDetails as a regular class object into the session, and then you can pull it from the session on any page as follows:
在servlet中:
session.setAttribute("details", details); //saving your object to the session
在任何其他页面中:
RegisterDetails details = (RegisterDetails)session.getAttribute("details");
这篇关于从Java Bean获取数据以显示在JSP页面上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!