Kleines Beispiel für die Verwendung eines java Beans in einer JSP

Thomas Darimont

Erfahrenes Mitglied
Hallo,

Wir wollen eine kleine JSP Seite definieren welche einen Rechner beinhaltet der die 4 Grundrechenarten +,-,*,/ beherrscht.
HTML:
<%--
    Document   : calculator.jsp
    Created on : 27.08.2008, 20:34:00
    Author     : Tom
--%>

<%@page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp"%>
<%-- im Fehlerfall leiten wir auf die Seite error.jsp weiter, die relativ zur aktuellen JSP-Seite liegt.
<!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=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
       
        <jsp:useBean id="calculator" class="de.tutorials.Calculator"/> <%-- hier definieren wir unsere Calculator bean (standardmäßig im Request Scope) --%>
       
<%-- die Berechnungen sollen implizit durch calculator Bean durchgeführt werden, deshalb rufen wir diese Seite bei absenden selbst wieder auf. Danach sind die entsprechenden Request Parameter mit den eingegebenen Werten und der Operation bestückt. Mit diesen wird dann das calculator Bean bestückt, so dass es seine Arbeit verrichten kann --%>
        <form method="get" action="calculator.jsp">
<%-- hier setzen wir die Attributwerte des Rechners auf die entsprechenden Werte der HTTP Request Parameters--%>
            <jsp:setProperty name="calculator" property="op1" param="op1"/>
            <jsp:setProperty name="calculator" property="op2" param="op2"/>
            <jsp:setProperty name="calculator" property="operation" param="operation"/>

            <%!--  anstatt drei mal jsp:setProperty aufzurufen, könnte man auch einmal jsp:setProperty name="calculator" property="*" ausführen. 
                     property="*" bewirkt das die bean Properties mit den entsprechenden Werten aus den passenden Request parametern gefüllt werden.
                     hier muss dann der request parameter so heißen wie das bean property --%>
            <table>
                <tr>
                    <td>Operand1</td>
                    <td>
                         <%-- hier geben wir den Wert des operation Properties unsers calculator Beans aus --%>
                        <jsp:getProperty name="calculator" property="operation"/>
                    </td>
                    <td>Operand2</td>
                </tr>
                <tr>
                    <td>
                         <%-- hier befüllen wir das INPUT Textfeld mit dem aktuellen Wert des Properties op1 unseres calculator Beans--%>
                        <Input TYPE="text" name="op1" VALUE="${calculator.op1}"/>
                    </td>
                    <td>
                        <Input TYPE="text" name="op2" VALUE="${calculator.op2}"/>
                    </td>
                    <td>=
                        <jsp:getProperty name="calculator" property="result"/>
                    </td>  
                 </tr>
                <tr><td>
                        <input name="operation" value="+" type="submit">
                        <input name="operation" value="-" type="submit">
                        <input name="operation" value="*" type="submit">
                        <input name="operation" value="/" type="submit"> </td></tr>
            </table>
           
        </form>
    </body>
</html>

Unsere Fehlerseite:
HTML:
<%@page contentType="text/html" pageEncoding="UTF-8" isErrorPage="true"%>
<!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=UTF-8">
        <title>Fehler</title>
    </head>
    <body>
        <h2>Es ist ein Fehler aufgetreten!</h2>
        
        <%-- durch isErrorPage=true in der page direktive (ganz oben) wurde implizit eine Variable
        mit dem namen exception definiert, welche die aufgetretene Ausnahme enthält.--%>
        <b><%=exception%></b>
        
        <a href="calculator.jsp">wieder zurück zum Rechner:</a>
    </body>
</html>

Unser Calcolator:
Java:
package de.tutorials;

/**
 *
 * @author Tom
 */
public class Calculator {
    private int op1;
    private int op2;
    private char operation = '+'; // default +

    public int getOp1() {
        return op1;
    }

    public void setOp1(int op1) {
        this.op1 = op1;
    }

    public int getOp2() {
        return op2;
    }

    public void setOp2(int op2) {
        this.op2 = op2;
    }

    public char getOperation() {
        return operation;
    }

    public void setOperation(char operation) {
        this.operation = operation;
    }
   
    public int getResult(){
        switch(operation){
            case '+':
                return op1 + op2;
            case '-':
                return op1 - op2;
             case '/':
                 return op1 / op2;
            case '*':
                return op1 * op2;

        }
        return 0;
    }
}

Gruß Tom
 

Neue Beiträge

Zurück