La dépendance à com.ibm.example est ajoutée à la section Packages importés. Notez qu'étant donné que le projet de bundle est configuré avec le support Web 3.0, des entrées d'importation supplémentaires pour les packages de servlet comme javax.servlet sont déjà ajoutées.
Cliquez sur Terminer. ConverterServlet est créé dans le projet Web.
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());
La valeur de température à convertir est transmise au servlet via le paramètre temperature.
Cette valeur est convertie en Double
appelé degrees, à traiter par les méthodes convertToCelsius()
et convertToFahrenheit() sur l'objet de convertisseur.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>
Cet HTML contient un formulaire soumettant une valeur de paramètre temperature dans ConverterServlet. Avant son envoi dans le servlet, la valeur à soumettre est validée par la fonction validate() pour s'assurer qu'une valeur numérique a été entrée.