+ All Categories
Home > Documents > Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS...

Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS...

Date post: 10-Mar-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
63
1 ธีระยุทธ ทองเครือ Servlet
Transcript
Page 1: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

1

ธระยทธ ทองเครอ

Servlet

Page 2: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Servlet

Servlet คอ คลาสในภาษาจาวา ทใชในการรบ request และสง respond บนเครอขายอนเทอรเนตServlet ไมใชภาษา แตเปน Interface มาตรฐานทอยใน Java EE

เพอใหนกพฒนาสามารถสบทอดเพอสรางสวนจดการกบค ารองตางๆบน HTTP Protocol ไดServlet จะไมมเมธอด main เนองจากการท างานอยภายใตการ

ควบคมของ Web Containerตวอยาง Web Container เชน Tomcat, JBoss, WebSphere

2

Page 3: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Java EE Architecture

3

EIS ยอมาจาก Enterprise information system

Application Server

Http, Http/SSL, WebSocket

Servlet, JSPWeb API

Java Database

Connectivity (JDBC)DAO, JPA

Third party System

Mobile Application Web Browser

Java Database Connectivity (JDBC)

Page 4: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Application Server

4

Page 5: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Java Application Server

5

Page 6: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Java Deployment Model

6

Page 7: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Java PaaS Provider

7

https://www.jrebel.com/blog/2020-java-technology-report

Page 8: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Web ContainerWeb Container คอ สวนประกอบหนงทอยใน Application Server ท า

หนาทจดการ request และ response

นกพฒนารบ request และสง response ท Application Server ไดดวยการสรางคลาส Servlet และ deploy ลงบน Web Container

เมอม request มายง Application Server จะถกสงตอไป Web Containerเพอเรยก Servlet ทผใชตองการมาประมวลผล เมอเสรจสนแลวจะสงกลบผาน Application Server ไปยงให Browser ตอไป

8

Page 9: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Server ส าหรบทดสอบบน Eclipse

9

Page 10: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Server ส าหรบทดสอบบน Eclipse

10

เลอกโฟลเดอรทเกบโปรแกรม Tomcat

Page 11: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Servletสราง Project ใหมบน Eclipse เลอกเมน File > New > Dynamic Web Project แลว

ใสชอ Project

สรางคลาส Servlet โดยคลกขวาทชอ Project > New > Servlet

11

Page 12: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Servlet

12

Page 13: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Servlet

13

Page 14: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสราง Servlet

14

Page 15: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การเพม Project บน Tomcat

15

Page 16: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การ Start Server

16

Page 17: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Servlet แรก

17

import java.io.*;import javax.servlet.*;import javax.servlet.annotation.*;import javax.servlet.http.*;

@WebServlet("/wow")public class Test extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>Hello สวสด</h1>");out.println("</html></body>");

}

}

Servlet จะตองสบทอด HttpServlet เสมอ

Web Container จะเรยกเมธอด doGet( ) อตโนมต เมอม HTTP Request แบบ GET

*ขอสงเกต Servlet เปนคลาสทไมมเมธอด main แตกยงท างานได เพราะ Web Container เปนผเรยกเมธอด doGet( ) ใหอตโนมต

Page 18: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

ทดสอบ Servlet

18

ชอ Projectชอ Servlet หรอชอ path ทก าหนดใน @WebServlet("/wow")

Page 19: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

request และ response

19

Page 20: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

คลาสบรรพบรษของ Servlet

20

public class TestServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) {String age = request.getParameter("age");PrintWriter out = response.getWriter();out.println("<html><body>....</html>");

}

}

Page 21: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

คลาสบรรพบรษของ Servletคลาสทเปน Servlet จะตองสบทอดคลาส HttpServlet เพอใหสามารถ Deploy และ

ท างานบน Web Container ได

HttpServletRequest (เปน interface) เกบขอมลค ารองท Browser สงมา นกพฒนาสามารถใชเมธอดตาง ๆ เพอดงขอมลจากค ารองทถกสงมาได เชน URL Parameter, Header, Cookies

HttpServletResponse (เปน interface) ใชเกบขอมลทตองการสงกลบไปยง Browser โดยสามารถเรยกเมธอดทมใหในการก าหนดคาตาง ๆ ทงในสวน header และ bodyของ HTTP Response

21

Page 22: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

22

เปน interface ทประกอบดวย 5 methodในวงจรชวตตาง ๆ ของ Servlet

นกพฒนาจะสราง servlet โดยการสบทอดคลาส HttpServlet โดยอาจเขยนบางเมธอดซ ากบเมธอดแม (override) เพอท างานตามทตองการ

เปน abstract class ทมเมธอดจดการเกยวกบโปรโตคอล HTTP โดยมเมธอด service ท าหนาทตดสนใจเรยกเมธอด doGet( ) เมอมค ารองแบบ GET และ doPost( ) เมอมค ารองแบบโพส

เปน abstract class ทม implement เมธอดบางเมธอด จาก Servlet interface นกพฒนาจะไมสรางคลาสเพอสบทอดคลาสน

การสบทอดคลาส Servlet

Page 23: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสงค ารองและขอมลไปยง Serverแบบ GET การเรยก URL ผาน Browser เปนการสงค ารอง (request) แบบ GET สามารแนบขอมลตอทาย URL สามารถใชฟอรม HTML ในการสง (submit) ขอมลได โดยไมตองระบ method

ในแทก <form>

แบบ POST สงค ารองผานฟอรม หรอโปรแกรมเทานน ขอมลจะสงแบบเบองหลง โดยจะมองไมเหนบน URL ใชฟอรม HTML ในการสง โดยระบ <form method="post“>

23

Page 24: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสงขอมลแบบ GETการสงขอมลไปยง server โดยแนบไปกบ URL จะขนตนดวยเครองหมาย ?สามารถก าหนดชอและคาในรปแบบ name=valueคนแตละขอมลดวยเครองหมาย &ขอมลทสงไปยง server เรยกวา Request Parameter

http://www.tjung.com/profileList?major=it&year=2560&section=1

24

ชอ Domain ชอไฟลรบ request parameter

ขอมลแรก

จดเรมตนของ Request Parameter มหลาย parameter ขนดวย &

ขอมลท 2 ขอมลท 3

Page 25: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การรบขอมลแบบ GET

25

import java.io.*;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.*;

@WebServlet("/StudentServlet")public class StudentServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = request.getParameter("stdName");String age = request.getParameter("age");

response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("Student name: " + name + "<br>");out.println("Age: " + age);out.println("</body></html>");

}

}

รบคาจากฟอรม

สรางผลลพธตอบกลบไปยงBrowser

Page 26: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

ผลลพธ

26

กรณไมแนบขอมลไปกบ URL

กรณแนบขอมลไปกบ URL

Page 27: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การใชฟอรม HTML สงขอมล

27

<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><form action="StudentServlet">

Student name: <input type="text" name="stdName"><br>Age: <input type="text" name="age"><br><input type="submit">

</form></body></html>

กรอกขอมล หลงจากกดปม Submit

Page 28: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

HTTP Messages

28

@WebServlet("/Test")

public class Test extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) {

String girlfriend = request.getParameter("girlfriend");

String status = request.getParameter("status");

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

out.println("<html><body>");

out.println("<h1>Hello " + girlfriend + "</h1>");

out.println("Status:" + status);

out.println("</html></body>");

}

}

Http Request

HeadersGET /FirstProj/Test HTTP/1.1

Host: localhost:8080

Accept: text/html

User-Agent: Chrome/68.0.344

Accept-charset: utf-8

Body

girlfriend=luzy&status=happy

Http Response

HeadersHTTP/1.1 200 OK

server: Apache Tomcat

content-type: text/html; charset=utf-8

Body<html><body>

<h1>Hello lucy</h1>

Status:happy

</html></body>

Servlet

Page 29: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

ขนตอนการท างานของ Servlet

29

ผใชกรอก URL ของ Servlet บน Browser เพอสงค ารองมายง

Container สราง Object 2 ตว - request (คลาส HttpServletRequest) เกบ

ขอมลตางๆทสงมาจากค ารอง- response (คลาส HttpServletResponse) ใช

ส าหรบบรรจขอความสงกลบ

Container คนหา Servlet ทผใชตองการตาม URL ทรองขอ และสราง Thread ของ Servlet พรอมกบสง object request และ response ไปใหเมธอด service( )

Page 30: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

ขนตอนการท างานของ Servlet

30

เมธอด service() เรยกเมธอดตามรปแบบค ารอง- ค ารองแบบ GET จะเรยกเมธอด doGet( ) - ค ารองแบบ POST จะเรยกเมธอด doPost( )

นกพฒนาจะสงผลลพธกลบไปยง client โดยการก าหนดคาตางๆลงในตวแปร response

เมอสง response แลว Container จะก าจด Thread ของ Servlet นน

Page 31: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

ภาษาไทยใน Servletการรบ request จาก client ทมขอมลเปนแบบภาษาไทย สามารถก าหนดการเขารหส

ดงน

หากไมได ใหลองก าหนดคาดงนrequest.setCharacterEncoding("utf-8");

การสง response กลบไปยง client ทอยในรปแบบภาษาไทย จะตองก าหนด content type ดงน โดยตองท ากอนการดง object PrintWriter เทานน

response.setCharacterEncoding("utf-8");

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

String a = new String(request.getParameter("a").getBytes("ISO8859_1"),"utf-8");

a คอ ชอ parameter ทรบจากฟอรม หรอ URL

Page 32: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรม

จงสราง Servlet ใหมชอ Compute โดยสามารถรบขอมลจาก URL ได 2 คา ไดแก a และ b เพอน าคา a และ b มาหาผลบวก ลบคณ และหาร

32

Page 33: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจงสรางแบบฟอรม HTML ส าหรบสงคา a และ b ไปยง Servlet ในกจกรรมกอน

หนาน

33

Page 34: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจากกจกรรมกอนหนาน จงสราง dropdown เพอใหผใชเลอกได วาตองการค านวณ

ดวยเครองหมายใด

34

Page 35: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจงสราง Servlet ส าหรบค านวณคาพนทสามเหลยม โดยสรางฟอรม HTML สง

request คาฐาน และสง ไปยง Servlet

35

Page 36: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสงค ารองแบบ POST

36

HTML form

<form method="POST" action="AServlet">Select beer characteristics<br>COLOR: <select name="color" size="1">

<option>light</option><option>amber</option><option>brown</option><option>dark</option>

</select>BODY: <select name="body" size="1">

<option>light</option><option>medium</option><option>heavy</option>

</select><input type="SUBMIT">

</form>

void doPost(HttpServletRequest request, HttpServletResponse response) {

String colorParam = request.getParameter("color");String bodyParam = request.getParameter("body");// more code here

}

HTTP POST request

Servlet class

Page 37: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจงสรางแบบฟอรมส าหรบใส username และ password เมอกดปม Sign In แลวจะสง

ขอมลให Servletสราง Servlet รบขอมลจากฟอรมแบบ Post ดวยเมธอด doPost( ) และตรวจสอบ

เงอนไข ก าหนดให username มคาเปน “bobby” และ password มคาเปน “1234” หมายถงการเขาสระบบส าเรจ โดยแสดงขอความและสตามตวอยาง

37

ผลลพธจาก Servlet

กรณเขาสระบบไมไดกรณเขาสระบบได

ผลลพธ

Page 38: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การใช Postman ทดสอบสง request

38

1. เลอก method ในการสง 2. ระบ URL

3. ก าหนดขอมลทจะสง request- เลอก x-www-form-urlencoded- ก าหนดชอและคา parameter ทจะสง

4. เรมสง request

5. ดขอความ response

Page 39: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

เปรยบเทยบวธการสงขอมล

แบบ GET แบบ POSTสงขอมลผาน URL ขนตนดวย ? และสงคของชอตวแปร=คา คนแตละคดวย &

สงขอมลแบบเบองหลงใช HTML form ในการสง

หากฟอรมไมระบวาเปน method="?" ในแทก<form> จะสงแบบ GET เปนคา default

หากตองการสงแบบ POST ตองระบ attribute method="post" ในแทก <form>

ผใชสามารถเหนขอมลบน URL ของเบราวเซอรได

ผใชไมสามารถมองเหนขอมลบน URL ของเบราวเซอรได

สามารถเกบ Bookmark ไวได และสงขอมลไดอกเพยงเรยก URL เดม

ไมสามารถเกบ Bookmark ไวได การสงขอมลซ าตองกรอกขอมลใหม

จ ากดขนาดขอมลท 2000 อกขระ ไมจ ากดขนาดขอมล ใชในการ upload ไฟลได

39

Page 40: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมสราง Servlet ใหม โดยมการ override เมธอด 2 เมธอด ดงน doGet( ) ให response ขอความ

"Hello from doGet()"

doPost( )ให response ขอความ

"Hello from doPost()“

ทดสอบ Servlet ทสรางขน โดยใชโปรแกรม Postman หรอสรางแบบฟอรม HTML ส าหรบทดสอบสง request ไปยง servlet

40

Page 41: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การใช method service( ) เมธอด service เปนเมธอดแรกทท างานเมอรบ request โดยจะเปนผเลอกวาจะเรยก

เมธอด doGet( ) หรอ doPost( ) หากนกพฒนา override เมธอดนใน Servlet เมอม request ในรปแบบใดกตามจะ

ท างาน ท าให doGet( ) หรอ doPost( ) ไมท างาน

41

Page 42: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจาก Servlet ในกจกรรมกอนหนาน ใหสรางเมธอด service( ) เพมเตม โดยให

response ขอความ

"Hello from service()"

ทดสอบ Servlet ทสรางขน โดยใชโปรแกรม Postman หรอสรางแบบฟอรม HTML ส าหรบทดสอบสง request ไปยง servlet

42

Page 43: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

คลาส HTTP Servlet Request

43

ดงคา Parameter แบบคาเดยวจาก HTTP Request String param = request.getParameter("….");

ดงคา Parameter แบบหลายคาจาก HTTP Request String params[] = request.getParameterValues("….");

ดงขอมลจาก HTTP Request ทสงมาจาก BrowserString client = request.getHeader("User-Agent");

ดงขอมลจาก Cookies ทสงมากบ HTTP RequestCookie cookies[] = request.getCookies( );

ดง session ของผใช HttpSession session = request.getSession( );

ดงวธการสงค ารองของผใชString theMethod = request.getMethod( );

Page 44: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การอานขอมลจาก HTTP Request Header

44

protected void doGet(HttpServletRequest request, HttpServletResponse response) {PrintWriter out = response.getWriter(); out.println("<b>Request Method: </b>" + request.getMethod() + "<br>");out.println("<b>Request URI: </b>" + request.getRequestURI() + "<br>");out.println("<b>Request Protocol: </b>" + request.getProtocol() + "<br>");out.println("<b>Remote Address: </b>" + request.getRemoteAddr() + "<br>");

out.println("<h2>All data in HTTP request header</h2>");Enumeration<String> headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()) {

String headerName = headerNames.nextElement();out.println("<b>" + headerName + ":</b> " + request.getHeader(headerName) + "<br>");

}

}

Page 45: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การรบขอมลแบบหลายคาคลาส HttpServletRequest มเมธอด

String[] getParameterValues(String name)

ใชในการรบคาจาก input ทสามารถเลอกไดหลายคา เชน Check Box หรอ List แบบ Multiple

45

Page 46: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

46

<html><body><form action="SelectBeer">Select beer characteristics<br>Brand:<br><select name="brand" multiple>

<option value="Chang">Chang</option><option value="Leo">Leo</option><option value="Asahi">Asahi</option><option value="Carlsberg">Carlsberg</option>

</select><br>Can Sizes:<br><input type="checkbox" name="sizes" value="12">12 oz.<br><input type="checkbox" name="sizes" value="16">16 oz.<br><input type="checkbox" name="sizes" value="22">22 oz.<br><input type="SUBMIT"></form></body></html>

protected void doGet(...) {String brand[] = request.getParameterValues("brand");String sizes[] = request.getParameterValues("sizes");

PrintWriter out = response.getWriter();for(int x=0; x<brand.length ; x++)out.println("<br>brand: " + brand[x]);

for(int x=0; x<sizes.length ; x++)out.println("<br>sizes: " + sizes[x]);

}

HTML form

Servlet class

Page 47: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจงสรางเวบทสามารถเลอกตวเลขแบบหลายคาจาก List แบบ Multiple และจาก

Checkbox หลงจากนนใหแสดงคาเฉลยจากตวเลขทผใชเลอก

47

Page 48: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

public class GetProduct extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) {try {

ProductDAO productDAO = new ProductDAO();String id = request.getParameter("id");Product product = productDAO.getProduct(Integer.parseInt(id));

response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();out.println("ชอสนคา: " + product.productName + "<br>");out.println("รายละเอยดสนคา: " + product.productDetail + "<br>");out.println("ราคาสนคา: " + product.price);

} catch (Exception e) {e.printStackTrace();

}}

}

การใช DAO ใน Servlet

48

Page 49: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมจงสราง Servlet เพอใช MemberDAO ทเคยสรางไว ส าหรบตดตอกบฐานขอมล

blueshop เพอดงขอมลจากตาราง member ตามชอ user ทรบจาก URL โดยใหServlet สง response ในรปแบบ HTML ทมขอมลชอ-สกล และทอย แสดงดงตวอยางOutput ทตองการ

49

สงชอ username ทตองการทราบขอมล

Page 50: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมสรางเวบคนหารายละเอยดค าสงซอจากตาราง orders โดยใชฟอรมรบหมายเลข

ใบสงซอ (ord_id) จากลกคา หลงจากนนใหสราง Servlet รบคาเพอน าไปประมวลผลกบฐานขอมล แลวสง response ในรปแบบดงตวอยาง

50

ตวอยางการดงคาจากคอลมนทเปนวนเวลา ใชคลาส java.sql.TimestampTimestamp orderDate = resultSet.getTimestamp("ord_date");

ผใชกรอกคาเปน 2

แสดงขอมลของ ord_id = 2

ผใชกรอกคาเปน 5 (ไมมในฐานขอมล) แจงผใชวาคนหาไมพบ

Page 51: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

คลาส HTTP Servlet Response

51

Page 52: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสง response กลบไปยง browserการสงขอมลกลบไปยง browser จะใชเมธอดทอยใน HttpServletResponse object

ซงประกอบดวย 2 เมธอด setContentType( ) ใชก าหนดชนดของขอมลทสงกลบ เชน text/html getWriter( ) ใชเขยนขอมลในรปแบบตางๆ เชน HTML ทตองการสงกลบไปยงผใช

ขอมลในสวน Response ไมไดอยในรปแบบ HTML เทานน สามารถก าหนดใหอยในรปแบบอนไดดวยเมธอด setContentType( ) โดยชนดขอมล (Media Type) ทสามารถสงกลบได เชน text/csv text/xml application/json, text/json application/pdf application/x-zip

52

Page 53: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสง Response ในรปแบบ HTML

53

public class HTMLResponse extends HttpServlet {private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<a href='http://www.google.com'>Google</a>");out.println("</body></html>");

}}

ผลลพธจากการ Render ของ BrowserResponse สวน Body ท Browser ไดรบ

Page 54: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสง Response ในรปแบบ CSV

54

public class ExportCSV extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/csv; charset=tis-620");

response.setHeader("Content-Disposition","attachment;filename=employee.csv");

PrintWriter out = response.getWriter();

out.println("emp_id,emp_name,salary");

out.println("e01,มาน,30000");

out.println("e02,ชใจ,15000");

out.println("e03,ปต,43000");

}

}

Page 55: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมใช ProductDAO ดงขอมลสนคาทงหมดจากฐานขอมล blueshop และน ามาแสดงผล

ในรปแบบ CSV ดงน

ชอสนคา,รายละเอยดสนคา,ราคา

Centrum,วตามนรวมจาก A ถง Zinc,350

Caltrate,บ ารงกระดก เสรมวตามนด,760

...

55

Page 56: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสง Response ในรปแบบ XML

56

public class Test extends HttpServlet {private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {response.setContentType("text/xml; charset=utf-8");PrintWriter out = response.getWriter();out.println("<employee>");out.println("<id>e01</id>");out.println("<name>มาน</name>");out.println("<salary>30000</salary>");out.println("</employee>");

}}

Response สวน Body ท Browser ไดรบ

ชนดขอมลทจะสงกลบ

รหสชดอกขระ(Character Set)

Page 57: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมใช ProductDAO ดงขอมลสนคาทงหมดจากฐานขอมล blueshop และน ามาแสดงผล

ในรปแบบ XML ดงน<products>

<product>

<name>ชอสนคา</name><detail>รายละเอยดสนคา</detail><price>ราคา</price>

</product>

<product>

<name>...</name><detail>...</detail><price>...</price>

</product>

</products>

57

Page 58: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การสง Response ในรปแบบ JSON

58

@WebServlet("/wow")public class Test extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

response.setContentType("application/json; charset=utf-8");PrintWriter out = response.getWriter();out.println("{");out.println("\"id\": \"e01\",");out.println("\"name\": \"มาน\",");out.println("\"salary\": 30000");out.println("}");

}

}

Response สวน Body ท Browser ไดรบ

Page 59: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

Jackson Databind

59

Page 60: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

การแปลง java object เปน JSON

60

public class ExportJson extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// เตรยมขอมลเกบลงใน javabean objectProduct p = new Product(2, "สบ", "ถตว", 50);

// แปลง object เปน String ในรปแบบ JSONObjectMapper mapper = new ObjectMapper();String jsonResult = mapper.writeValueAsString(p);

// สราง respond ส าหรบสงกลบไปresponse.setContentType("text/json; charset=utf-8");PrintWriter out = response.getWriter();out.print(jsonResult);

}

}

Page 61: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

JSONView.com

61

Page 62: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

กจกรรมใช ProductDAO ดงขอมลสนคาทงหมดจากฐานขอมล blueshop และน ามาแสดงผล

ในรปแบบ JSON

62

Page 63: Servlet - servlet.pdf · 2020-02-18 · Java EE Architecture 3 EIS ย่อมาจากEnterprise information system Application Server Http, Http/SSL, WebSocket Web API Servlet,

เอกสารอางองBryan Basham, Kathy Sierra, and Bert Bates. Head First Servlets and JSP, 2nd

Edition, United States of America, O'Reilly Media, 2008.

63


Recommended