com.ibm.example への依存関係が「インポートするパッケージ」セクションに追加されます。 バンドル・プロジェクトは Web 3.0 をサポートするように構成されているため、javax.servlet など、サーブレット・パッケージの付加的なインポート項目が既に追加されていることに注意してください。
「終了」をクリックします。Web プロジェクト内に ConverterServlet が作成されます。
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());
temperature パラメーターにより、変換する温度値がサーブレットに渡されます。
この値は degrees という名前の Double 値に変換され、converter オブジェクトの convertToCelsius() メソッド
と convertToFahrenheit() メソッドで処理できるようになります。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>
この HTML には、temperature パラメーター値を ConverterServlet に送信するためのフォームが含まれています。 それがサーブレットに送信される前に、送信される値が validate() 関数によって妥当性検査され、入力された値が数値であることが確認されます。