lesson5 jsp
TRANSCRIPT
1
JSP JSP (Java Server Pages): คอ Script language ทท ำงำนบนเครอง server เชนเดยวกบ perl,
php asp หรอ cold fusion เปนตน โดยมโครงสรำงภำษำแบบ JAVA หรอเปน JAVA ประเภทหนง แตมำเขยนใหอยในรปของ HTML แตเมอจะใชงำนตว File JSP จะถกแปลงใหเปน file ของ JAVA
โครงสรางของ JSP โครงสรำงของ JSP นนเปนลกษณะของแทก (tag) ชนดพเศษทแทรกเขำไปในเอกสำร
HTML และเปลยนนำมสกลของเอกสำรเปน . JSP แทนทจะเปน .HTM หรอ .HTML โดยแทกเหลำนเวบบรำวเซอรจะไมสำมำรถตควำมหมำยได จะตองน ำไปประมวลผลกอนทเวบเซรฟเวอรเทำนน (หรอทเรำเรยกวำกำรท ำงำนแบบ Server Side) แลวน ำผลลพธทงหมดสงกลบมำยง เวบบรำวเซอรในลกษณะของเอกสำร HTML ซงเวบบรำวเซอรสำมำรถตควำมหมำยและน ำ มำแสดงผลได
กำรท ำงำนโดยรวมของ JSP จะเรมจำกบรำวเซอรรองขอ (HTTP Request) เอกสำรท มนำมสกลเปน JSP ไปยงเวบเซรฟเวอรผำนทำงโปรโตคอล HTTP เวบเซรฟเวอรกจะน ำเอกสำร JSP ทไดรบมำนนสงตอไปให JSP Engine (JSP Engine คอ แอพลเคชนทถกโหลดสหนวยควำมจ ำและท ำงำนอยบนเวบเซรฟเวอร หนำทหลกคอแปลควำมหมำยและประมวลผลเอกสำร JSP) จำกนน JSP Engine กจะประมวลผล และสงผลลพธกลบมำยงเวบเซรฟเวอร แลวเวบเซรฟเวอรกจะสงผลลพธกลบมำยงบรำวเซอร (HTTP Response) อกท ในลกษณะของเอกสำร HTML บรำวเซอรกจะสำมำรถแสดงผลได
2
ขอดของ JSP 1. Write Once Run Anywhere : กำรท ำงำนไดในหลำยระบบปฏบตกำรไมวำจะเหน
Mac OS, Linux และ Windows 2. Component Reusable : ดวยควำมสำมำรถในกำรน ำจำวำบน (Java Bean) มำใช ซง
มลกษณะเปนคอมโพเนนต ท ำใหคอมโพเนนตเหลำนสำมำรถน ำกลบมำใชไดใหมและใชรวมกนระหวำงผพฒนำเวบไซตท ำใหกำรพฒนำท ำไดเรวขน เชน หำกเรำสรำงคอมโพเนนต ทท ำกำรเชอมตอกบฐำนขอมลไว เมอมกำรสรำงเอกสำร JSP ใหมขนมำและตองกำรเชอมตอกบฐำนขอมล กจะท ำไดโดยกำรเรยกใชคอมโพเนนตทไดสรำงไวแลว
3. JAVA Extension : JSP มคณสมบตหลำยอยำงไมวำจะเปน กำรโปรแกรมเชงวตถ(Object Oriented Programming) ,กำรท ำงำนกบ Thread (Multithreading) และ กำรจดกำรกบขอผดพลำด (Error Handling)
4. Separation of Dynamic and Static Content กำรแยกจำกกนระหวำงสวนทเปนไดนำมก เชน ขอมล กบสวนทเปนสแตตก เชน แทก HTML ตำง ๆ ท ำใหกำรดแลและพฒนำเวบไซตงำยขน
SQL เอสควแอล (SQL) คอ ภำษำสอบถำมขอมล หรอภำษำจดกำรขอมลอยำงมโครงสรำง
มกำรพฒนำภำษำคอมพวเตอร และโปรแกรมฐำนขอมลทรองรบมำกมำย เพรำะจดกำรขอมลไดงำย เชน MySQL, MsSQL, PostgreSQL หรอ MS Access เปนตน ส ำหรบโปรแกรมฐำนขอมล ทไดรบควำมนยมคอ MySQL เปน Open Source ทใชงำนไดทงใน Linux และ Windows SQL เปนภำษำทใชในกำรเขยนโปรแกรม เพอจดกำรกบฐำนขอมลโดยเฉพำะ สำมำรถแบงกำรท ำงำน ไดเปน 4 ประเภท ดงน
1. Select query ใชส ำหรบดงขอมลทตองกำร 2. Update query ใชส ำหรบแกไขขอมล 3. Insert query ใชส ำหรบกำรเพมขอมล 4. Delete query ใชส ำหรบลบขอมลออกไป
3
Select query ใชในกำรดงขอมลในฐำนขอมล จะมกำรคนหำรำยกำรจำกตำรำงในฐำนขอมล ตงแตหนง
ตำรำงขนไป ตำมเงอนไขทสง ผลลพธทไดจะเปนเซตของขอมลทสำมำรถสรำง เปนตำรำงใหม หรอใชแสดงออกมำทำงจอภำพเทำนน โดยมรปแบบดงน
Select (รำยละเอยดทเลอก) Form (ตำรำงแหลงทมำ) Where (ก ำหนดเงอนไขฐำนขอมลทเลอก) Group by (ชอคอลมน)
ค าสงคนหาขอมล (Query Statement) ค ำสง SELECT เปนค ำสงกำรเรยกดขอมล หรอ คนหำขอมล ตำมเงอนไขทระบ เนองจำก
ค ำสง SELECT เปนค ำสงทมรปแบบกำรใชงำนทงำยเพอชวยในกำรคนหำขอมลทซบซอน ดงมรปแบบดงน
SELECT <ชอคอลมนทตองกำรดขอมล>
FROM <ชอตำรำง>
WHERE <เงอนไขตำมทระบ>
SELECT --- เปนค ำสงใหท ำกำรเรยกดขอมลในคอลมนทระบ ซงอำจจะมำกกวำหนงกไดและถำม
มำกกวำหนงคอลมนตองคนดวย คอมมำ (,) และนอกจำกนยงสำมำรถใชเครองหมำย
ดอกจน (*) เพอแสดงถงกำรขอดขอมลทงหมดไดอกดวย
FROM --- เปนสวนประกอบของค ำสงทบอกถงตำรำงทตองกำรดซงอำจจะมมำกกวำหนงตำรำงก ไดทจะถกเรยกใชจำกค ำสง SELECT
WHERE--- เปนสวนประกอบของค ำสง ทใชบงบอกเงอนไขทจะใชในกำรคนหำขอมล ขนมำจำกตำรำงใดๆ ทอยหลง FROM น
4
รปแบบการใชงาน ค าสงการคนหา/แสดงขอมล ค ำสง SQL SELECT สำมำรถเรยกไดทงตำรำง หรอวำ สำมำรถระบฟลดทตองกำรเรยกด
ขอมลได ยกตวอยางเชน
กำรเลอกขอมลทงหมดของ Table
ค ำสง SQL WHERE เปนค ำสงทใชส ำหรบกำรระบเงอนไขกำรเลอกขอมลในตำรำง (Table) ค ำสง SQL WHERE สำมำรถระบเงอนไขในกำรเลอกขอมลได 1 เงอนไข หรอ มำกกวำ 1 เงอนไข ยกตวอยางเชน 1. กำรเลอกขอมลโดยใช Operators = (เทำกบ)
2. กำรเลอกขอมลโดยใช ค ำสง LIKE
5
ขอสงเกต 1. ประโยคยอย WHERE เรำสำมำรถระบเงอนไขไดโดยใชโอเปอรเรเตอร ทวไป เชน
NOT < > = กรณทคอลมนเปนตวเลข เรำกสำมำรถระบเงอนไขทเปนกำรค ำนวณไดเชน +,-,*,/ 2. ค ำวำ Like ใชกบคำในคอลมนประเภทตวอกษรวำตรงกบประโยคทตองกำรหรอไม เรำสำมำรถใชเครองหมำย widecard เ ชน * ,??,% ในประโยคได ตำมตวอยำงขำงตน 3. ในกำรค ำนวณนนมฟงกชน COUNT,SUM,AVG.MIN,MAX ซงสำมำรถน ำมำใชได เชนSelect Count(id) From stdinfo หมำยถง ใหแสดงจ ำนวนรำยกำรท งหมดในตำรำง 4. ในกรณทตำรำงสองตำรำงมควำมสมพนธกน เรำกสำมำรถดขอมลทงสองตำรำงพรอมกนได เชน ตำรำงท 1 ขอมลนกศกษำชอ stdinfo ก ำหนดใหมคอลมนรหสประจ ำตว (id) ,ชอ (fname), นำมสกล (lname) ตำรำงท 2 ขอมลเกยวกบวชำทเรยน ชอ substd ก ำหนดใหมคอลมนชอวชำ (subject), รหสประจ ำตวอำงอง (rid) ,อำจำรยผสอน (teacher) ตองกำรดขอมลรหสประจ ำตว ชอ นำมสกล และชอวชำทเรยน เรำจะใชค ำสงดงน SELECT stdinfo.id,stdinfo.fname,stdinfo.lname,substd.subject FROM stdinfo,substd WHERE stdinfo.id=substd.rid
6
วธใชงาน ค าสงการคนหา/แสดงขอมล
การสรางหนา JSP
1. คลกขวำท WebContent --> New --> JSP file แลวตงชอวำ Search.jsp
2. เขยนค ำสงหนำ Search.jsp ใหแสดงผลออกมำดงหนำ Web Pageโดยมตวเลอกใหผใช
สำมำรถเลอกได 3 กรณ คอ คนหำจำกทงหมด , คนหำจำกชอ และคนหำจำกชอทใกลเคยง
7
การสรางหนา SearchServlet.java
1. คลกขวำท Package com.controller --> New --> Servlet แลวตงชอวำ SearchServlet
2. เขยนโคดหนำ SearchServlet. java ซงเขยนใน Method doPost
8
การสรางหนา MemberDAO.java
3. เขยนโคดหนำ MemberDAO.java
การเขยนโคดโดยเลอกจากขอมลทงหมดของ Table
ผลลพธของการรนโปรแกรม
9
การเขยนโคดโดยเลอกจากขอมลบางฟลดโดยใช Operators = (เทากบ)
ผลลพธของการรนโปรแกรม
10
การเขยนโคดโดยเลอกจากขอมลบางฟลดโดยใช ค าสง LIKE
ผลลพธของการรนโปรแกรม
11
การเขยนโคดหนา SearchServlet..java
4. เขยนโคดหนำ SearchServlet..java เพอเรยกใช Class MemberDAO และกำรเขยนเงอนไขในกำรเลอกใช Combo box
การเขยนโคดหนา Search.jsp
5. เขยนโคดหนา Search.jsp เพอใหแสดงขอมลจากผลการคนหา
12
Code Class Search
<body> <form action="SearchServlet" method="post"> <center> <table> <tr> <td> <select name="trpe"> <option value="00" selected="selected">กรณำเลอก</option> <option value="all">คนหำจำกทงหมด</option> <option value="name">คนหำจำกชอ</option> <option value="namelike">คนหำจำกชอใกลเคยง</option></select> </td> <td><input type="text" id="keyword" name="keyword"></td> <td><input type="submit" value="คนหา"></td> </tr> </table> </center> <%ArrayList<MembersBean> memberlist = (ArrayList<MembersBean>)request.getAttribute("member"); if(memberlist != null){%> <center> <table border="2"> <tr> <td align="center">ล ำดบ</td> <td align="center">User</td> <td align="center">Password</td> <td align="center">ชอ</td>
13
<td align="center">นำมสกล</td> <td align="center">แกไข</td> <td align="center">ลบ</td> </tr> <%for(int i=0;i<memberlist.size();i++){ MembersBean mem = (MembersBean)memberlist.get(i);%> <tr> <td><%=mem.getMember_id() %></td> <td><%=mem.getMember_username() %></td> <td><%=mem.getMember_password() %></td> <td><%=mem.getMember_firstname() %></td> <td><%=mem.getMember_lastname() %></td> <td><a href="#">แกไข</a></td> <td><a href="#">ลบ</a></td> </tr> <% }%> </table> </center> <% }%> </form>
</body>
14
Code Class MembersDAO //Method ทใชเรยกแสดงผลทงตำรำง public ArrayList<MembersBean> getAllMembers(){ ArrayList<MembersBean> memlist = new ArrayList<MembersBean>(); MembersBean mem = new MembersBean(); String sql ="SELECT * FROM membersbook"; try{ dbc.createConnection(); stmt = dbc.getStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ mem = new MembersBean(); mem.setMember_id(rs.getInt("member_id"));
mem.setMember_username(rs.getString("member_username")); mem.setMember_password(rs.getString("member_password")); mem.setMember_firstname(rs.getString("member_firstname")); mem.setMember_lastname(rs.getString("member_lastname")); mem.setMember_sex(rs.getString("member_sex")); mem.setMember_address(rs.getString("member_address")); mem.setMember_county(rs.getString("member_county")); mem.setMember_email(rs.getString("member_email")); mem.setMember_number(rs.getString("member_number")); mem.setMember_image(rs.getString("member_image")); memlist.add(mem); } }catch(SQLException e){ e.printStackTrace(); } return memlist; }
15
//Method ทใชเรยกแสดงผลชอออกมำ public ArrayList<MembersBean> getAllMembersByName(String name){ ArrayList<MembersBean> memlist = new ArrayList<MembersBean>(); MembersBean mem = new MembersBean(); String sql ="SELECT * FROM membersbook WHERE member_firstname ='"+name+"' "; try{ dbc.createConnection(); stmt = dbc.getStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ mem = new MembersBean(); mem.setMember_id(rs.getInt("member_id")); mem.setMember_username(rs.getString("member_username")); mem.setMember_password(rs.getString("member_password")); mem.setMember_firstname(rs.getString("member_firstname")); mem.setMember_lastname(rs.getString("member_lastname")); mem.setMember_sex(rs.getString("member_sex")); mem.setMember_address(rs.getString("member_address")); mem.setMember_county(rs.getString("member_county")); mem.setMember_email(rs.getString("member_email")); mem.setMember_number(rs.getString("member_number")); mem.setMember_image(rs.getString("member_image")); memlist.add(mem); } }catch(SQLException e){ e.printStackTrace(); } return memlist; }
16
//Method ทใชเรยกแสดงผลชอทคลำยกนออกมำทงหมด public ArrayList<MembersBean> getAllMembersByNameLike(String name){ ArrayList<MembersBean> memlist = new ArrayList<MembersBean>(); MembersBean mem = new MembersBean(); String sql ="SELECT * FROM membersbook WHERE member_firstname LIKE'%"+name+"%' "; try{ dbc.createConnection(); stmt = dbc.getStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ mem = new MembersBean(); mem.setMember_id(rs.getInt("member_id")); mem.setMember_username(rs.getString("member_username")); mem.setMember_password(rs.getString("member_password")); mem.setMember_firstname(rs.getString("member_firstname")); mem.setMember_lastname(rs.getString("member_lastname")); mem.setMember_sex(rs.getString("member_sex")); mem.setMember_address(rs.getString("member_address")); mem.setMember_county(rs.getString("member_county")); mem.setMember_email(rs.getString("member_email")); mem.setMember_number(rs.getString("member_number")); mem.setMember_image(rs.getString("member_image")); memlist.add(mem); } }catch(SQLException e){ e.printStackTrace(); } return memlist; }
17
Code Class SearchServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String trpe = request.getParameter("trpe"); String keyword = request.getParameter("keyword"); String page = "Search.jsp"; System.out.println("trpe : "+trpe); System.out.println("keyword : "+keyword); MemberDAO md = new MemberDAO(); if(trpe.equals("all")){
request.setAttribute("member", md.getAllMembers()); }else if(trpe.equals("name")){
request.setAttribute("member", md.getAllMembersByName(keyword)); }else {
request.setAttribute("member", md.getAllMembersByNameLike(keyword));
} }
18
ผลลพธของการรนโปรแกรมทงหมด
1. กำรเลอกแสดงขอมลทงหมดใน Table
2. กำรเลอกแสดงขอมลแบบใช Operators = (เทำกบ)
3. กำรเลอกขอมลโดยใช Like
19
อางอง
http://www.choosak.com/page-29/
http://suchada51122470136.blogspot.com/
http://www.sut.ac.th/ist/Courses/204204/Lecture/204204_47_09.pdf
http://www.cmm11.com/board/index.php?topic=2607.0
http://www.thaicreate.com/asp/asp-sql-command.html