[JSP] Hilfe bei Formular

DerMarco

Newbie
Registriert
Apr. 2005
Beiträge
3
Hi,

bin gerade dabei ein JSP Formular zu schreiben womit man Volumen berechnen kann. Bin ich JSP nicht der beste, bzw. Anfänger. Ich habs aber schon geschafft die Eingaben ausgeben zu lassen. Doch wie schaffe ich es nun die Eingaben in Zahlen umzuwandeln, das nur Zahlen akzeptiert werden, und wie kann ich die Eingaben in die Rechnung einfügen?

Kegelberechnung (PI /3)*r²*h
Zylinderberechnung PI*r²*h
Kegelstumpf (PI*h) / 3 (r1²+r1*r2+r2²)


Habe folgende HTML- und JSP-Seite:

HTML-Seite(Eingabe):
Code:
<html><head>
<title>Volumenberechnung</title>
</head><body>

<center><h1>Berechnung von Volumen</h1></center>
<br><br><br>

<form method="post" action="vb.jsp">
<center>VKegel, VZylinder und VKegelstumpf</center>
<center><input type="text" size="20" value="Eingabe Höhe" name="VK_VZ_VKS_1">
<input type="text" size="20" value="Eingabe Radius" name="VKe_VZ_VKS_2">
<input type="text" size="20" value="Eingabe Radius2" name="VKe_VZ_VKS_3">
<input type="checkbox" name="c1" value="Wert">
</center>

<center><input type="text" readonly value="Ausgabe VKe">
<input type="text" readonly value="Ausgabe VZ">
<input type="text" readonly value="Ausgabe VKS"></center>

<center><input type="submit" name="b1" value="Berechnen">
<input type="submit" name="b2" value="Löschen"></center>
</form>

</body></html>



Und folgende JSP-Seite (Ausgabe):
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<html><head><title>JSP Page</title>

<%--Kegel, VZylinder und VKegelstumpf--%>
<%
String sVK_VZ_VKS_1 = request.getParameter("VK_VZ_VKS_1");
String sVKe_VZ_VKS_2 = request.getParameter("VKe_VZ_VKS_2");
String sVKe_VZ_VKS_3 = request.getParameter("VKe_VZ_VKS_3");
%>

</head>
<body>

<center>Kegel, VZylinder und VKegelstumpf<br><br><br>
Eingabe Höhe  = <%= sVK_VZ_VKS_1 %><br><br>
Eingabe Radius = <%= sVKe_VZ_VKS_2 %><br><br>
Eingabe Radius 2 = <%= sVKe_VZ_VKS_3 %><br><br></center>


</body>
</html>


Hoffe auf Hilfe.

MfG Marco
 
Zuletzt bearbeitet:
> Ich habs aber schon geschafft die Eingaben ausgeben zu lassen. Doch wie schaffe ich es nun die Eingaben in Zahlen umzuwandeln, das nur Zahlen akzeptiert werden, und wie kann ich die Eingaben in die Rechnung einfügen?[/QUOTE]

Das macht man üblicherweise mit den statischen Methoden der wrapper-Klasen, also Integer, Float, Double etc., danach einfach mit den angegebenen Formeln ausrechnen also


Code:
<%@page contentType="text/html"
        pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>JSP Page</title>

<%
// Kegel, VZylinder und VKegelstumpf-

String sVK_VZ_VKS_1 = request.getParameter("VK_VZ_VKS_1");
String sVKe_VZ_VKS_2 = request.getParameter("VKe_VZ_VKS_2");
String sVKe_VZ_VKS_3 = request.getParameter("VKe_VZ_VKS_3");

double hoehe = Double.parseDouble(sVK_VZ_VKS_1);
double radius = Double.parseDouble(sVKe_VZ_VKS_2);
double radius2 = Double.parseDouble(sVKe_VZ_VKS_3);

double kegel_vol = (Math.PI/3) * radius * hoehe;
double zylinder_vol = Math.PI  * radius * hoehe;
%>

</head>
<body>

<div align="center">Kegel, VZylinder und VKegelstumpf<br><br><br>
Eingabe Höhe  = <%= sVK_VZ_VKS_1 %><br><br>
Eingabe Radius = <%= sVKe_VZ_VKS_2 %><br><br>
Eingabe Radius 2 = <%= sVKe_VZ_VKS_3 %><br><br>


Kegelberechnung = <%=Double.toString(kegel_vol) %><br><br>
Zylinderberechnung = <%=Double.toString(zylinder_vol) %><br><br>

</div>


</body>
</html>


BTW:

- page directives können zu einer zusammengefasst werden
- <center> ist veraltet und sollte nicht mehr benutzt werden, siehe code.


HTH


Eniac
 
Zuletzt bearbeitet:
OK, danke. Hast du aus versehen am ende zweimal kegel_vol geschrieben?

Wie genau muss ich das nun machen, wenn ich die HTML Seite mit der JSP Seite verbinden will, also nur eine JSP Seite machen wo das Formular und das JSP drin ist und die Werte dann nicht in einer neuen Seite, sondern in einem Formularfeld ausgeben lassen will?

Und wie verhindert man das wenn man Buchstaben anstatt Zahlen eingibt, das dann ein Fehler kommt.
 
Zuletzt bearbeitet:
> OK, danke. Hast du aus versehen am ende zweimal kegel_vol geschrieben?

Ist korrigiert.

> Wie genau muss ich das nun machen, wenn ich die HTML Seite mit der JSP Seite verbinden
> will, also nur eine JSP Seite machen wo das Formular und das JSP drin ist und die Werte
> dann nicht in einer neuen Seite, sondern in einem Formularfeld ausgeben lassen will?

Gib Deinem Formular einen versteckten Parameter mit, beim Abschicken des Formulars ist dieser gefüllt, bei direktem Aufruf der Seite ist dieser null, darauf kannst Du abfragen

Code:
<%@page contentType="text/html"
        pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Volumenberechnung</title>
</head>
<body>
<div align="center">

<h1>Berechnung von Volumen</h1>
<br><br><br>

<form method="post" action="vb.jsp">

<input type="hidden" name="param" value="4711" />

VKegel, VZylinder und VKegelstumpf
<input type="text" size="20" value="Eingabe Höhe" name="VK_VZ_VKS_1">
<input type="text" size="20" value="Eingabe Radius" name="VKe_VZ_VKS_2">
<input type="text" size="20" value="Eingabe Radius2" name="VKe_VZ_VKS_3">
<input type="checkbox" name="c1" value="Wert">


<input type="text" readonly value="Ausgabe VKe">
<input type="text" readonly value="Ausgabe VZ">
<input type="text" readonly value="Ausgabe VKS">

<input type="submit" name="b1" value="Berechnen">
<input type="submit" name="b2" value="Löschen">
</form>

</div>

<%
if(request.getParameter("param") != null) // Aufruf durch Formular
{
    // Kegel, VZylinder und VKegelstumpf-

    String sVK_VZ_VKS_1 = request.getParameter("VK_VZ_VKS_1");
    String sVKe_VZ_VKS_2 = request.getParameter("VKe_VZ_VKS_2");
    String sVKe_VZ_VKS_3 = request.getParameter("VKe_VZ_VKS_3");

    double hoehe = Double.parseDouble(sVK_VZ_VKS_1);
    double radius = Double.parseDouble(sVKe_VZ_VKS_2);
    double radius2 = Double.parseDouble(sVKe_VZ_VKS_3);

    double kegel_vol = (Math.PI/3) * radius * hoehe;
    double zylinder_vol = Math.PI  * radius * hoehe;
%>
<div align="center">Kegel, VZylinder und VKegelstumpf<br><br><br>
Eingabe Höhe  = <%= sVK_VZ_VKS_1 %><br><br>
Eingabe Radius = <%= sVKe_VZ_VKS_2 %><br><br>
Eingabe Radius 2 = <%= sVKe_VZ_VKS_3 %><br><br>


Kegelberechnung = <%=Double.toString(kegel_vol) %><br><br>
Zylinderberechnung = <%=Double.toString(zylinder_vol) %><br><br>

</div>
<%  } %>
</body>
</html>

> Und wie verhindert man das wenn man Buchstaben schreibt, dann ein Fehler kommt.

Entweder vor dem Absenden des Formulars mit JavaScript abfangen (Sichwort "isNaN"-Operator) oder hinterher im jsp in einem try-catch-Block. Das darfst Du jetzt aber selber herausarbeiten.


Eniac
 
Ok, nochmals danke.
Es geht nun alles auf eine Seite.


Habe es hier mit s2d versucht:

Code:
<%! public static double s2d ( String s ){
    double d;
    s = s.replace (',','.');
    try {
        d=Double.parseDouble(s);
        }catch(NumberFormatException e) {
            d = Double.NaN; }
 return d;
 
 
} %>


Wie kann ich aber damit die eingegeben Werte z.b. runden? Ich weiß das es mit Math.round(); geht, aber nicht wie ich das hier einbauen soll.
 
Zuletzt bearbeitet:
Jsp

hallo,...
bin noch anfänger in jsp...
muss aber ein simples programm haben,
welches einen getränkeautomaten simuliert...!
also soll es fragen, was man haben möchte,(cola,fanta...)
zb: gibt man ein : "1" und bekommt 1 dose cola oda
"2" fanta usw...

kann mir da einer behilflich sein ?
danke
 
Zurück
Oben