Servlets with JavaBeans

女生的网名这么多〃 提交于 2020-01-01 12:02:10

问题


I have a set of three servlets, each one of them has a form with radio buttons that passes its values to the next servlet. What I am trying to do is to make a JavaBean class to use with the servlets and keep the state of them and the choices of the radio buttons while going from one servlet to another. Could anyone suggest some sample code for the JavaBean please?

Here is some of the first servlet code:

(The other two servlets have same code for other questions)

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet 1</title>");            
        out.println("</head>");
        out.println("<form  id=\"form1\" action = \"Servlet2\" method = \"POST\">");
        out.println("<input type = \"radio\" name = \"Q1\" value = \"Answer 1\"> Answer 1 <br />\n" +
                    "<input type = \"radio\" name = \"Q1\" value = \"Answer 2\"> Answer 2 <br />\n" +
                    "<input type = \"radio\" name = \"Q1\" value = \"Answer 3\"> Answer 3 <br /> <br />");

        out.println("<input type = \"radio\" name = \"Q2\" value = \"Answer 1\"> Answer 1 <br />\n" +
                    "<input type = \"radio\" name = \"Q2\" value = \"Answer 2\"> Answer 2 <br />\n" +
                    "<input type = \"radio\" name = \"Q2\" value = \"Answer 3\"> Answer 3 <br /> <br />");

        out.println("<input type = \"radio\" name = \"Q3\" value = \"Answer 1\"> Answer 1 <br />\n" +
                    "<input type = \"radio\" name = \"Q3\" value = \"Answer 2\"> Answer 2 <br />\n" +
                    "<input type = \"radio\" name = \"Q3\" value = \"Answer 3\"> Answer 3 <br /> <br />");
        out.println("<input type = \"submit\" value = \"Next\">");
        out.println("</body>");
        out.println("</html>");
    } finally {            
        out.close();
    }
}

Thank you.


回答1:


Here is a simple JavaBean class example:

import java.io.Serializable;

public class AnswersBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private String answer1;

    private String answer2;

    private String answer3;

    public String getAnswer1() {
        return answer1;
    }

    public void setAnswer1(String answer1) {
        this.answer1 = answer1;
    }

    public String getAnswer2() {
        return answer2;
    }

    public void setAnswer2(String answer2) {
        this.answer2 = answer2;
    }

    public String getAnswer3() {
        return answer3;
    }

    public void setAnswer3(String answer3) {
        this.answer3 = question3;
    }

}


In your second Servlet you can create and populate your bean with the required information:

package com.example;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

import com.example.AnswersBean;

public class Servlet2 extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
        String answer1 = request.getParameter("Q1");
        String answer2 = request.getParameter("Q2");
        String answer3 = request.getParameter("Q3");

        // you may check if the answers exist and validate them

        AnswersBean answersBean = new AnswersBean();
        answersBean.setAnswer1(answer1);
        answersBean.setAnswer2(answer2);
        answersBean.setAnswer3(answer3);

        // store bean in session
        request.getSession().setAttribute("answers", answersBean);

        // you now can forward to some view, for example some results.jsp
        request.getRequestDispatcher("/results.jsp").forward(request, response);
    }
}


Now in the third Servlet you can check if the session contains the bean:

package com.example;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

import com.example.AnswersBean;

public class Servlet3 extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
        AnswersBean answers = request.getSession().getAttribute("answers");

        if (answers == null) {
            // no bean was set in session
                    // do something
        } else {
            // there is a bean in session
                    // do something
        }

        // you now can forward to some view, for example some foo.jsp
        request.getRequestDispatcher("/foo.jsp").forward(request, response);

        // or do something else
    }
}


Or you can check the bean right inside some JSP page using Expression Language (EL) like this:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
    <title>Answers</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
    <c:choose>
        <c:when test="${empty answers}">
            <h3>There are currently no answers.</h3>
        </c:when>
        <c:otherwise>
            <h3>First answer:  ${answers.question1}</h3>
            <h3>Second answer: ${answers.question2}</h3> 
            <h3>Third answer:  ${answers.question3}</h3>
        </c:otherwise>
    </c:choose>
</body>
</html>

P.S.
Read this:
JavaBeans
JavaBeans Specification
Oracle's JavaBeans tutorials

UPDATE
I suggest you read this popular tutorial on Servlets and JSP to further improve your skills:
Beginning & Intermediate Servlet & JSP Tutorials



来源:https://stackoverflow.com/questions/14307633/servlets-with-javabeans

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!