Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
1
ดร.ธระยทธ ทองเครอภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร
มหาวทยาลยขอนแกน
ปฏบตการท 1พนฐาน Java และ JSP
ชนดขอมลพนฐานของตวแปรชนดขอมลพนฐานของตวแปรint 4 bytesshort 2 byteslong 8 bytesbyte 1 bytefloat 4 bytesdouble 8 byteschar 2 bytesboolean true, false
2
หมายเหต ชนดขอมลพนฐานของตวแปรจะขนตนดวยตวพมพเลก
Hello WorldHello World
3
class Hello {public static void main(String[] args) {
System.out.println("Hello World"); }
}
ชอคลาส ฟงกชน main บอกจดเรมตนโปรแกรม
ฟงกชนแสดงขอความออกทางหนาจอ
โครงสรางควบคมโครงสรางควบคม
4
if/else
do/while
for
switch
if(x==4) {// act1
} else {// act2
}
int i=5;while(i!=0) {
// act1i--;
}
for(int i=0;i<=9;i++){// act1
}
char c=IN.getChar();switch(c) {
case ‘a’:case ‘b’:
// act1break;
default: // act2
}
while
int i=5;do {
// act1i--;
} while(i!=0);
ClassClassโครงสรางของวตถ ทตองการใชในการสราง Object
5
ชอ Classattribute-1attribute-2attribute-nmethod-1method-2method-n
Fruitgrams: intcals_per_gram: int
setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int
รายการตวแปรทใชในคลาส
ฟงกชนททางานภายในคลาส
ตวอยาง Classตวอยาง Class
6
class Fruit {int grams;int cals_per_gram;void setGrams(int g) { grams = g; }void setCalsPerGram(int cal) {
cals_per_gram = cal;}int total_calories() {
return grams*cals_per_gram;}
}
Fruitgrams: intcals_per_gram: int
setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int
ObjectObject
7
class Fruit {int grams;int cals_per_gram;void setGrams(int g) { grams = g; }void setCalsPerGram(int cal) {
cals_per_gram = cal;}int total_calories() {
return grams*cals_per_gram;}public static void main(String[] a) {
Fruit mango = new Fruit();mango.setGrams(11);mango.setCalsPerGram(100);System.out.println("Mango has " + mango.total_calories() );
}}
Fruitgrams: intcals_per_gram: int
setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int
mango: Fruitgrams = 11cals_per_gram = 100
C l a s
sO b
j e c t
สราง object
เรยกใชฟงกชน
คลาสทถกสรางขนจะไมสามารถใชงานได นอกจากสรางเปน Object กอนกจกรรมกจกรรม
จงเขยนคลาส Triangle ซงมโครงสรางดงแผนภาพ หลงจากนน สรางเปน Object เพอทดสอบการทางานของฟงกชนทสรางขนในคลาส เพอแสดงพนทสามเหลยมออกทางหนาจอ
8
Trianglebase: intheight: int
setBase(int): voidsetHeight(int): voidgetArea(): float
height
base
การสบทอดคลาสการสบทอดคลาสคลาสทสรางขนบางครงอาจจาเปนตองเพมสวน attribute และ method เพอใหทางาน
เฉพาะเจาะจงกวาคลาสเดมทมอย
คลาส Fruit เมอตองการขยายใหเปนคลาส BerryFruit จะสบทอดคณสมบตทวไปของผลไมจากคลาส Fruit และจะเพมคณสมบตของ BerryFruit เขาไป และอาจปรบปรงการทางานของฟงกชนเดม
9
ตวอยาง Classตวอยาง Class
10
class Fruit {int grams;int cals_per_gram;...
int total_calories() {return grams*cals_per_gram;
}}class BerryFruit extends Fruit {
String color;int total_calories() {
return grams*cals_per_gram - 5;}
}public class FruitApp {public static void main(String[] a) {
BerryFruit strawberry = new BerryFruit();strawberry.setGrams(11);strawberry.setCalsPerGram(100);System.out.println("Strawberry has " +
strawberry.total_calories() );}
}
Fruitgrams: intcals_per_gram: int
setGrams(int): voidsetCalsPerGram(int): voidtotal_calories(): int
BerryFruit
color: String
total_calories(): int
InterfaceInterface Interface คอ คลาสทมเพยงตนแบบของฟงกชน ไมมสวนการทางานจรง
Interface ใชในการกาหนดวาคลาสนนทาอะไรไดบาง ทาใหมหลายคลาสททางานแตกตางกนไป แตมตนแบบฟงกชนเหมอนกน
11
ตวอยางการใช Interfaceตวอยางการใช Interface
12
interface Human { public void talk();}
class Thai implements Human { public void talk(){ System.out.println("I'm Thai."); }}
class Japanese implements Human { public void talk() { System.out.println("I'm Japanese."); }}
class Chinese implements Human { public void talk() { System.out.println("I'm Chinese."); }}
public class Test { public static void main(String[] s) { Thai thai = new Thai(); Japanese jap = new Japanese(); Chinese chinese = new Chinese(); talk(thai); talk(jap); talk(chinese); }
private static void talk(IHuman h){ h.talk(); }}
Human
talk(): void
Thai
talk(): void
Japanese
talk(): void
Chinese
talk(): void
AnnotationsAnnotationsAnnotation คอ การกาหนด Configuration ใหกบโปรแกรมทสรางขน
การนา Annotation ไปไวหนาอะไรจะเปนขอมลของสงนน เชน ไวหนา ฟงกชนจะเปนของฟงกชน
รปแบบการเขยน Annotation จะใช @ นาหนา เชน
13
@WebServicepublic class onews {
@WebMethodpublic int add(int a, int b) {
return a + b; }}
PackagesPackagesPackage ใชในการจดหมวดหม Class เพอใหงายตอการพฒนาระบบทมขนาดใหญPackage เปรยบเสมอนโฟลเดอรในการจดเกบโคดโปรแกรม เมอมการเกบ Class ตางๆใน Package แลวจะตองระบชอ package ทสวนหวของ
โคดดวย เชนpackage kku.cs;
เมอตองการใชคลาสใน package ตองระบชอ package ในสวนหวของโคดดวย เชนimport kku.cs.Student; // กรณใช Class เดยวimport kku.cs.*; // กรณใชทกคลาส
14
การตรวจจบขอผดพลาด (Exception)การตรวจจบขอผดพลาด (Exception)ภาษา Java มประโยค try-catch สาหรบจดการกบขอผดพลาด ซงมรปแบบดงน
try {<statements>;
} catch(Exception e) {<statements>;
} เมอตองการดกจบขอผดพลาดคาสงบรรทดใดจะนาคาสงไวในสวน try { } เมอตองการใหทางานใดๆ เมอเกดขอผดพลาดจะเขยนคาสงไวในสวน catch { }
15
ตวอยางตวอยาง
16
class Test {public static void main(String[] args) {
try {int x = 0;System.out.println(1 / x);
} catch (Exception ex) {System.out.println(ex);
}}
}
ตรวจจบวาตวหารจะมคาเปน 0 หรอไม
ถามคาเปน 0 ใหแสดงขอความเตอน
JSPJSPJSP หรอ JavaServer Pages คอ ภาษาโปรแกรมททางานบน server (server-side
programming) เชนเดยวกบภาษา PHPJSP ใชในการสราง Web Application ทอยบนพนฐานของภาษา Java
17
การแทรกโคด Java ใน JSPการแทรกโคด Java ใน JSPใชเครองหมาย <% %> เพอแทรกโคด Java ในคาสง HTML
18
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html><body>
<%for(int i=0; i<5; i++) {
out.println("Hello สวสด<br>"); }%>
</body></html>
สวนหว ใชระบการ encodeคลาสทจะ import มาใช
สวน Scriptlet ใชในการแทรกโคด Java
การตดตง Tomcat Serverการตดตง Tomcat ServerTomcat หรอ Apache Tomcat คอ โปรแกรม Web Server ทใชในการประมวลผล
ไฟล JSP ดาวนโหลดโปรแกรมท (เลอกไฟลชนด .zip) http://tomcat.apache.org/
Extract ไฟลไวทใดกไดในเครองไปทโปรแกรม Eclipse เลอกเมน File > New > Other… เลอกท Server
19
สราง Server ในการทดสอบ JSPสราง Server ในการทดสอบ JSP
20
สราง Server ในการทดสอบ JSPสราง Server ในการทดสอบ JSP
21
เลอกโฟลเดอรทเกบโปรแกรม Tomcat
การสราง Project ใหมการสราง Project ใหม เลอกเมน File > New > Dynamic Web Project แลวใสชอ Project
สรางไฟล JSP ในโฟลเดอร WebContent คลกขวาทโฟลเดอร WebContent เลอก New > JSP File
พมพโคด และทาการบนทก
22
การเพม Project บน Tomcat Serverการเพม Project บน Tomcat Server
23
การ Start Serverการ Start Server
24
การรนหนา JSP ผาน Browserการรนหนา JSP ผาน Browser
25
ชอ Project ชอไฟล jsp
การรบคาจาก URLการรบคาจาก URL
26
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html><body><%
String num = request.getParameter("num");if (num!=null) {
int n = Integer.parseInt(num);for(int i=0; i<n; i++) {
out.println("Hello สวสด<br>"); }
}%></body></html>
ตวแปร request ใชในการดงคาจาก URL
คาจาก URL จะเปน String เสมอ จงตองแปลงเปนตวเลขกอนนาไปใช
การรบคาจาก HTML ฟอรมการรบคาจาก HTML ฟอรม
27
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html><body><%
String num = request.getParameter("num");if (num!=null) {
int n = Integer.parseInt(num);for(int i=0; i<n; i++) {
out.println("Hello สวสด<br>"); }
}%>
<form action=""><input type="text" name="num"><input type="submit" value="สง">
</form></body></html>
กจกรรมกจกรรมจงเขยนเวบสาหรบคานวณคาพนทสามเหลยม โดยสรางฟอรม HTML รบคาฐาน
และสง แลวแทรกโคดในการรบคาและคานวณพนทสามเหลยม
28