从Java Bean获取数据以显示在JSP页面上 [英] Getting data from the Java bean to be displayed on a JSP page

查看:87
本文介绍了从Java Bean获取数据以显示在JSP页面上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个论坛,用户可以在其中注册详细信息,然后将其发送到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆