SlideShare a Scribd company logo
JAVA SERVER PAGE JAVA BEAN   – JAVA MAIL
NỘI DUNG Tổng quan về Java Bean Cách sử dụng Java Bean trên trang JSP Tìm hiểu về Java Mail
KHÁI NIỆM JavaBean là software component được viết bởi ngôn ngữ Java. JavaBean tạo ra các component độc lập platform JavaBean có khả năng nhúng vào các component, application hay applet khác nhau. Sự khác biệt chủ yếu giữa Java Bean và Java class thông thường là Java Bean được vận dụng theo cơ chế Serializable (các giá trị của các thuộc tính trong bean được đưa tới các phương thức instance của Bean) JSP truy cập Java Bean qua các tag action và nhận kết quả trả về mà không cần biết cấu trúc của Java Bean và cách thức xử lý của nó. Java Bean cài đặt các phương thức xử lý và không hiển thị khi thực hiện các xử lý
KHÁI NIỆM (tt) Java Bean là Java Class tuân thủ 3 yếu tố sau: Phải có 1 constructor không có tham số (mặc định có sẵn nếu không implement). Constructor này được gọi khi element của JSP tạo bean. Các thuộc tính (field) của bean không được khai báo public Việc truy xuất các thuộc tính của bean sẽ thông qua phương thức  getXxx  hay  setXxx (accessor method) đối với các thuộc tính cần lữu trữ (persistent) Lưu ý:   Các thuộc tính khai báo với ký tự đầu là chữ thường và các accessor sẽ bắt đầu bằng chữ in hoa (vd: length – getLength và setLength) Các thuộc tính có kiểu dữ liệu là boolean thì phương thức gọi chúng sẽ có dạng  isXxx  thay vì  getXxx JSP actions sẽ truy cập phương thức get/set/is để truy cập bean JSP cung cấp 03 Java bean tag (standard actions) jsp:useBean jsp:setProperty Jsp:getProperty
CÁCH SỬ DỤNG BEAN TRONG JSP Khai báo < jsp:useBean   id =“<định danh>”  class =“<tên class>” [scope = “loại scope”]/> id: tương tự khai báo biến, đại diện cho đối tượng truy xuất đến Bean class: tên class được sử dụng scope: khả năng chia xẻ hay tầm hoạt động của Bean. Mặc định là request   Cơ chế thực hiện: JSP Engine/ Container thực hiện Tìm kiếm class tương ứng được khai báo trong class Khởi tạo instance thông qua constructor Gán định danh id cho instance để có thể truy xuất trên trang JSP Xác định phạm vi hoạt động của instance này.   Cách khai báo biến dùng scriptlet tương đương Java Bean: <% <tên class> <định danh> = new <tên class>(); %> Ví dụ :  <jsp:useBean id=“book1” class=“store.book”/> tương đương  <% store.book book1 = new store.book(); %>
CÁCH SỬ DỤNG BEAN TRONG JSP (tt) Ép kiểu dữ liệu: tên biến trả về có cùng kiểu dữ liệu class sử dụng < jsp:useBean   id =“<định danh>”  class =“<tên class>”  type  = “<kiểu dữ liệu>” [scope = “loại scope”]/> type: kiểu dữ liệu của Java Cách khai báo biến dùng scriptlet tương đương Java Bean: <% <kiểu dự liệu> <định danh> = new <tên class>(); %> Ví dụ :  <jsp:useBean id=“abc” class=“cd” type=“Runnable” />  tương đương <% Runnable abc = new cd(); %>   Cú pháp sử dụng khác của Java bean <jsp:useBean …> statement </jsp:useBean> Ví dụ <jsp:useBean id=&quot;count&quot; class=&quot;ABean.AccessBean&quot; scope=&quot;application&quot;> <jsp:setProperty name=&quot;count&quot; property=&quot;firstPage&quot; value=&quot;ATest.jsp&quot; /> </jsp:useBean>   Lưu ý:   Sử dụng số ký tự đặt biệt trong chuỗi thì cần đặt thêm dấu “\” phía trước ký tự như ‘ ( \’ ); “ ( \” ), \ ( \\ ), % (\ % ), ...  Ngoài ra, id cũng được dùng như tên biến trong scriptlets
TRUY CẬP THUỘC TÍNH BEAN <jsp:getProperty  name =“<định danh>”  property =“<tên thuộc tính>” /> name: tên id đã được xác định trong jsp:useBean property: tên thuộc tính tương ứng khai báo trong Java Bean   Cách khai báo biến dùng scriptlet tương đương Java Bean <%= <định danh>.phương thức get() %> Ví dụ :  <jsp:getProperty name=“book1” property=“title”/>  tương đương <%= book1.getTitle()%>
THIẾT LẬP THUỘC TÍNH BEAN <jsp:setProperty  name =“<định danh>”  property =“<tên thuộc tính>”  value=“< giá trị>” /> name: tên id đã được xác định trong jsp:useBean property: tên thuộc tính tương ứng khai báo trong Java Bean value: giá trị (JSP expression, hằng số) được gán cho thuộc tính Các khai báo tương đương trong scriptlet:   <% <định danh>.phương thức set(<giá trị>) %> Ví dụ:  <jsp:setProperty name=“book1” property=“title” value=“JSP Book” />  tương đương <% book1.setTitle(“JSP Book”)%>
VỊ TRÍ ĐẶT BEAN CLASS Đặt tại: <tên ứng dụng>/WEB-INF/ c lasses Ví dụ:  Java Bean public class SimpleBean { private String message =&quot;First Bean&quot;; public String getMessage(){return message;} public void setMessage(String message){ this.message=message; }} Jsp <h1>JSP with Java Bean</h1> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> Init message (getProperty): <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/><br/>   (Scriptlet)  : <%= msg.getMessage() %> <br/> Set message - setProperty : <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;I am bean&quot; /> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/>   - Scriptlet   : <% msg.setMessage(&quot;I am Scriptlet&quot;); %>   <%= msg.getMessage() %>
ADVANCED SET PROPERTY Gán giá trị cho action setProperty là một expression String sMsg = request.getParameter(&quot;sms&quot;); <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;<%= sMsg %>&quot; /> Sử dụng thuộc tính param trong setProperty: đón nhận giá trị nhập từ request (của JSP khác, đối tượng khác hay trên URL)   <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; param=“message” /> Để thuộc tính có trong Java Bean trở thành tham số nhập với việc gán “*” cho thuộc tính property trong setProperty <jsp:setProperty name=&quot;msg&quot; property=“*&quot; /> Lưu ý : Action sẽ không được thực hiện nếu thiếu 1 trong những tham số nhập vì hệ thống sẽ không tự gán null. Trên 1 số web server sẽ xuất hiện lỗi nếu giá trị nhập dạng double Cơ chế tự động convert sẽ không đảm bảo các giá trị hợp lệ so với convert bằng việc lập trình bằng tay (programmatically) Tên thuộc tính và tham số phải giống nhau
VÍ DỤ Java Bean: sử dụng lại Java Bean trong ví dụ trang 9 JSP: <html> <head> <title>Bean in JSP</title> </head> <body> <h1>JSP with Java Bean - Parameter</h1> <%  String sMsg = request.getParameter(&quot;sms&quot;); %> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> Init message (getProperty): <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/><br/>   (Scriptlet)  : <%= msg.getMessage() %> <br/> Set message - setProperty : <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;I am bean&quot; />   <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> - Scriptlet   : <% msg.setMessage(&quot;I am Scriptlet&quot;); %>   <%= msg.getMessage() %><br/> Parameter message: <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;<%= sMsg %>&quot; />   <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> </body> </html>
VÍ DỤ Java Bean: package JBean; public class SimpleBean { private String message =&quot;First Bean&quot;; private int num; public String getMessage(){ return message;} public void setMessage(String message){ this.message=message;} public int getNum(){ return num;} public void setNum(int n){ num=n;}}
VÍ DỤ (tt) JSP: <html> <head> <title>Bean in JSP</title> </head> <body> <h1>JSP with Java Bean - Set all Parameter</h1> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> <jsp:setProperty name=&quot;msg&quot; property=&quot;*&quot;/> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> <jsp:getProperty name=&quot;msg&quot; property=&quot;num&quot;/> </body> </html>
KHẢ NĂNG CHIA SẺ – SHARING  HAY TẦM HOẠT ĐỘNG CỦA BEAN page :  Bean tồn tại cùng thời gian của page.  Các thông tin lưu trữ trong pageContext (giá trị có thể lấy qua getAttribute) application :  Chia xẻ thông tin cho tất cả đối tượng cùng ứng dụng web hay cùng servlet engine (JSP engine). Thông tin lưu trữ trong ServletContext.  Tồn tại cùng với thời gian ứng dụng.   session :  Thông tin lưu trữ trong HttpSession kết hợp request hiện hành (lấy giá trị thông qua getValues của đối tượng Session (Implicit Object). Tồn tại cho đến khi session bị hủy hay kết thúc.   request :  Giá trị mặc định của bean trên jsp  Thông tin được lưu trữ trong ServletRequest  Áp dụng cho request hiện hành và lấy giá trị qua getAttribute.  Thời gian tồn tại cùng với request (cho đến khi response hồi đáp)
KHẢ NĂNG CHIA SẺ – SHARING  HAY TẦM HOẠT ĐỘNG CỦA BEAN  (tt) Lưu ý: Khi sử dụng các thành phần Java Bean dùng Session hay Application, các trang trong ứng dụng Web  phải khai báo các tag action jsp:useBean  với cùng id và tên class. Khi thực thi trang JSP, JSP/ Servlet engine sẽ thực hiện tra cứu scope, nếu instance bean đã tồn tại thì không cần tạo instance mới ( bỏ qua tag jsp:useBean ) để thực thi các phương thức của Bean.  Ngược lại,  bean sẽ được tạo instance mới. Ví dụ: viết ứng dụng sử dụng scope của Java Bean đếm số lần truy cập trang Web
VÍ DỤ Java Bean: public class AccessBean{ private String firstPage; private int accessCount=1; public String getFirstPage(){return firstPage;} public void setFirstPage(String firstPage){this.firstPage=firstPage;} public int getAccessCount(){return accessCount++;}} JSP: page 1 - application <h1>Access Bean - Page 1</h1> <jsp:useBean id=&quot;count&quot; class=&quot;ABean.AccessBean&quot; scope=&quot;application&quot;> <jsp:setProperty name=&quot;count&quot; property=&quot;firstPage&quot; value=&quot;ATest.jsp&quot; /> </jsp:useBean> Of ATest.jsp (this page)- application, <a href=&quot;ATest1.jsp&quot;>ATest1.jsp</a>,  <a href=&quot;ATest2.jsp&quot;>ATest2.jsp</a>,and <a href=&quot;ATest3.jsp&quot;>ATest3.jsp</a> <jsp:getProperty name=&quot;count&quot; property=&quot;firstPage&quot;/> was first page accessed. <p>The four pages have been accessed <jsp:getProperty name=&quot;count&quot; property=&quot;accessCount&quot;/> times.</p>
VÍ DỤ (tt) JSP (tt):   Viết các page 2 – page; page 3 – session; page 4 – request tương tự page 1  Chỉnh sửa giá trị scope và href các trang cho phù hợp việc liên kế các trang với nhau. Deploy và thực thi ứng dụng
JAVA MAIL Java mail là hệ thống message hỗ trợ việc gửi nhận Email thông qua các phương thức API sử dụng trong J2EE API Các thành phần của Java Mail bao gồm POP3 (pop3.jar), SMTP (smtp.jar) hay IMAP (imap.jar) và các thư viện hỗ trợ là mail.jar và mailapi.jar Các đối tượng của Java Mail: Session: đại diện cho một lần gửi nhận mail Message: đưa ra các phương thức hỗ trợ việc gửi nhận mail. Các thành phần message cơ bản bao gồm địa chỉ người gửi và địa chỉ người nhận, tiêu đề mail (subject) và nội dung (body) Transport: hỗ trợ việc gửi nhận mail qua Internet
CÁC ĐỐI TƯỢNG trong JAVA MAIL Session Xây dựng dựa trên java.util.Properties, do vậy, Properties là đối tượng đòi hỏi cần thiết lập tham số cho session hoạt động Properties props = new Properties(); Xác định các thành phần chuẩn bị cho việc gửi mail như là: Xác định username để có thể dùng host để gửi mail đi props.setProperty(&quot;mail.smtp.submitter&quot;, “username”); Thiết lập xác thực để qua host gửi mail props.setProperty(&quot;mail.smtp.auth&quot;, &quot;true&quot;); Thiết lập về chế độ mở socket bảo mật để mail đi qua props.setProperty(&quot;mail.smtp.starttls.enable&quot;, &quot;true&quot;); Xác định địa chỉ host gửi mai props.setProperty(&quot;mail.smtp.host&quot;, “địa chỉ&quot;); Xác định port của host gửi mail props.setProperty(&quot;mail.smtp.port&quot;, “port&quot;); Khởi tạo instance của Session Session s=Session.getInstance(props, auth);
CÁC ĐỐI TƯỢNG trong JAVA MAIL (tt) Message Lớp trừu tượng để tạo ra các interface trong việc tạo ra các thành phần nội dung của mail MimeMessage với Mutlipurpose Internet Mail Extensions (MIME) email – sub class của Message hỗ trợ việc tạo và gửi mail Các phương thức sử dụng Tạo instance của Message:  MimeMessage m=new MimeMessage(s); Xác định địa chỉ người nhận m.addRecipient(Message.RecipientType.TO, addressTo); Xác định địa chỉ người gửi m.setFrom(addressFrom); Xác định Subject của email m.setSubject(subject); Xác định nội dung của email m.setText(content);
CÁC ĐỐI TƯỢNG trong JAVA MAIL (tt) Address Lớp trừu tượng để định nghĩa địa chỉ của đối tượng gửi nhận mail. Internet Address là đối tượng thực thi tạo các địa chỉ cho việc gửi nhận email trên Internet. Các địa chỉ mail đúng sẽ được khởi tạo trong constructor. InternetAddress addr=new InternetAddress(Name + &quot;<&quot; + Addr + &quot;>&quot;); Transport Gửi message trên Internet thông qua thông tin được xác định trên session Transport.send(m); Authenticator Xác định các thành phần có liên quan trong việc xác thực (username hay password) Xây dựng class Java extends từ Authenticator để đón nhận giá trị xác thực
JAVA MAIL  in JSP Copy tất cả thư viện (tải từ sun) của Java Mail vào thư mục CATALINA_HOME/lib (Tomcat 6.0) hay CATALINA_HOME/common/lib Import các thư việc javax.mail.*, javax.mail.internet.* và java.util.* khi lập trình gửi nhận mail Các bước thực hiện Xây dựng giao diện cho việc gửi nhận mail Thiết lập session cho mail thông qua các thành phần Properties và Session Thiết lập các thông tin message để gửi email Gửi qua email Internet Ví dụ:  Sử dụng Java Bean kết hợp Java Mail, JSP để gửi email
VÍ DỤ Java bean: package JMail; import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class sendMail{ private String fromName, fromAddr, toName, toAddr, subject, content; public sendMail(){ fromName=&quot;&quot;; fromAddr=&quot;&quot;; toName=&quot;&quot;; toAddr=&quot;&quot;; subject=&quot;&quot;; content public String getFromName(){ return fromName;} public void setFromName(String strFName){fromName=strFName;} public String getFromAddr(){return fromAddr;} public void setFromAddr(String strFAddr){fromAddr=strFAddr;} public String getToName(){return toName;} public void setToName(String strTName){toName=strTName;} public String getToAddr(){return toAddr;} public void setToAddr(String strTAddr){toAddr=strTAddr;} public String getSubject(){return subject;} public void setSubject(String strSub){subject=strSub;} public String getContent(){return content;} public void setContent(String strCon){content=strCon;}
VÍ DỤ (tt) public boolean sendValid(){ try{ MyAuthenticator auth=new MyAuthenticator(); Properties props=new Properties(); props.setProperty(&quot;mail.smtp.submitter&quot;, auth.getPasswordAuthentication().getUserName()); props.setProperty(&quot;mail.smtp.auth&quot;, &quot;true&quot;); props.setProperty(&quot;mail.smtp.starttls.enable&quot;, &quot;true&quot;); props.setProperty(&quot;mail.smtp.host&quot;, &quot;smtp.gmail.com&quot;); props.setProperty(&quot;mail.smtp.port&quot;, &quot;587&quot;); Session s=Session.getInstance(props, auth); MimeMessage m=new MimeMessage(s); InternetAddress addressTo=new InternetAddress(toName + &quot;<&quot; + toAddr + &quot;>&quot;); m.addRecipient(Message.RecipientType.TO, addressTo); InternetAddress addressFrom=new InternetAddress(fromName + &quot;<&quot; + fromAddr + &quot;>&quot;); m.setFrom(addressFrom); m.setSubject(subject); m.setText(content); Transport.send(m); return true;} catch(Exception e){ e.printStackTrace(); return false;}}}
VÍ DỤ (tt) class MyAuthenticator extends Authenticator { private PasswordAuthentication authentication; public MyAuthenticator() { String username=&quot;class0611@gmail.com&quot;; String password=&quot;abc123456&quot;; authentication = new PasswordAuthentication(username, password); } protected PasswordAuthentication getPasswordAuthentication() { return authentication; } }
VÍ DỤ (tt) JSP <html> <head>  <title>Send Mail</title></head> <body> <center> <h1>Send Mail use Java Mail</h1> <form method=&quot;post&quot;> Your name: <input type=&quot;text&quot; name=&quot;fromName&quot; /><br/> Your Email: <input type=&quot;text&quot; name=&quot;fromAddr&quot; /> <br/> Your friend's name: <input type=&quot;text&quot; name=&quot;toName&quot; /> To Email Address: <input type=&quot;text&quot; name=&quot;toAddr&quot; /><br/> Subject: <input type=&quot;text&quot; name=&quot;subject&quot; /><br/> Content: <textarea name=&quot;content&quot; cols=&quot;80&quot; rows=&quot;25&quot;></textarea><br/> <input type=&quot;submit&quot; value=&quot;Send&quot;/> </form> </center> <%  String fAddr = request.getParameter(&quot;fromAddr&quot;); String tAddr = request.getParameter(&quot;toAddr&quot;); String fName = request.getParameter(&quot;fromName&quot;);   String tName = request.getParameter(&quot;toName&quot;);   String sSub = request.getParameter(&quot;subject&quot;);   String sCon = request.getParameter(&quot;content&quot;); if(fAddr==null || tAddr==null){%>   Please enter full information to send mail!   <% }else{%>   <jsp:useBean id=&quot;objM&quot; class=&quot;JMail.sendMail&quot;/>   <jsp:setProperty name=&quot;objM&quot; property=&quot;fromName&quot; value=&quot;<%= fName %>&quot; />   <jsp:setProperty name=&quot;objM&quot; property=&quot;fromAddr&quot; value=&quot;<%= fAddr %>&quot; />   <jsp:setProperty name=&quot;objM&quot; property=&quot;toName&quot; value=&quot;<%= tName %>&quot; />   <jsp:setProperty name=&quot;objM&quot; property=&quot;toAddr&quot; value=&quot;<%= tAddr %>&quot; />   <jsp:setProperty name=&quot;objM&quot; property=&quot;subject&quot; value=&quot;<%= sSub %>&quot; />   <jsp:setProperty name=&quot;objM&quot; property=&quot;content&quot; value=&quot;<%= sCon %>&quot; />   <%  boolean rs = objM.sendValid();   if(rs){ %>   <h2>Information: Your mail has been sent!</h2>   <%  }else{%>     <h2>Error: Your mail can not send!</h2>   <%  }}%>  </body></html>
Bài tập Thực hiện lại các bài tập demo checkLogin của user đăng nhập vào hệ thống (dùng code cứng hay thử kết hợp CSDL (dùng jdbc) trong Java Bean) Dùng Java Bean để lấy thông tin của 1 Sinh viên, in ra màn hình (sử dụng code cứng hay CSDL) Ứng dụng các cách truyền tham số khác nhau trong Java Bean trong các bài tập trên

More Related Content

PPT
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
PPTX
Java applet
PPTX
Multiple inheritance in java3 (1).pptx
PDF
JavaScript - Chapter 5 - Operators
PPSX
Entity beans in java
PPTX
Java socket programming
PPTX
Html events with javascript
PDF
Bg automat
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
Java applet
Multiple inheritance in java3 (1).pptx
JavaScript - Chapter 5 - Operators
Entity beans in java
Java socket programming
Html events with javascript
Bg automat

What's hot (20)

PPTX
Java Beans
PPT
Introduction to java beans
PDF
Java applet programming concepts
PPTX
Tổng quan về Hệ điều hành
PPTX
PHP and MySQL.pptx
PPSX
Dr. Rajeshree Khande :Introduction to Java AWT
PPTX
Virtual function and abstract class
PDF
JavaScript Programming
PPTX
ASP.NET Web API
PPT
Introduction to Android Fragments
PPT
4. Classes and Methods
DOCX
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
PPT
Scripting languages
PPTX
Introduction to Object Oriented Programming
PPT
Class 5 - PHP Strings
PPTX
Jdbc ppt
PPTX
Trình bày các tác vụ quản lý Domain với Windows Server 2008
PPTX
Controls events
PDF
JavaScript - Chapter 13 - Browser Object Model(BOM)
Java Beans
Introduction to java beans
Java applet programming concepts
Tổng quan về Hệ điều hành
PHP and MySQL.pptx
Dr. Rajeshree Khande :Introduction to Java AWT
Virtual function and abstract class
JavaScript Programming
ASP.NET Web API
Introduction to Android Fragments
4. Classes and Methods
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
Scripting languages
Introduction to Object Oriented Programming
Class 5 - PHP Strings
Jdbc ppt
Trình bày các tác vụ quản lý Domain với Windows Server 2008
Controls events
JavaScript - Chapter 13 - Browser Object Model(BOM)
Ad

Viewers also liked (6)

PDF
Java beans
PPT
Java beans
PPT
Session 5 : mvc - Giáo trình Bách Khoa Aptech
PPTX
Mô hình MVC trong lập trình web với Java
PDF
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
PPTX
Mô Hình MVC 3.0
Java beans
Java beans
Session 5 : mvc - Giáo trình Bách Khoa Aptech
Mô hình MVC trong lập trình web với Java
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Mô Hình MVC 3.0
Ad

Similar to Jsp java bean (20)

PPT
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
PPT
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
PDF
Chương 8 - Lap Trinh Web-JSP-Servlet1.pdf
DOCX
JSP and Database
PDF
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
PDF
Bai 09 Basic jsp
PPT
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
PPT
PPT
Asp
DOCX
Lab lap trinhmang_v3
PPTX
Tự học jsp !​
PDF
Bai1 gioi thieu_servlet_va_jsp_8952
PPT
Web Architecture
PPTX
JavaEE Basic_Chapter3: Java Server Page
PDF
Bai4 basic jsp_4474
PPTX
Seminar IT Helpdesk
PDF
Net06 asp.net applications & state management
PPT
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
PPT
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
PDF
(HoaND)giaotrinhjsp 20140318
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Chương 8 - Lap Trinh Web-JSP-Servlet1.pdf
JSP and Database
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
Bai 09 Basic jsp
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Asp
Lab lap trinhmang_v3
Tự học jsp !​
Bai1 gioi thieu_servlet_va_jsp_8952
Web Architecture
JavaEE Basic_Chapter3: Java Server Page
Bai4 basic jsp_4474
Seminar IT Helpdesk
Net06 asp.net applications & state management
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
(HoaND)giaotrinhjsp 20140318

Jsp java bean

  • 1. JAVA SERVER PAGE JAVA BEAN – JAVA MAIL
  • 2. NỘI DUNG Tổng quan về Java Bean Cách sử dụng Java Bean trên trang JSP Tìm hiểu về Java Mail
  • 3. KHÁI NIỆM JavaBean là software component được viết bởi ngôn ngữ Java. JavaBean tạo ra các component độc lập platform JavaBean có khả năng nhúng vào các component, application hay applet khác nhau. Sự khác biệt chủ yếu giữa Java Bean và Java class thông thường là Java Bean được vận dụng theo cơ chế Serializable (các giá trị của các thuộc tính trong bean được đưa tới các phương thức instance của Bean) JSP truy cập Java Bean qua các tag action và nhận kết quả trả về mà không cần biết cấu trúc của Java Bean và cách thức xử lý của nó. Java Bean cài đặt các phương thức xử lý và không hiển thị khi thực hiện các xử lý
  • 4. KHÁI NIỆM (tt) Java Bean là Java Class tuân thủ 3 yếu tố sau: Phải có 1 constructor không có tham số (mặc định có sẵn nếu không implement). Constructor này được gọi khi element của JSP tạo bean. Các thuộc tính (field) của bean không được khai báo public Việc truy xuất các thuộc tính của bean sẽ thông qua phương thức getXxx hay setXxx (accessor method) đối với các thuộc tính cần lữu trữ (persistent) Lưu ý: Các thuộc tính khai báo với ký tự đầu là chữ thường và các accessor sẽ bắt đầu bằng chữ in hoa (vd: length – getLength và setLength) Các thuộc tính có kiểu dữ liệu là boolean thì phương thức gọi chúng sẽ có dạng isXxx thay vì getXxx JSP actions sẽ truy cập phương thức get/set/is để truy cập bean JSP cung cấp 03 Java bean tag (standard actions) jsp:useBean jsp:setProperty Jsp:getProperty
  • 5. CÁCH SỬ DỤNG BEAN TRONG JSP Khai báo < jsp:useBean id =“<định danh>” class =“<tên class>” [scope = “loại scope”]/> id: tương tự khai báo biến, đại diện cho đối tượng truy xuất đến Bean class: tên class được sử dụng scope: khả năng chia xẻ hay tầm hoạt động của Bean. Mặc định là request Cơ chế thực hiện: JSP Engine/ Container thực hiện Tìm kiếm class tương ứng được khai báo trong class Khởi tạo instance thông qua constructor Gán định danh id cho instance để có thể truy xuất trên trang JSP Xác định phạm vi hoạt động của instance này. Cách khai báo biến dùng scriptlet tương đương Java Bean: <% <tên class> <định danh> = new <tên class>(); %> Ví dụ : <jsp:useBean id=“book1” class=“store.book”/> tương đương <% store.book book1 = new store.book(); %>
  • 6. CÁCH SỬ DỤNG BEAN TRONG JSP (tt) Ép kiểu dữ liệu: tên biến trả về có cùng kiểu dữ liệu class sử dụng < jsp:useBean id =“<định danh>” class =“<tên class>” type = “<kiểu dữ liệu>” [scope = “loại scope”]/> type: kiểu dữ liệu của Java Cách khai báo biến dùng scriptlet tương đương Java Bean: <% <kiểu dự liệu> <định danh> = new <tên class>(); %> Ví dụ : <jsp:useBean id=“abc” class=“cd” type=“Runnable” /> tương đương <% Runnable abc = new cd(); %> Cú pháp sử dụng khác của Java bean <jsp:useBean …> statement </jsp:useBean> Ví dụ <jsp:useBean id=&quot;count&quot; class=&quot;ABean.AccessBean&quot; scope=&quot;application&quot;> <jsp:setProperty name=&quot;count&quot; property=&quot;firstPage&quot; value=&quot;ATest.jsp&quot; /> </jsp:useBean> Lưu ý: Sử dụng số ký tự đặt biệt trong chuỗi thì cần đặt thêm dấu “\” phía trước ký tự như ‘ ( \’ ); “ ( \” ), \ ( \\ ), % (\ % ), ... Ngoài ra, id cũng được dùng như tên biến trong scriptlets
  • 7. TRUY CẬP THUỘC TÍNH BEAN <jsp:getProperty name =“<định danh>” property =“<tên thuộc tính>” /> name: tên id đã được xác định trong jsp:useBean property: tên thuộc tính tương ứng khai báo trong Java Bean Cách khai báo biến dùng scriptlet tương đương Java Bean <%= <định danh>.phương thức get() %> Ví dụ : <jsp:getProperty name=“book1” property=“title”/> tương đương <%= book1.getTitle()%>
  • 8. THIẾT LẬP THUỘC TÍNH BEAN <jsp:setProperty name =“<định danh>” property =“<tên thuộc tính>” value=“< giá trị>” /> name: tên id đã được xác định trong jsp:useBean property: tên thuộc tính tương ứng khai báo trong Java Bean value: giá trị (JSP expression, hằng số) được gán cho thuộc tính Các khai báo tương đương trong scriptlet: <% <định danh>.phương thức set(<giá trị>) %> Ví dụ: <jsp:setProperty name=“book1” property=“title” value=“JSP Book” /> tương đương <% book1.setTitle(“JSP Book”)%>
  • 9. VỊ TRÍ ĐẶT BEAN CLASS Đặt tại: <tên ứng dụng>/WEB-INF/ c lasses Ví dụ: Java Bean public class SimpleBean { private String message =&quot;First Bean&quot;; public String getMessage(){return message;} public void setMessage(String message){ this.message=message; }} Jsp <h1>JSP with Java Bean</h1> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> Init message (getProperty): <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/><br/> (Scriptlet) : <%= msg.getMessage() %> <br/> Set message - setProperty : <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;I am bean&quot; /> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> - Scriptlet : <% msg.setMessage(&quot;I am Scriptlet&quot;); %> <%= msg.getMessage() %>
  • 10. ADVANCED SET PROPERTY Gán giá trị cho action setProperty là một expression String sMsg = request.getParameter(&quot;sms&quot;); <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;<%= sMsg %>&quot; /> Sử dụng thuộc tính param trong setProperty: đón nhận giá trị nhập từ request (của JSP khác, đối tượng khác hay trên URL) <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; param=“message” /> Để thuộc tính có trong Java Bean trở thành tham số nhập với việc gán “*” cho thuộc tính property trong setProperty <jsp:setProperty name=&quot;msg&quot; property=“*&quot; /> Lưu ý : Action sẽ không được thực hiện nếu thiếu 1 trong những tham số nhập vì hệ thống sẽ không tự gán null. Trên 1 số web server sẽ xuất hiện lỗi nếu giá trị nhập dạng double Cơ chế tự động convert sẽ không đảm bảo các giá trị hợp lệ so với convert bằng việc lập trình bằng tay (programmatically) Tên thuộc tính và tham số phải giống nhau
  • 11. VÍ DỤ Java Bean: sử dụng lại Java Bean trong ví dụ trang 9 JSP: <html> <head> <title>Bean in JSP</title> </head> <body> <h1>JSP with Java Bean - Parameter</h1> <% String sMsg = request.getParameter(&quot;sms&quot;); %> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> Init message (getProperty): <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/><br/> (Scriptlet) : <%= msg.getMessage() %> <br/> Set message - setProperty : <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;I am bean&quot; /> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> - Scriptlet : <% msg.setMessage(&quot;I am Scriptlet&quot;); %> <%= msg.getMessage() %><br/> Parameter message: <jsp:setProperty name=&quot;msg&quot; property=&quot;message&quot; value=&quot;<%= sMsg %>&quot; /> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> </body> </html>
  • 12. VÍ DỤ Java Bean: package JBean; public class SimpleBean { private String message =&quot;First Bean&quot;; private int num; public String getMessage(){ return message;} public void setMessage(String message){ this.message=message;} public int getNum(){ return num;} public void setNum(int n){ num=n;}}
  • 13. VÍ DỤ (tt) JSP: <html> <head> <title>Bean in JSP</title> </head> <body> <h1>JSP with Java Bean - Set all Parameter</h1> <jsp:useBean id=&quot;msg&quot; class=&quot;JBean.SimpleBean&quot;/> <jsp:setProperty name=&quot;msg&quot; property=&quot;*&quot;/> <jsp:getProperty name=&quot;msg&quot; property=&quot;message&quot;/> <jsp:getProperty name=&quot;msg&quot; property=&quot;num&quot;/> </body> </html>
  • 14. KHẢ NĂNG CHIA SẺ – SHARING HAY TẦM HOẠT ĐỘNG CỦA BEAN page : Bean tồn tại cùng thời gian của page. Các thông tin lưu trữ trong pageContext (giá trị có thể lấy qua getAttribute) application : Chia xẻ thông tin cho tất cả đối tượng cùng ứng dụng web hay cùng servlet engine (JSP engine). Thông tin lưu trữ trong ServletContext. Tồn tại cùng với thời gian ứng dụng. session : Thông tin lưu trữ trong HttpSession kết hợp request hiện hành (lấy giá trị thông qua getValues của đối tượng Session (Implicit Object). Tồn tại cho đến khi session bị hủy hay kết thúc. request : Giá trị mặc định của bean trên jsp Thông tin được lưu trữ trong ServletRequest Áp dụng cho request hiện hành và lấy giá trị qua getAttribute. Thời gian tồn tại cùng với request (cho đến khi response hồi đáp)
  • 15. KHẢ NĂNG CHIA SẺ – SHARING HAY TẦM HOẠT ĐỘNG CỦA BEAN (tt) Lưu ý: Khi sử dụng các thành phần Java Bean dùng Session hay Application, các trang trong ứng dụng Web phải khai báo các tag action jsp:useBean với cùng id và tên class. Khi thực thi trang JSP, JSP/ Servlet engine sẽ thực hiện tra cứu scope, nếu instance bean đã tồn tại thì không cần tạo instance mới ( bỏ qua tag jsp:useBean ) để thực thi các phương thức của Bean. Ngược lại, bean sẽ được tạo instance mới. Ví dụ: viết ứng dụng sử dụng scope của Java Bean đếm số lần truy cập trang Web
  • 16. VÍ DỤ Java Bean: public class AccessBean{ private String firstPage; private int accessCount=1; public String getFirstPage(){return firstPage;} public void setFirstPage(String firstPage){this.firstPage=firstPage;} public int getAccessCount(){return accessCount++;}} JSP: page 1 - application <h1>Access Bean - Page 1</h1> <jsp:useBean id=&quot;count&quot; class=&quot;ABean.AccessBean&quot; scope=&quot;application&quot;> <jsp:setProperty name=&quot;count&quot; property=&quot;firstPage&quot; value=&quot;ATest.jsp&quot; /> </jsp:useBean> Of ATest.jsp (this page)- application, <a href=&quot;ATest1.jsp&quot;>ATest1.jsp</a>, <a href=&quot;ATest2.jsp&quot;>ATest2.jsp</a>,and <a href=&quot;ATest3.jsp&quot;>ATest3.jsp</a> <jsp:getProperty name=&quot;count&quot; property=&quot;firstPage&quot;/> was first page accessed. <p>The four pages have been accessed <jsp:getProperty name=&quot;count&quot; property=&quot;accessCount&quot;/> times.</p>
  • 17. VÍ DỤ (tt) JSP (tt): Viết các page 2 – page; page 3 – session; page 4 – request tương tự page 1 Chỉnh sửa giá trị scope và href các trang cho phù hợp việc liên kế các trang với nhau. Deploy và thực thi ứng dụng
  • 18. JAVA MAIL Java mail là hệ thống message hỗ trợ việc gửi nhận Email thông qua các phương thức API sử dụng trong J2EE API Các thành phần của Java Mail bao gồm POP3 (pop3.jar), SMTP (smtp.jar) hay IMAP (imap.jar) và các thư viện hỗ trợ là mail.jar và mailapi.jar Các đối tượng của Java Mail: Session: đại diện cho một lần gửi nhận mail Message: đưa ra các phương thức hỗ trợ việc gửi nhận mail. Các thành phần message cơ bản bao gồm địa chỉ người gửi và địa chỉ người nhận, tiêu đề mail (subject) và nội dung (body) Transport: hỗ trợ việc gửi nhận mail qua Internet
  • 19. CÁC ĐỐI TƯỢNG trong JAVA MAIL Session Xây dựng dựa trên java.util.Properties, do vậy, Properties là đối tượng đòi hỏi cần thiết lập tham số cho session hoạt động Properties props = new Properties(); Xác định các thành phần chuẩn bị cho việc gửi mail như là: Xác định username để có thể dùng host để gửi mail đi props.setProperty(&quot;mail.smtp.submitter&quot;, “username”); Thiết lập xác thực để qua host gửi mail props.setProperty(&quot;mail.smtp.auth&quot;, &quot;true&quot;); Thiết lập về chế độ mở socket bảo mật để mail đi qua props.setProperty(&quot;mail.smtp.starttls.enable&quot;, &quot;true&quot;); Xác định địa chỉ host gửi mai props.setProperty(&quot;mail.smtp.host&quot;, “địa chỉ&quot;); Xác định port của host gửi mail props.setProperty(&quot;mail.smtp.port&quot;, “port&quot;); Khởi tạo instance của Session Session s=Session.getInstance(props, auth);
  • 20. CÁC ĐỐI TƯỢNG trong JAVA MAIL (tt) Message Lớp trừu tượng để tạo ra các interface trong việc tạo ra các thành phần nội dung của mail MimeMessage với Mutlipurpose Internet Mail Extensions (MIME) email – sub class của Message hỗ trợ việc tạo và gửi mail Các phương thức sử dụng Tạo instance của Message: MimeMessage m=new MimeMessage(s); Xác định địa chỉ người nhận m.addRecipient(Message.RecipientType.TO, addressTo); Xác định địa chỉ người gửi m.setFrom(addressFrom); Xác định Subject của email m.setSubject(subject); Xác định nội dung của email m.setText(content);
  • 21. CÁC ĐỐI TƯỢNG trong JAVA MAIL (tt) Address Lớp trừu tượng để định nghĩa địa chỉ của đối tượng gửi nhận mail. Internet Address là đối tượng thực thi tạo các địa chỉ cho việc gửi nhận email trên Internet. Các địa chỉ mail đúng sẽ được khởi tạo trong constructor. InternetAddress addr=new InternetAddress(Name + &quot;<&quot; + Addr + &quot;>&quot;); Transport Gửi message trên Internet thông qua thông tin được xác định trên session Transport.send(m); Authenticator Xác định các thành phần có liên quan trong việc xác thực (username hay password) Xây dựng class Java extends từ Authenticator để đón nhận giá trị xác thực
  • 22. JAVA MAIL in JSP Copy tất cả thư viện (tải từ sun) của Java Mail vào thư mục CATALINA_HOME/lib (Tomcat 6.0) hay CATALINA_HOME/common/lib Import các thư việc javax.mail.*, javax.mail.internet.* và java.util.* khi lập trình gửi nhận mail Các bước thực hiện Xây dựng giao diện cho việc gửi nhận mail Thiết lập session cho mail thông qua các thành phần Properties và Session Thiết lập các thông tin message để gửi email Gửi qua email Internet Ví dụ: Sử dụng Java Bean kết hợp Java Mail, JSP để gửi email
  • 23. VÍ DỤ Java bean: package JMail; import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class sendMail{ private String fromName, fromAddr, toName, toAddr, subject, content; public sendMail(){ fromName=&quot;&quot;; fromAddr=&quot;&quot;; toName=&quot;&quot;; toAddr=&quot;&quot;; subject=&quot;&quot;; content public String getFromName(){ return fromName;} public void setFromName(String strFName){fromName=strFName;} public String getFromAddr(){return fromAddr;} public void setFromAddr(String strFAddr){fromAddr=strFAddr;} public String getToName(){return toName;} public void setToName(String strTName){toName=strTName;} public String getToAddr(){return toAddr;} public void setToAddr(String strTAddr){toAddr=strTAddr;} public String getSubject(){return subject;} public void setSubject(String strSub){subject=strSub;} public String getContent(){return content;} public void setContent(String strCon){content=strCon;}
  • 24. VÍ DỤ (tt) public boolean sendValid(){ try{ MyAuthenticator auth=new MyAuthenticator(); Properties props=new Properties(); props.setProperty(&quot;mail.smtp.submitter&quot;, auth.getPasswordAuthentication().getUserName()); props.setProperty(&quot;mail.smtp.auth&quot;, &quot;true&quot;); props.setProperty(&quot;mail.smtp.starttls.enable&quot;, &quot;true&quot;); props.setProperty(&quot;mail.smtp.host&quot;, &quot;smtp.gmail.com&quot;); props.setProperty(&quot;mail.smtp.port&quot;, &quot;587&quot;); Session s=Session.getInstance(props, auth); MimeMessage m=new MimeMessage(s); InternetAddress addressTo=new InternetAddress(toName + &quot;<&quot; + toAddr + &quot;>&quot;); m.addRecipient(Message.RecipientType.TO, addressTo); InternetAddress addressFrom=new InternetAddress(fromName + &quot;<&quot; + fromAddr + &quot;>&quot;); m.setFrom(addressFrom); m.setSubject(subject); m.setText(content); Transport.send(m); return true;} catch(Exception e){ e.printStackTrace(); return false;}}}
  • 25. VÍ DỤ (tt) class MyAuthenticator extends Authenticator { private PasswordAuthentication authentication; public MyAuthenticator() { String username=&quot;class0611@gmail.com&quot;; String password=&quot;abc123456&quot;; authentication = new PasswordAuthentication(username, password); } protected PasswordAuthentication getPasswordAuthentication() { return authentication; } }
  • 26. VÍ DỤ (tt) JSP <html> <head> <title>Send Mail</title></head> <body> <center> <h1>Send Mail use Java Mail</h1> <form method=&quot;post&quot;> Your name: <input type=&quot;text&quot; name=&quot;fromName&quot; /><br/> Your Email: <input type=&quot;text&quot; name=&quot;fromAddr&quot; /> <br/> Your friend's name: <input type=&quot;text&quot; name=&quot;toName&quot; /> To Email Address: <input type=&quot;text&quot; name=&quot;toAddr&quot; /><br/> Subject: <input type=&quot;text&quot; name=&quot;subject&quot; /><br/> Content: <textarea name=&quot;content&quot; cols=&quot;80&quot; rows=&quot;25&quot;></textarea><br/> <input type=&quot;submit&quot; value=&quot;Send&quot;/> </form> </center> <% String fAddr = request.getParameter(&quot;fromAddr&quot;); String tAddr = request.getParameter(&quot;toAddr&quot;); String fName = request.getParameter(&quot;fromName&quot;); String tName = request.getParameter(&quot;toName&quot;); String sSub = request.getParameter(&quot;subject&quot;); String sCon = request.getParameter(&quot;content&quot;); if(fAddr==null || tAddr==null){%> Please enter full information to send mail! <% }else{%> <jsp:useBean id=&quot;objM&quot; class=&quot;JMail.sendMail&quot;/> <jsp:setProperty name=&quot;objM&quot; property=&quot;fromName&quot; value=&quot;<%= fName %>&quot; /> <jsp:setProperty name=&quot;objM&quot; property=&quot;fromAddr&quot; value=&quot;<%= fAddr %>&quot; /> <jsp:setProperty name=&quot;objM&quot; property=&quot;toName&quot; value=&quot;<%= tName %>&quot; /> <jsp:setProperty name=&quot;objM&quot; property=&quot;toAddr&quot; value=&quot;<%= tAddr %>&quot; /> <jsp:setProperty name=&quot;objM&quot; property=&quot;subject&quot; value=&quot;<%= sSub %>&quot; /> <jsp:setProperty name=&quot;objM&quot; property=&quot;content&quot; value=&quot;<%= sCon %>&quot; /> <% boolean rs = objM.sendValid(); if(rs){ %> <h2>Information: Your mail has been sent!</h2> <% }else{%> <h2>Error: Your mail can not send!</h2> <% }}%> </body></html>
  • 27. Bài tập Thực hiện lại các bài tập demo checkLogin của user đăng nhập vào hệ thống (dùng code cứng hay thử kết hợp CSDL (dùng jdbc) trong Java Bean) Dùng Java Bean để lấy thông tin của 1 Sinh viên, in ra màn hình (sử dụng code cứng hay CSDL) Ứng dụng các cách truyền tham số khác nhau trong Java Bean trong các bài tập trên