บทที่ 4 jsp (java server pages) 4.pdf · 2018-10-09 · บทที่ 4 jsp ... jsp...
TRANSCRIPT
1
ธระยทธ ทองเครอ
ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร
มหาวทยาลยขอนแกน
บทท 4
JSP
(Java Server Pages)
JSPJSP คอ เทคโนโลยทใชในการสราง Web Application เชนเดยวกบ Servlet JSP จะประมวลผลบน Server โดยสามารถรบ request และสง response ได
เชนเดยวกบ ServletJSP จะคลายคลงกบภาษา PHP คอ เขยน HTML, CSS หรอ JS และแทรกสวนท
ท างานในแทกเฉพาะ
2
<html>
<body>
<?php
echo "Hello World";
?>
</body>
</html>
<html>
<body>
<%
out.println( "Hello World");
%>
</body>
</html>
PHP JSP
การแทรกค าสงภาษา Java ใน JSPใชสญลกษณทเรยกวา Scriptlet
3
<html>
<body>
<% int count = 0; %>
The page count is now:
<%
out.println(count++);
%>
</body>
</html>
<% โคดภาษา Java %>
ตวอยาง
4
<html><body><% for (int i=1; i<=10; i++) { %>
Hello <%=i %> <br><% } %></body></html>
แทก Expressionแทก Expression ใชแทนค าสง out.prinln( ) มรปแบบดงน
5
<html>
<body>
<% int count = 0; %>
The page count is now:
<% out.println(count++); %>
</body>
</html>
<html>
<body>
<% int count = 0; %>
The page count is now:
<%= count++ %>
</body>
</html> !!! ขอควรระวง !!!แทกนจะไมม Semicolon
ไมใชแทก Expression ใชแทก Expression
<%= expression %>
Implicit objectObject ทไฟล JSP สามารถเรยกใชไดเลย โดยไมตองประกาศกอน ไดแก
out - ใชส าหรบใสขอมล response ในสวนทจะสงกลบไปแสดงผล request – ใชดงขอมลจาก HTTP request response - ใชเกบขอมลผลลพธทสงกลบ session – ตวแปร session
6
ตวอยาง
7
<html><body><%
String fname = request.getParameter("fname");out.println(fname + "<br>");
%>
<%= request.getParameter("lname") %></body></html>
<html><body>oily<br>sunny</body></html>
ผลลพธจาก Browser ผลลพธในรปแบบโคด
ภาษาไทยบน JSPใชค าสงดงน
ซงเปนค าสงเดยวกบใน Servlet
8
<%@page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
กจกรรมจงสรางฟอรม HTML และสงขอมลไปยงไฟล JSP อกไฟลหนง เพอแสดงผลดง
ตวอยาง
9
กจกรรมจงเปลยนนามสกลไฟล .html จากกจกรรมกอนหนาเปน .jsp และเพมฟอรมรบคาวน
เดอนปเกด ทเปนแบบรายการใหผใชเลอก โดยใชวธการวนลปดวยค าสงภาษาจาวา ดงตวอยาง
10
JSP จะถกแปลเปน ServletJSP ทสรางขน มนามสกลเปน .jsp เมอไฟล JSP ถกเรยกครงแรก Web Container จะแปลใหเปน Servlet (.java) กอน
เรมท างาน หากมแทกตางๆจะถกแปลงเปน content เกบลงใน response
11
การแปลและ compile ไมไดเกดขนทกครงท JSP ถกเรยกแตจะเกดขน 2 กรณเทานน- ผใชเรยกไฟล JSP ครงแรก- ไฟล JSP มการแกไข
JSP คอ Servletโครงสรางของ JSP จะมความคลายคลงกบ Servlet โดยมเมธอด service( ) ทท า
หนาทรบ request และสง response (JSP ใชชอเมธอด _jspService)
12
ไฟล JSP ทถกแปลเปน Servlet จะเกบอยใน[workspace folder]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost
การ importหาก JSP มการเรยกใชคลาสมาตรฐานของ Java หรอคลาสทสรางขนเองจะตอง
import ในรปแบบดงน
ตวอยาง<%@page import="java.util.*" %><%@page import="java.util.*, mypack.*" %><%@page import="java.util.ArrayList, mypack.TestDB, mypack2.*" %>
เรยกแทกชนดนวา Directive
13
<%@page import="ชอ package และคลาส" %>
ใช * เพอระบวาตองการใชทกคลาสใน package
หากใชคลาสจากหลาย package ใหคนดวย comma
สามารถระบจ าเพาะชอคลาสทตองการใชหลงชอ package ได
การใส CommentComment ใน JSP อยในรปแบบดงน
Comment แบบนจะไมถกสงไปกบ response (client ไมเหนใน code html)
หากใช Comment ในรปแบบภาษา html จะสามารถมองเหนไดท client
14
<%-- JSP Comment --%>
<!-- HTML Comment -->
include directiveการแยกสวนประกอบของเวบเพจไวคนละไฟลจะชวยใหงายตอการกลบมาแกไข
สามารถใช Include directive เพอชวยในการก าหนด Template ของเวบไซตได
ไฟล html หรอ jsp ทตองการน ามาประกอบเปนสวนหนงของเวบเพจจะใชค าสงดงน
15
<jsp:include page="path/ชอไฟล jsp หรอ html"/>
16
Page1.jsp<html><body><jsp:include page="header.jsp"/>
xxxxx Page 1 Content xxxxxx
<jsp:include page="footer.html"/></body></html>
header.jsp<div style="background-color: navy; color: white;"><h1>Header</h1></div>
footer.html<br><br><div style="background-color: aqua;">Footer</div>
Page2.jsp<html><body><jsp:include page="header.jsp"/>
<h3>Page 2 Content</h3>
<jsp:include page="footer.html"/></body></html>
การสงตอขอมลServlet/JSP สามารถสงตอ object ไปยงไฟล Servlet/JSP อนๆ ได ขนตอนดงน ก าหนดชอ และขอมลทตองการสง
request.setAttribute("ชอ attribute", ตวแปรหรอคาสงตอ); เชนrequest.setAttribute("fullname", "tjung");
ใชค าสงสงตอrequest.getRequestDispatcher("ชอ Servlet/JSP").forward(request,response);
ดงขอมลทสงตอมาใชrequest.getAttribute("ชอ attribute"); เชน
String fullname = (String)request.getAttribute("fullname");
17
การสงตอขอมล
18
@WebServlet("/TestController")public class TestController extends HttpServlet {
protected void doGet(…) {request.setAttribute("fullname", "tjung");request.getRequestDispatcher("next-page.jsp").forward(request,response);
}}
Servlet
JSP (next-page.jsp) <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><html><head><meta charset="utf-8"></head><body><% String fullname = (String)request.getAttribute("fullname"); %><%= fullname %></body></html>
ผลลพธ สงเกตวา URL จะไมเปลยนไปยง next-page.jsp