一、平臺概述
JavaEE的全稱是Java Enterprise Edition,它是一個開發分散式企業級應用的規範和標準
Java 平臺三個版本:
- Java ME(Java Micro Edition)Java微型版
- Java SE(Java Standard Edition)Java 標準版
- Java EE(Java Enterprise Edition) Java企業版
二、架構概述
Java EE伺服器:
Java EE伺服器為符合標準的應用程式元件提供部署,管理和執行的支援
根據所依賴 的Java EE伺服器,應用程式元件可以分成3類。
- 部署,管理和執行在Java EE伺服器上的元件。(Web元件和Ejb元件)
- 部署和管理在Java EE伺服器上,但是被載入到客戶機的執行的元件。(Html頁面和嵌入頁面的Applet的Web資源)
- 部署和管理沒有完全定義在Java EE規範中的元件。(應用程式客戶端)
三、容器概述
容器為Java EE應用程式元件提供了執行環境。
容器提供了一份從底層Java EE Api到應用程式元件的聯合檢視。
在應用程式元件和Java EE服務之間增加一個容器,就可以讓容器透明地為元件注入必須的服務。
一個標準的Java EE產品會為每個應用程式元件型別,提供一個容器。
容器概述:
容器是用來管理元件行為的一個集合工具,元件的行為包括與外部環境的互動、元件的生命週期、元件之間的合作依賴關係等等
Java EE容器:
- 應用程式客戶端容器:包含元件Application Client
- Applet容器:包含元件Applet
- Web元件容器:包含Jsp與Servlet元件
- 企業Bean容器:也就是EJB容器,包含了EJB元件
四、服務
概述:服務是元件和容器之間,以及容器和Java EE伺服器之間的介面
五、常用服務
JNDI獲取資料來源
<Resource auth="Container" driverClassName="oracle.jdbc.OracleDriver" maxActive="100" maxIdle="30" maxWaite="10000" name="jdbc/jndi" password="accp" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:orcl" username="accp" />
/** * 通過JNDI獲取連線 */ public Connection getConnection(){ Connection conn=null; try { //宣告上下文物件 Context ct=new InitialContext(); //宣告資料來源 DataSource ds=(DataSource) ct.lookup("java:comp/env/jdbc/jndi"); //得到連線 conn=ds.getConnection(); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }
郵件
package com; import java.util.Properties; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; /** * 傳送郵件 * */ public class Mail { private MimeMessage mimeMsg; private Session session; private Properties props; private String username; private String password; private Multipart mp; public Mail(String smtp){ setSmtpHost(smtp); createMimeMessage(); } public void setSmtpHost(String hostName){ System.out.println("設定系統屬性:mail.smtp.host="+hostName); if(props==null){ props = System.getProperties(); } props.put("mail.smtp.host", hostName); } public boolean createMimeMessage(){ try{ System.out.println("準備獲取郵件會話物件!"); session = Session.getDefaultInstance(props,null); }catch(Exception e){ System.out.println("獲取郵件會話物件時發生錯誤!"+e); return false; } System.out.println("準備建立MIME郵件物件!"); try{ mimeMsg = new MimeMessage(session); mp = new MimeMultipart(); return true; }catch(Exception e){ System.out.println("建立MIME郵件物件失敗!"+e); return false; } } /** * 設定SMTP是否需要驗證 */ public void setNeedAuth(boolean need) { System.out.println("設定smtp身份認證:mail.smtp.auth = "+need); if(props == null) props = System.getProperties(); if(need){ props.put("mail.smtp.auth","true"); }else{ props.put("mail.smtp.auth","false"); } } public void setNamePass(String name,String pass) { username = name; password = pass; } /** * 設定郵件主題 */ public boolean setSubject(String mailSubject) { System.out.println("設定郵件主題!"); try{ mimeMsg.setSubject(mailSubject); return true; } catch(Exception e) { System.err.println("設定郵件主題發生錯誤!"); return false; } } /** * 設定郵件正文 */ public boolean setBody(String mailBody) { try{ BodyPart bp = new MimeBodyPart(); bp.setContent(""+mailBody,"text/html;charset=GBK"); mp.addBodyPart(bp); return true; } catch(Exception e){ System.err.println("設定郵件正文時發生錯誤!"+e); return false; } } /** * 設定發信人 */ public boolean setFrom(String from) { System.out.println("設定發信人!"); try{ mimeMsg.setFrom(new InternetAddress(from)); //設定發信人 return true; } catch(Exception e) { return false; } } /** * 設定收信人 */ public boolean setTo(String to){ if(to == null)return false; System.out.println("設定收信人!"); try{ mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); return true; } catch(Exception e) { return false; } } /** * 設定抄送人 */ public boolean setCopyTo(String copyto) { if(copyto == null)return false; try{ mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto)); return true; } catch(Exception e) { return false; } } /** * 傳送郵件 */ public boolean sendOut() { try{ mimeMsg.setContent(mp); mimeMsg.saveChanges(); System.out.println("正在傳送郵件...."); Session mailSession = Session.getInstance(props,null); Transport transport = mailSession.getTransport("smtp"); transport.connect((String)props.get("mail.smtp.host"),username,password); transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO)); System.out.println("傳送郵件成功!"); transport.close(); return true; } catch(Exception e) { System.err.println("郵件傳送失敗!"+e); return false; } } /** * 呼叫sendOut方法完成郵件傳送 */ public static boolean sendAndCc(String smtp,String from,String to,String copyto,String subject,String content,String username,String password) { Mail theMail = new Mail(smtp); theMail.setNeedAuth(true); //需要驗證 if(!theMail.setSubject(subject)) return false; if(!theMail.setBody(content)) return false; if(!theMail.setTo(to)) return false; if(!theMail.setCopyTo(copyto)) return false; if(!theMail.setFrom(from)) return false; theMail.setNamePass(username,password); if(!theMail.sendOut()) return false; return true; } }