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

Post on 01-Jul-2015

4504 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

Transcript

Java Server Page - JSP

ThS Văn Thiên Hoàng

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. ụ

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. ỗ ợ ể ộ ặ

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

WEB SERVER

JSP ENGINE DatabaseClient

JSP Files

HTTP

JSPs are processed here

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

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

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

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

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ợ ớ

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

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

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

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:

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 %>

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; %>

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);%>

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!! <% } %>

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; %>

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.

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

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

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

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

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());

<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ụ ố ượ ườ

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>

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>

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. ị ơ ế ở ộ ủ ậ ẻ ệ ạ

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. 

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ả. 

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>

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; }}

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()); %>

D n h ng khácẫ ướ

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

� taglib� Cú pháp

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

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. ướ ượ ử ượ ế ậ

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>

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.

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"/>

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>

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

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

<jsp:include>

Employeeinfo.jsp

Emplheader.jsp

<jsp:include page = “Empl…

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>

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

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

<jsp:forward>

Forward.jsp

MarthaHome.jsp

<jsp:forward page = “Martha…

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>

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” />

Câu h iỏ

top related