Die Abhängigkeit zu "com.ibm.example" wird dem Abschnitt "Importierte Pakete" hinzugefügt. Beachten Sie, dass bei Konfiguration eines Bundleprojekts mit Web 3.0-Unterstützung bereits zusätzliche Importeinträge für Servletpakete (z. B. "javax.servlet") hinzugefügt wurden.
Klicken Sie auf Fertigstellen. Das Servlet "ConverterServlet" wird im Webprojekt erstellt.
import com.ibm.example.EJBConverterLocal;
import java.io.PrintWriter;
import java.text.NumberFormat;
import javax.naming.InitialContext;
import javax.naming.NamingException;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter w = response.getWriter();
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
try {
InitialContext context = new InitialContext();
EJBConverterLocal converter = (EJBConverterLocal) context
.lookup("osgi:service/" + EJBConverterLocal.class.getName());
String temperature = request.getParameter("temperature");
if (temperature == null) {
w.println("<p>A temperature value was not specified.</p>");
} else if (!temperature.matches("[-+]?[0-9]*\\.?[0-9]+")) {
w.println("Invalid temperature specified.");
} else {
double degrees = Double.parseDouble(temperature);
double celsius = converter.convertToCelsius(degrees);
w.println("<p>" + temperature + " degrees fahrenheit is "
+ nf.format(celsius) + " degrees celsius</p>");
double fahrenheit = converter.convertToFahrenheit(degrees);
w.println("<p>" + temperature + " degrees celsius is "
+ nf.format(fahrenheit) + " degrees fahrenheit</p>");
}
w.println("<a href='index.html'>Back</a>");
} catch (NamingException e) {
w.println(e.getMessage());
} catch (NumberFormatException e) {
w.println("An incorrect temperature was specified");
}
}
EJBConverterLocal converter = (EJBConverterLocal) context.lookup("osgi:service/" + EJBConverterLocal.class.getName());
Der zu konvertierende Temperaturwert wird vom Parameter temperature an das Servlet übergeben. Dieser Wert wird in einen Double-Wert mit dem Namen degrees konvertiert, der von den Methoden convertToCelsius()
und convertToFahrenheit() für das Converter-Objekt verarbeitet werden kann. EJBConverterRemote converter = (EJBConverterRemote) context.lookup("osgi:service/" + EJBConverterRemote.class.getName() + "/(service.exported.interfaces=*)");
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
package com.ibm.example.servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.NumberFormat;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.example.EJBConverterLocal;
@WebServlet("/ConverterServlet")
public class ConverterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ConverterServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter w = response.getWriter();
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
try {
InitialContext context = new InitialContext();
EJBConverterLocal converter = (EJBConverterLocal) context
.lookup("osgi:service/" + EJBConverterLocal.class.getName());
String temperature = request.getParameter("temperature");
if (temperature == null) {
w.println("<p>A temperature value was not specified.</p>");
} else if (!temperature.matches("[-+]?[0-9]*\\.?[0-9]+")) {
w.println("Invalid temperature specified.");
} else {
double degrees = Double.parseDouble(temperature);
double celsius = converter.convertToCelsius(degrees);
w.println("<p>" + temperature + " degrees fahrenheit is "
+ nf.format(celsius) + " degrees celsius</p>");
double fahrenheit = converter.convertToFahrenheit(degrees);
w.println("<p>" + temperature + " degrees celsius is "
+ nf.format(fahrenheit) + " degrees fahrenheit</p>");
}
w.println("<a href='index.html'>Back</a>");
} catch (NamingException e) {
w.println(e.getMessage());
} catch (NumberFormatException e) {
w.println("An incorrect temperature was specified");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OSGi EJB Temperature Converter</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
function validate(form) {
var temperature = new Number(form.temperature.value);
if (isNaN(temperature)) {
alert("Please enter a valid number.");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="ConverterServlet" method="post" onsubmit="return validate(this);">
Enter a temperature value:
<br/>
<input type="text" id="temperature" name="temperature"/>
<br/>
<br/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
Diese HTML-Datei enthält ein Formular, das einen Parameterwert für Temperatur an das Servlet "ConverterServlet" übergibt. Bevor er an das Servlet gesendet wird, wird der zu versendende Wert von der Funktion validate() validiert, um sicherzustellen, dass ein numerischer Wert eingegeben wurde.