bài 4: jsp cơ bản - lập trình mạng nâng cao

49
Java Server Page - JSP ThS Văn Thiên Hoàng

Upload: tuan-nguyen

Post on 01-Jul-2015

4.504 views

Category:

Technology


2 download

DESCRIPTION

Lập Trình Mạng Nâng Cao - JSP Cơ Bản

TRANSCRIPT

Page 1: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Java Server Page - JSP

ThS Văn Thiên Hoàng

Page 2: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Gi i thi uớ ệ

� Java Server Pages (JSP) là công ngh khác cho ệvi c phát tri n ng d ng web. ệ ể ứ ụ

� JSP đ c công b và s d ng đ ng th i v i servlet. ượ ố ử ụ ồ ờ ớ� JSP là m r ng c a servlet. Trong th c t jsp và ở ộ ủ ự ế

servlet đ c s d ng đ ng th i đ phát tri n ng ượ ử ụ ồ ờ ể ể ứd ng web. ụ

Page 3: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Servlet y u đi m gì?ế ể

� Vi t th HTML không tách bi t v i code ế ẻ ệ ớ s a đ i giao di n ph c t p.ử ổ ệ ứ ạ

� JSP là công ngh đ c Sun phát tri n đ ệ ượ ể ểkh c ph c nh c đi m này nh :ắ ụ ượ ể ư� Tách bi t vi c trình bày v i logic cài đ t code.ệ ệ ớ ặ� H tr hai ki u thêm n i dung: script ho c tag. ỗ ợ ể ộ ặ

Page 4: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

JSP làm vi c nh th nào?ệ ư ế

WEB SERVER

JSP ENGINE DatabaseClient

JSP Files

HTTP

JSPs are processed here

Page 5: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các b c x lý trang JSPướ ử

WebClient

WebServer

JSPFile

Servlet

HTMLFile

Sends a request

Request is sent to JSP Engine

Output is sent backResponse is

sent to the client

Page 6: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

ng d ng Web đ n gi nỨ ụ ơ ả

<HTML>

<TITLE> A Simple HTML file with HTML extension </TITLE>

<BODY>

<H1> Hello JSP Programmer! </H1>

</BODY>

</HTML>

HelloWorld.html

Page 7: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

ng d ng Web đ n gi nỨ ụ ơ ả – (1)

<HTML>

<TITLE> A Simple HTML file with JSP extension </TITLE>

<BODY>

<H1> Hello JSP Programmer! </H1>

</BODY>

</HTML>

HelloWorld.jsp

Page 8: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

ng d ng Web đ n gi nỨ ụ ơ ả – (2)

<HTML>

<TITLE> A Simple JSP file </TITLE>

<BODY>

<H1>

<% out.println("Hello JSP Programmer!");%>

</H1>

</BODY>

</HTML>

HelloWorld2.jsp

Page 9: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Thu n l i c a JSPậ ợ ủ

� Tách bi t vi c phát sinh n i dung v i vi c trình bày. ệ ệ ộ ớ ệ� HTML/XML tags� Scriptlets, JavaBeans

� H tr các thành ph nỗ ợ ầ� JavaBeans, EJBs

� Phát tri n trang web đ n gi n s d ng tag. ể ơ ả ử ụ� Easy-to-use, JSP technology specific tags

� Tích h p v i J2EE và Enterprise JavaBeansợ ớ

Page 10: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các thành ph n chính c a JSPầ ủ

� Có 3 thành ph n JSP :ầ� D n h ng – Directẫ ướ

• Cho phép đi u khi n c u trúc servlet.ề ể ấ� Các ph n t k ch b n – Script Element. ầ ử ị ả

• Đ c dùng đ vi t code Java.ượ ể ế� Hành đ ng – Actionộ

• Specific tags that affect the runtime behavior of the JSPs

Page 11: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví dụ

<HTML><HEAD><TITLE>MyFirstProgram.jsp</TITLE></HEAD> <BODY><!-- MyFirstProgram.JSP -->

<%@ page import = "java.util.Date" %>

<% out.println("Hello there!"); %> <Br>

<%= "Current date is " + new Date() %></BODY> </HTML>

Fixed Template data

JSP Directive

JSP Expressio

n

JSP Script let

Page 12: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Chi ti t v x lý trang JSP ế ề ử

User Request

Web Server/ Servlet Engine

JSP Handler Servlet (Page Compilation Servlet)

New ormodified file?

Compile intoServlet

ExecuteServlet

Yes

No

Page 13: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các ph n t Scriptingầ ử

� Expressions� Scriptlets� Declarations

Scripting là cơ chế cho phép nhúng code trực tiếp vào trong trang HTML. Có 3 cách nhúng:

Page 14: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các ph n t Scriptingầ ử – (1)

Expressions được tính và đổi sang dạng chuỗi: java.lang.String.

Evaluated to produce 4

<HTML><BODY> 2 + 2 equals <%= 2 + 2 %> </BODY></HTML>

Ví dụ:

Cú pháp: <%= expression %>

Page 15: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các ph n t Scriptingầ ử – (2)

Scriptlets chứa code java.

Scriptlet<HTML> <BODY> <% out.println("HELLO WORLD!!"); %> </BODY> </HTML>

Ví dụ:

Cú pháp: <% scriptlet_source; %>

Page 16: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Giống expression, scriptlet truy cập tới các biến không tường minh.

Các ph n t Scriptingầ ử – (3)

<% String queryData = request.getQueryString();out.println("Attached GET data: "+queryData);%>

Page 17: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Scriptlets không cần một câu lệnh đầy đủ và khối mở có thể chứa thẻ HTML bên ngoài scriptlets.

Các ph n t Scriptingầ ử – (4)

<% if (Math.random() > 0.5) { %> Have a <B> happy </B> birthday!!<% } else {%> Have a <B> nice </B> day!! <% } %>

Page 18: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các ph n t Scriptingầ ử – (5)

Declarations là định nghĩa biến hoặc phương thức trong JSP.

Declaration

<%! private static int count_access = 0; %> This page has been accessed<%= ++count_access %> time(s) since the server was rebooted.

Ví dụ:

Cú pháp: <%! Declaration; %>

Page 19: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các đ i t ng không t ng minhố ượ ườ

� Các đ i t ng phía server đ c đ nh nghĩa trong ố ượ ượ ịJSP container

� Các đ i t ng này đ c đ nh nghĩa s n trong ố ượ ượ ị ẵJSP.

Page 20: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các đ i t ng không t ng minh–(1)ố ượ ườ

Tên biến Type Miêu tả Phạm

application javax.servlet.ServletContext

Servlet context nhận được bằng lời gọi hàm: getServletConfig().getContext()  

Application

config javax.servlet.ServletConfig

Là đối tượng th ểhi n c a l p ệ ủ ớ ServletConfig  

Page

out javax.servlet.jsp.JspWriter

Là đối tượng thể hiện của lớp JspWriter cho luồng xuất.  

Page

Page 21: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các đ i t ng không t ng minh–ố ượ ườ (2)

page java.lang.Object Thể hiện đối tượng this của Servlet.

Page

pageContext javax.servlet.jsp.PageContext

Đối tượng thể hiện của Page Context của JSP.

Page

request Protocol-dependent subtype of either javax.servlet.ServletRequest or javax.servlet.http.HttpServletRequest

Đối tượng thể hiện của ServletRequest.  

Request

Page 22: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các đ i t ng không t ng minh–ố ượ ườ (3)

response Protocol-dependent subtype of either javax.servlet.ServletResponse or javax.servlet.http.HttpServletResponse 

Đối tượng thể hiện của lớp ServletResponse 

Page

session javax.servlet.http.HttpSession

Đối tượng thể hiện của lớp HTTPSession quản lý dữa liệu Session. 

Session

Page 23: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các đ i t ng không t ng minh–ố ượ ườ (4)

exception java.lang.Throwable Quản lý ngoại lệ ném ra trong trang web.  

Page

Page 24: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d : đ i t ng không t ng minh. ụ ố ượ ườ

<HTML><TITLE> A JavaServer Page using JSP Tags </TITLE><BODY><H2> An example using different session objects </H2><UL>

<LI> <B> Expression - </B> <BR> Your hostname is: <%= %><LI> <B> Scriptlet - </B> <BR>

<% out.println("attached GET data:" + %>

request.getRemoteHost()

request.getQueryString());

Page 25: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

<LI> <B> Declaration - </B> <BR> <%! private int accessCount = 0; %>

This page has been accessed <%= ++accessCount %> time(s) since the server was last restarted <LI> <B> Directive - </B> <BR><%@ page import = "java.util.*" %>Today's Date is: <%= new Date() %></UL></BODY></HTML>

Ví d : đ i t ng không t ng minhụ ố ượ ườ

Page 26: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d :ụ<HTML><HEAD><TITLE>JSP Expressions</TITLE><META NAME="keywords"CONTENT="JSP,expressions,JavaServer Pages"><META NAME="description"CONTENT="A quick example of JSP expressions."><LINK REL=STYLESHEETHREF="JSP-Styles.css"TYPE="text/css"></HEAD>

Page 27: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d :ụ

<BODY><H2>JSP Expressions</H2><UL><LI>Current time: <%= new java.util.Date() %><LI>Server: <%= application.getServerInfo() %><LI>Session ID: <%= session.getId() %><LI>The <CODE>testParam</CODE> form parameter:<%= request.getParameter("testParam") %></UL></BODY></HTML>

Page 28: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Thành ph n D n h ngầ ẫ ướ

� page� Đ nh nghĩa thông tin toàn c c cho trang JSP. ị ụ

� include� S d ng đ chèn văn b n và code vào JSP t i đi m ử ụ ể ả ạ ể

biên d ch. ị� taglib

• Đ nh nghĩ c ch m r ng c a t p th JSP hi n t i. ị ơ ế ở ộ ủ ậ ẻ ệ ạ

Page 29: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các thu c tính D n Pageộ ẫ

Attribute Definit ion

language = ”<scriptingLanguage>”

Báo Server biết ngôn ngữ hiện dùng để biên dịch trang JSP – chỉ có ngôn ngữ Java. 

extends = ”<className>"

Cho biết lớp cha mà servlet sẽ kết thừa.  

import = ”<importList>"

Định nghĩa danh sách gói thư viện cần dùng trong trang JSP. Tên mỗi gói cách nhau bởi dấu phẩy.  

session = "true | false"

Xác đinh dữ liệu phiên là có sẵn cho trang. Mặc định là true.  

buffer = "none | <size in kb>"

Xác định kích thước bộ đệm luồng xuất dữ liệu. Mặc định là 8 kb. 

Page 30: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các thu c tính D n h ng khác-(1)ộ ẫ ướ

Attribute Definit ion

autoFlush = "true | false"

Xác định bộ đệm có tự động đưa dữ liệu về client hoặc sẽ phát sinh ngoại lệ khi bộ đệm đầy. Mặc định là true. 

isThreadSafe = "true | false"

Chỉ ra trang có thể có nhiều yêu cầu tại một thời điểm. Mặc định là True.  

info = ”<text>" Đặc tả thông tin về trang JSP. Và có thể truy cấp bằng hàm Servlet.getServletInfo() . 

errorPage = ”<error_URL>"

Liên qua đến xử lý ngoại lệ URL.  

isErrorPage = "true | false"

Xác định trang JSP là trang errorPage. Mặc định là false. 

contentType = ”<ctinfo>"

Trình bày thông tin kiểu MIME và tập ký tự liên quan của việc đáp trả. 

Page 31: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d - S d ng thu c tínhụ ử ụ ộ

<%@ page language = "java" import = "java.rmi.*, java.util.*" session = "true" buffer = "12kb" autoFlush = "true" info = "page directive jsp" errorPage = "Error.jsp"

isErrorPage = "false" isThreadSafe = "false" %><HTML> <TITLE> JSP Elements </TITLE><HEAD> <H1> JSP Elements </H1> </HEAD><BODY> </BODY> </HTML>

Page 32: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví dụ

//SimpleClass.javapackage myPackage;

public class SimpleClass{ int height; public void SimpleClass() { height = 100; } public void setHeight(int h) { height = h; } public int getHeight() { return height; }}

Page 33: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d – (1)ụ

<!-- UseClass.jsp -->

<%@ page language = "java" %><%@ page import = "myPackage.SimpleClass" %>

<%! SimpleClass myObj = new SimpleClass(); %>

<%= myObj.getHeight() %><% myObj.setHeight(10); %>

<% out.println(myObj.getHeight()); %>

Page 34: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

D n h ng khácẫ ướ

� include� Cú pháp <%@ include file = “relativeURLspec” %>

� taglib� Cú pháp

<%@ taglib uri = “tagLibraryURI” prefix = “tagPrefix” %>

Page 35: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ghi nhớ

� Khi s d ng d n h ng c n ghi nh sau:ử ụ ẫ ướ ầ ơ

� H ng là các thông đi p g i t i JSP Container.ướ ệ ở ớ

� H ng không l u b t kỳ k t qu trong b đ m xu t. ướ ư ấ ế ả ộ ệ ấ

� H ng đ c x lý khi JSP đ c thi t l p. ướ ượ ử ượ ế ậ

Page 36: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Dẫn hướng JSP action cung cấp phương pháp để đóng gói các tác vụ hiệu quả. Dẫn hướng này tạo hoặc thao tác trên đối tượng, thường là JavaBeans.

Các JSP Action chu nẩ

� <jsp:useBean>� <jsp:setProperty>� <jsp:getProperty>� <jsp:param>� <jsp:include>� <jsp:forward>� <jsp:plugin>

Page 37: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các JSP Action chu n – (1)ẩ

� <jsp:useBean>� K t h p v i JavaBean đ nh nghĩa tr c v i ph m vi và ID. ế ợ ớ ị ướ ớ ạ

� <jsp:setProperty>� Thi t l p giá tr thu c tính c a Bean. ế ậ ị ộ ủ

� <jsp:getProperty>� Truy c p giá tr thu c tính đ c t c a th hi n Biean. ậ ị ộ ặ ả ủ ể ệ� Bi n đ i nó sang d ng đ i t ng chu i java.lang.String.ế ổ ạ ố ượ ỗ� Đ t nó trong đ i t ng không t ng minh ặ ố ượ ườ out.

Page 38: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các JSP Action chu n – (2)ẩ

� <jsp:param>� Is used to provide the tag/value pairs of information� Đ c s d ng là thu c tính con c a các action: ượ ử ụ ộ ủ

jsp:include, jsp:forward, and jsp:plugin.� Cú pháp nh sau:ư

<jsp:param name = "pName" value = "pValue"></jsp:param>

<jsp:param name = "pName" value = "pValue"/>

Page 39: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các JSP Action chu n – (3)ẩ

� <jsp:include>� Cung c p c ch đ thêm các ngu n tài nguyên đ ng ấ ơ ế ể ồ ộ

ho c tĩnh vào trang JSP. ặ� Cú pháp nh sau:ư

<jsp:include page = "urlSpec" flush = "true"/>

<jsp:include page = "urlSpec" flush = "true"><jsp:param .../></jsp:include>

Page 40: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d : S d ng <jsp:include>ụ ử ụ

<!-- Emplheader.jsp --><!-- Get employee’s name from the request --><% out.println("Employee: " + request.getParameter("employee")); %> <!-- Get employee’s title from the request --><% out.println("Title: " + request.getParameter("title")); %>

Trang JSP sẽ tìm nhân viên với tên và tựa đề. Được gọi dùng trong trang Employeeinfo.jsp

Page 41: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d : S d ng <jsp:include>-(1)ụ ử ụ

<HTML><TITLE> Employee Information </TITLE> <BODY>

<jsp:param name= "employee" value= "Martha" /><jsp:param name= "title" value= "Doctor"/></jsp:include> </BODY> </HTML>

<jsp:include page= "Emplheader.jsp" flush= "true" >

Employeeinfo. jsp

Page 42: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

<jsp:include>

Employeeinfo.jsp

Emplheader.jsp

<jsp:include page = “Empl…

Page 43: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các JSP Action chu n – (4)ẩ

� <jsp:forward>� Cho phép JSP engine g i request trang hi n t i t i m t ngu n ở ệ ạ ớ ộ ồ

tĩnh, servlet ho c m t trang JSP khác trong th i gian ch y. ặ ộ ờ ạ� Cú pháp nh sau:ư

<jsp:forward page = "relativeURLSpec" />

<jsp:forward page = "relativeURLSpec" ><jsp:param .../></jsp:forward>

Page 44: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d : S d ng <jsp:forward>ụ ử ụ

<HTML><TITLE> Using the JSP Forward action </TITLE> <BODY><!-- Checks whether the "company id" is equal to 1 --><% if ((request.getParameter("companyID")).equals("1")) {%> <jsp:param name= "employee" value= "Martha" /> <jsp:param name= "title" value= "Doctor" /> </jsp:forward><%} else { out.println("Sorry, no matching values found"); }%></BODY> </HTML>

<jsp:forward page= "MarthaHome.jsp">

Forward.jsp

Page 45: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví d : s d ng <jsp:forward> – (1)ụ ử ụ

<HTML>..<BODY><% out.println("Employee:" + request.getParameter("employee"));out.println("Title:" + request.getParameter("title")); %> </BODY> </HTML>

MarthaHome.jsp

Page 46: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

<jsp:forward>

Forward.jsp

MarthaHome.jsp

<jsp:forward page = “Martha…

Page 47: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Các JSP Action chu n – (5)ẩ

� <jsp:plugin>� Phát sinh HTML phù h p v i trình duy t Client nh OBJECT ợ ớ ệ ở ư

hay EMBED. � Cú pháp nh sau:ư

<jsp:plugin type = "pluginType" code = "classfilename" codebase = "relativeURLpath" ><jsp:params> <jsp:param …/>......</jsp:params> </jsp:plugin>

Page 48: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Ví dụ

� V i Appletớ<APPLET CODE=“MyApplet.class” WIDTH=457 HEIGHT=350></APPLET>

� Ta s d ng th ử ụ ẻ jsp:plugin nh sau:ư<jsp:plugin type=“applet” code=“MyApplet.class” width=“457” height=“350” />

Page 49: Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao

Câu h iỏ