成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

J2EE下使用JNDI

開發 后端
在J2EE環境下使用JNDI是非常簡單的事,因為所有的J2EE容器都要實現JNDI服務,所以,在J2EE環境下使用JNDI,與使用Hashtable也沒有什么太大區別。只有一點限制,那就是綁定對象時,對象所屬的類必須實現java.io.Serializable接口,這一點也實在一點也不困難,幾乎所有用到的Java類都實現了這個接口,對于自定義的類,在接口實現列表里把這個接口加進去也就是了。

在J2EE環境下使用JNDI是非常簡單的事,因為所有的J2EE容器都要實現JNDI服務,所以,在J2EE環境下使用JNDI,與使用Hashtable也沒有什么太大區別。只有一點限制,那就是綁定對象時,對象所屬的類必須實現java.io.Serializable接口,這一點也實在一點也不困難,幾乎所有用到的Java類都實現了這個接口,對于自定義的類,在接口實現列表里把這個接口加進去也就是了。

下面,我將演示一下如何在J2EE環境下使用JNDI,為了保證代碼的通用性,我不使用struts之類的框架,而是直接使用標準JSP和Servlet實現。我將該項目的名稱定為jndi_test

要使用JNDI,需要先到SUN的網站上去下載jndi.jar。

 2.1 JSP
本項目包括5個JSP,功能說明如下:

index.jsp:首頁
bind.jsp:用于在JNDI中綁定對象
bind_result.jsp:綁定對象后的返回頁面
lookup.jsp:用于在JNDI中檢索對象
lookup_result.jsp:用于顯示檢索對象
本節中用到的JSP代碼如下,代碼都簡單地很,就不多做解釋了。

2.1.1 index.jsp

  1. < %...@ page language="java" contentType="text/html; charset=GB18030" 
  2.     pageEncoding="GB18030"%> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. < html> 
  5. < head> 
  6. < meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  7. < title>JNDI Test< /title> 
  8. < /head> 
  9. < body> 
  10. < a href="bind.jsp" target="_blank">bind.jsp< /a> 
  11. < br /> 
  12. < a href="lookup.jsp" target="_blank">lookup.jsp< /a> 
  13. < /body> 
  14. < /html> 

2.1.2 bind.jsp

  1. < %...@ page language="java" contentType="text/html; charset=GB18030" 
  2.     pageEncoding="GB18030"%> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. < html> 
  5. < head> 
  6. < meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  7. < title>JNDI Test - Bind< /title> 
  8. < /head> 
  9. < body> 
  10. < a href="bind.do">bind an object< /a> 
  11. < /body> 
  12. < /html> 

2.1.3 bind_result.jsp

  1. < %...@ page language="java" contentType="text/html; charset=GB18030" 
  2.     pageEncoding="GB18030"%> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. < html> 
  5. < head> 
  6. < meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  7. < title>JNDI Test - Bind result< /title> 
  8. < /head> 
  9. < body> 
  10. < p>Binded successfully!< /p> 
  11. < /body> 
  12. < /html> 

2.1.4 lookup.jsp

  1. < %...@ page language="java" contentType="text/html; charset=GB18030" 
  2.     pageEncoding="GB18030"%> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. < html> 
  5. < head> 
  6. < meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  7. < title>JNDI Test - lookup< /title> 
  8. < /head> 
  9. < body> 
  10. < a href="lookup.do">lookup the binded object< /a> 
  11. < /body> 
  12. < /html> 

2.1.5 lookup_result.jsp

  1. < %...@ page language="java" contentType="text/html; charset=GB18030" 
  2.     pageEncoding="GB18030"%> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4. < html> 
  5. < head> 
  6. < meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
  7. < title>JNDI Test - Lookup result< /title> 
  8. < /head> 
  9. < body> 
  10. < %...  
  11.     Object o = request.getAttribute("found_jndi_obj");  
  12.     out.println(o);  
  13. %> 
  14. < /body> 
  15. < /html> 

2.2 Servlet
本例包括兩個Servlet,功能說明如下:

BindServlet:用于在JNDI服務中綁定一個對象
LookupServlet:用于在JNDI服務中取出一個對象

2.2.1 BindServlet.java

  1. package lld.test.jndi;  
  2.  
  3. import java.io.IOException;  
  4. import java.util.Date;  
  5.  
  6. import javax.naming.Context;  
  7. import javax.naming.InitialContext;  
  8. import javax.servlet.RequestDispatcher;  
  9. import javax.servlet.ServletContext;  
  10. import javax.servlet.ServletException;  
  11. import javax.servlet.http.*;  
  12.  
  13. public class BindServlet extends HttpServlet  
  14. ...{  
  15.  
  16.     private static final long serialVersionUID = 5219969790998794367L;  
  17.  
  18.     @Override 
  19.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  20.             throws ServletException, IOException  
  21.     ...{  
  22.         this.doPost(req, resp);  
  23.     }  
  24.  
  25.     @Override 
  26.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  27.             throws ServletException, IOException  
  28.     ...{  
  29.         try 
  30.         ...{  
  31.             Context jndi_ctx = new InitialContext();  
  32.             String key = "jndi_object";  
  33.             jndi_ctx.rebind(key, new Date());  
  34.         }catch(Exception ex)  
  35.         ...{  
  36.             ex.printStackTrace();  
  37.         }  
  38.           
  39.         ServletContext context = this.getServletContext();  
  40.         RequestDispatcher dispatcher = context.getRequestDispatcher("/bind_result.jsp");  
  41.         dispatcher.forward(req, resp);  
  42.     }  
  43.       
  44. }  

使用rebind而不是bind綁定對象是因為,使用bind時,如果已經有對象綁定到該鍵值上,則會拋出異常。

因為只是示例代碼,所以我只是綁定了一個最簡單的日期對象。

2.2.2 LookupServlet.java

  1. package lld.test.jndi;  
  2.  
  3. import java.io.IOException;  
  4.  
  5. import javax.naming.Context;  
  6. import javax.naming.InitialContext;  
  7. import javax.servlet.RequestDispatcher;  
  8. import javax.servlet.ServletContext;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.http.HttpServlet;  
  11. import javax.servlet.http.HttpServletRequest;  
  12. import javax.servlet.http.HttpServletResponse;  
  13.  
  14. public class LookupServlet extends HttpServlet  
  15. ...{  
  16.     private static final long serialVersionUID = 6677219828267184673L;  
  17.  
  18.     @Override 
  19.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  20.             throws ServletException, IOException  
  21.     ...{  
  22.         this.doPost(req, resp);  
  23.     }  
  24.  
  25.     @Override 
  26.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  27.             throws ServletException, IOException  
  28.     ...{  
  29.         try 
  30.         ...{  
  31.             Context jndi_ctx = new InitialContext();  
  32.             String key = "jndi_object";  
  33.             Object o = jndi_ctx.lookup(key);  
  34.             req.setAttribute("found_jndi_obj", o);  
  35.         }catch(Exception ex)  
  36.         ...{  
  37.             ex.printStackTrace();  
  38.         }  
  39.           
  40.         ServletContext context = this.getServletContext();  
  41.         RequestDispatcher dispatcher = context.getRequestDispatcher("/lookup_result.jsp");  
  42.         dispatcher.forward(req, resp);  
  43.     }  
  44.       
  45. }  

2.3 web.xml

在web.xml中,加入了servlet映射

  1. < ?xml version="1.0" encoding="UTF-8"?> 
  2. < web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
  3.     < display-name>jndi_test< /display-name> 
  4.       
  5.     < servlet> 
  6.         < servlet-name>BindServlet< /servlet-name> 
  7.         < servlet-class>lld.test.jndi.BindServlet< /servlet-class> 
  8.     < /servlet> 
  9.     < servlet-mapping> 
  10.         < servlet-name>BindServlet< /servlet-name> 
  11.         < url-pattern>/bind.do< /url-pattern> 
  12.     < /servlet-mapping> 
  13.       
  14.     < servlet> 
  15.         < servlet-name>LookupServlet< /servlet-name> 
  16.         < servlet-class>lld.test.jndi.LookupServlet< /servlet-class> 
  17.     < /servlet> 
  18.       
  19.     < servlet-mapping> 
  20.         < servlet-name>LookupServlet< /servlet-name> 
  21.         < url-pattern>/lookup.do< /url-pattern> 
  22.     < /servlet-mapping> 
  23.       
  24.     < welcome-file-list> 
  25.         < welcome-file>index.jsp< /welcome-file> 
  26.     < /welcome-file-list> 
  27. < /web-app> 

OK,所有的代碼都在這里了,部署到Tomcat下運行即可。這樣就可以在J2EE下使用JNDI了。

【編輯推薦】

  1. JBoss的配置
  2. J2EE下使用JNDI
  3. J2EE筆試題目節選 Java的通信編程
  4. J2EE筆試題目節選 Java基礎系列
  5. 簡單解析J2EE架構:工具包的集合
責任編輯:book05 來源: laozizhu
相關推薦

2011-12-31 15:24:48

JavaJ2EE

2009-06-23 08:06:46

J2EE體系架構J2EE模型J2EE設計模式

2009-06-10 14:10:23

J2EE學習J2EE是什么

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2009-06-22 17:05:41

Java EEJava企業應用

2010-05-06 15:12:53

集群負載均衡

2009-06-22 17:34:40

J2EE架構

2009-06-23 08:12:48

J2EE調用存儲過程

2009-06-22 16:21:02

J2EE線程

2009-06-18 16:13:14

J2EE開發

2012-03-02 10:18:31

2009-06-11 17:07:49

WebsphereJ2EE應用程序

2009-06-30 14:40:32

linux

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2009-06-19 17:03:44

J2EE學習

2009-06-22 11:04:00

Jdbc存儲過程

2011-05-16 14:07:58

J2EE

2009-06-11 17:19:47

J2EE設計模式Template
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕亚洲区 | 日韩成人免费 | 国产真实乱对白精彩久久小说 | 91伊人| 欧美激情国产日韩精品一区18 | 国产精品一区二区在线 | 视频一区在线 | 亚洲精品一区在线观看 | 99国产精品久久久久久久 | av在线电影网 | 欧美一区视频 | 韩国久久| 成人久久18免费网站 | 中文字幕亚洲欧美日韩在线不卡 | 91在线色视频 | 国精产品一区一区三区免费完 | 韩日三级| 国产一区二区三区四区 | 国产精品美女久久久久久不卡 | 日韩人体在线 | 精品视频在线免费观看 | 国产精品视频一区二区三区四区国 | 欧美一级电影免费观看 | 一区二区在线不卡 | 成人在线视频一区二区三区 | 国产成人精品视频 | 91精品国产91久久久久游泳池 | 亚洲一区二区电影网 | 国产免费一区二区三区 | 超碰97人人人人人蜜桃 | 国产乱肥老妇国产一区二 | 久久免费精品视频 | 精品一区二区三区四区外站 | 午夜视频一区二区 | 婷婷在线网站 | 欧美精品片 | 在线色网 | 中文字幕在线网 | 黄色三级在线播放 | 国产免费一区二区 | 99热欧美|