![]() |
|
||
|
|
|
Enterprise JavaBeans. Часть 7(Гопалан Суреш Рай) Разработка многоуровневого приложения EJB - Клиент EJB Servlet Session бина Клиент EJB сервлета общается с Cart session EJB и позволяет клиентам покупать книги и музыкальные альбомы по сети Интернет. Сервлет иллюстрирует примерами Cart session бин в своем методе init ( ) и общается с бином через doGet ( ) и doPost ( ) методы. Метод класса init ( ) и члены класса Online servlet class определяются как в номенклатуре 19: /** * To run this servlet, you may have to specify the root directory * in the path since it needs to get at the stubs present in the · package com.gopalan.Shop.Cart. · чтобы запустить данный сервлет вам возможно понадобится определить root директорию в path c тех пор как ему понадобится получить на stubs в package com.gopalan.Shop.Cart * You should also move the Online.class file to the directory * specified in the -d option below. * вы должны также послать файл Online.class в директорию, указанную в - d опции ниже. * eg., например * servletrunner -p 6060 -d E:\ -s E:\com\gopalan\Shop\Cart\servlet.properties * */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.rmi.*; import com.gopalan.Shop.Cart.*; public class Online extends HttpServlet {
CartHome home = null; Cart cart = null;
Vector bookList = new Vector(); Vector musicList= new Vector(); Vector bookCart = new Vector(); Vector musicCart= new Vector(); public void init(ServletConfig config) throws ServletException {
super.init(config); System.out.println( "Called from Online::init..." ); try{ home = (CartHome)Naming .lookup("Cart" ); if( null == home ) { System.out.println( "null CartHome returned..." ); } else { cart = home.create(); System.out.println( "Naming.lookup successful..." ); System.out.println( "home.create successful..." ); } } catch(Exception e){System.out.println( e );} }
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
System.out.println( "Called from Online::doGet..." ); displayForm(res, "Welcome"); }
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
System.out.println( "Called from Online::doPost..." );
int item = 0;
System.out.println( "Content Type ="+ req.getContentType());
if ("application/x-www-form-urlencoded".equals(req .getContentType())) { Enumeration enum = req.getParameterNames(); while (enum.hasMoreElements()) { System.out.println("---------------------------------------------" ); String name = (String) enum.nextElement(); System.out.println("name = " + name);
String values[] = req.getParameterValues(name); System.out.println("The No. of Values selected are ="+values.length);
if( name.equals("MusicCombo") ) { for (int i = 0; i < values.length; i++) {
System.out.println(values[i ]); item = (Integer.valueOf(values[i ])).intValue(); cart.addToMusicCart (((ReturnSet)musicList.elementAt (item-1)).code); } } if( name.equals("BooksCombo") ) { for (int i = 0; i < values.length; i++) {
System.out.println(values[i ]); item = (Integer.valueOf(values[i ])).intValue(); cart.addToBooksCart (((ReturnSet)bookList.elementAt (item-1)).code); } }
if( name.equals("BuyButton") ) { cart.flushBooksCart(); cart.flushMusicCart(); } System.out.println("---------------------------------------------" ); } } displayForm(res, "Welcome"); }
private void displayForm(HttpServletResponse response, String message) throws IOException {
System.out.println( "Called from Online::displayForm..." ); if( ( home == null ) || (cart == null)) { try{ home = (CartHome)Naming.lookup("Cart" ); cart = home.create(); } catch(Exception e){ System.out.println( e ); } } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body bgcolor=\"#FFFFFF\">"); out.println("<p align=\"center\"><font size=\"2\" face=\"Verdana\">"); out.println("<strong>Horse and Stable Online, Inc.</strong></font></p>");
out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<strong>List of Books Available-Make your Selection</strong></font></p>"); out.println("<form method=\"POST\">"); out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<select name=\"BooksCombo\" multiple size=\"2\">");
bookList = cart.getBooksList(); System.out.println("Book List of size "+bookList.size()+" is..."); for(int i = 0; i < bookList.size(); i++) { ReturnSet set = (ReturnSet)bookList.elementAt(i ); System.out.println( "code = " +set.code + " Title = " +set.title + " Author = " +set.authors); out.println("<option value=\""+ set.code + "\">ISBN = "+ set.code+" Title = "+set.title+" Authors = "+set.authors+" List Price = $"+set.price+" Discount = "+ set.discount+"% Our Price = $"+set.ourPrice+ "</option>"); } out.println("</select><input type=\"submit\" name=\"BooksButton\""); out.println("value=\"Add to Books Shopping Cart\"></font></p></form>");
out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<strong>Books you added to your Shopping Cart</strong></font></p>"); out.println("<div align=\"center\"><center>"); out.println("<table border=\"1\"><tr>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>ISBN</strong></font></td>" ); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Book Title</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Author(s)</strong></font></td>" ); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Actual Price(in US Dollars)</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Discount(% in Percentage)</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Your Price(in US Dollars)</strong></font></td></tr>");
bookCart = cart.getBooksCart(); System.out.println("Book Cart of size "+bookCart.size()+" is..."); for(int i = 0; i < bookCart.size(); i++) { ReturnSet set = (ReturnSet)bookCart.elementAt(i ); System.out.println( "code = " +set.code + " Title = " +set.title + " Author = " +set.authors); out.println("<tr>"); out.println("<td align=\"right\"><font size=\"1\" face=\"Verdana\">" + set.code); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.title); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.authors); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">$"+set.price); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.discount+ " %"); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">$"+set.ourPrice); out.println("</tr>"); } out.println("</table></center></div>" ); out.println("<p align=\"left\"><font size=\"1\" face=\"Verdana\">"); out.println("You have selected "+ cart.getNumberBooks() + " books for a total cost of $"+ cart.getBooksTotal() + "</font></p>");
out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<strong>List of Music CDs Available-Make your Selection</strong></font></p>"); out.println("<form method=\"POST\">"); out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<select name=\"MusicCombo\" multiple size=\"2\">");
musicList = cart.getMusicList(); System.out.println("Music List of size "+musicList.size()+" is..."); for(int i = 0; i < musicList.size(); i++) { ReturnSet set = (ReturnSet)musicList.elementAt(i ); System.out.println( "code = " +set.code + " Title = " +set.title + " Author = " +set.authors); out.println("<option value=\""+ set.code + "\"> Code ="+ set.code+" Album = "+set.title+" Composers = "+set.authors+" List Price = $"+set.price+" Discount = "+ set.discount+"% Our Price = $"+set.ourPrice+ "</option>"); } out.println("</select><input type=\"submit\" name=\"MusicButton\""); out.println("value=\"Add to Music Shopping Cart\"></font></p></form>");
out.println("<p><font size=\"1\" face=\"Verdana\">"); out.println("<strong>Albums you added to your Shopping Cart</strong></font></p>"); out.println("<div align=\"center\"><center>"); out.println("<table border=\"1\"><tr>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>code</strong></font></td>" ); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Album Title</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Composer(s)</strong></font></td>" ); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Actual Price(in US Dollars)</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Discount(% in Percentage)</strong></font></td>"); out.println("<td><font size=\"1\" face=\"Verdana\"><strong>Your Price(in US Dollars)</strong></font></td></tr>");
musicCart = cart.getMusicCart(); System.out.println("Book Cart of size "+musicCart.size()+" is..."); for(int i = 0; i < musicCart.size(); i++) { ReturnSet set = (ReturnSet)musicCart.elementAt(i ); System.out.println( "code = " +set.code + " Title = " +set.title + " Author = " +set.authors); out.println("<tr>"); out.println("<td align=\"right\"><font size=\"1\" face=\"Verdana\">" + set.code); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.title); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.authors); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">$"+set.price); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">"+set.discount+ " %"); out.println("</font></td><td align=\"right\"><font size=\"1\" face=\"Verdana\">$"+set.ourPrice); out.println("</tr>"); } out.println("</table></center></div>" ); out.println("<p align=\"left\"><font size=\"1\" face=\"Verdana\">"); out.println("You have selected "+ cart.getNumberAlbums() + " CD Albums for a total cost of $"+ cart.getAlbumsTotal() + "</font></p>");
out.println("<hr><p align=\"left\"><font size=\"1\" face=\"Verdana\">"); out.println("<strong>Total Price of Items selected = $"+ cart.getGrandTotal() + "</strong></font></p>"); out.println("<form method=\"POST\"><p><font size=\"2\" face=\"Verdana\">"); out.println("<input type=\"submit\" name=\"BuyButton\" value=\"Buy\"></font></p>"); out.println("</form>"); out.println("</body></html>" ); }
} Listing 19: Listing of the Online Servet Листинг 19: Листинг класса Online Servet Как было показано ранее на рисунке 6 клиент browser начинает весь процесс отправкой сообщения GET на Online servlet, который находится на Web сервере. Это служит причиной того, метод init ( ) класса Online servlet начинает искать Cart бин на EJB сервере и создавать его. Метод Cart EJB’s setSessionContext(), который является одним из первых методов, вызываемых когда создается session-бин, ищет Book entity EJB и >Music entity EJB и создает их. Как было указано ранее, >entities - это прямое отображение записей в >domain-модель базы данных >Shop, которая ассоциируется с этими entities. Затем >entities EJB (Book и Music) взаимодействуют с базой данных (Shop) для сервиса запросов с >session EJB (Cart). Я полагаю, что устройство servlet получается из комплекта программного обеспечения для разработки, хотя пример servlet должен также хорошо работать и с другими устройствами. Для запуска сервлета 1. Скопируйте файлы Online.class и servlet.properties в директорию root 2. Убедитесь в том, что сервер EJB включен и работает 3. 3. Запустите servletrunner командой servletrunner -p 6060 -d E:\ -s E:\com\gopalan\Shop\ServletClient\servlet.properties Экран должен затем выглядеть так E:\>copy .\com\gopalan\Shop\ServletClient\Online.class Сейчас запустите свой Web browser и получите доступ к servlet's URL http://127.0.0.1:6060/servlet/Online Рисунок 7 показывает типичный session browser клиента, взаимодействующего с сервером для покупки книг и музыкальных CD с оперативного склада.
Рисунок 7: Оценка клиента оперативного склада |
| Справка | Условия | |
| В начало | Логин | Комментарий к колонке | Поиск | Почта |