com.ibm.example에 대한 종속성은 가져온 패키지에 추가됩니다. 번들 프로젝트가 웹 3.0 지원으로 구성되므로 서블릿 패키지(예: javax.servlet)의 추가 가져오기 항목이 추가됩니다.
완료를 클릭하십시오. 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라는 이중 실선으로 변환되고, 이는 변환기 오브젝트에서
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에는 ConverterServlet에 temperature 매개변수 값을 제출하는 양식이 포함됩니다. 서블릿으로 전송되기 전에 제출되는 값은 숫자 값이 입력되는지 확인하기 위해 validate() 기능에 의해 유효성 검증됩니다.