1. ข้อมูลเบื้องต้นเกี่ยวกับ JSP
JSP (Java Server Pages) เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ เป็นเทคโนโลยีที่เพิ่มภาษา Java ให้กับเพจ HTML เพื่อสร้างเพจแบบไดนามิก: มีการเพิ่มแท็กใหม่ (<%, %>,...)
JSP เป็นเทคโนโลยีการสร้างเว็บเพจแบบไดนามิกที่พัฒนาขึ้นโดยใช้ Java และ Servlet การใช้งานพื้นฐานคือ Java Servlet
หน้า JSP ประกอบด้วยโค้ด HTML และโค้ด Java ที่ฝังอยู่ในนั้น เซิร์ฟเวอร์ประมวลผลโค้ด Java เหล่านี้หลังจากที่ไคลเอ็นต์ร้องขอเพจ จากนั้นจึงส่งคืนเพจ HTML ที่สร้างขึ้นไปยังเบราว์เซอร์ของไคลเอ็นต์
2. กระบวนการดำเนินการ JSP ไคลเอนต์ร้องขอเพจ JSP -> JSP Parser แยกวิเคราะห์ *.jsp และคอมไพล์เป็น *.java -> คำสั่ง javac คอมไพล์เป็น *.class -> รันไฟล์คลาส -> ตอบสนองและส่งกลับผลลัพธ์เป็น ลูกค้า
รหัส JSP มีสองหมวดหมู่: องค์ประกอบ JSP และข้อมูลเทมเพลต ข้อมูลเทมเพลตอ้างอิงถึงส่วนที่กลไก JSP ไม่ได้ประมวลผล กล่าวคือ กลไก JSP จะส่งออกส่วนอื่นที่ไม่ใช่แท็ก <%...%> โดยตรงโดยไม่มีการประมวลผลใดๆ
เมื่อ JSP ถูกดำเนินการเป็นครั้งแรกหรือหลังจากแก้ไขไฟล์ JSP มันจะเรียก JSP Parser เพื่อคอมไพล์ไฟล์ *.jsp ลงในโปรแกรมเซิร์ฟเล็ต ดังนั้นมันจะช้าลง
3. ไวยากรณ์พื้นฐานของ JSP
1. คำอธิบายประกอบสองประเภท
(1) ความคิดเห็น HTML คุณสามารถเพิ่มความคิดเห็นในรูปแบบ HTML ให้กับโค้ด JSP ได้ ความคิดเห็นนี้ถูกส่งไปยังไคลเอนต์แต่จะไม่แสดงบนเพจ ไวยากรณ์จะเป็นดังนี้:
<!-- ความคิดเห็นในรูปแบบ HTML มองเห็นได้เมื่อดูซอร์สโค้ดบนไคลเอนต์ -->
<!-- ความคิดเห็นนี้ถูกเพิ่มโดย <%=programmer%>-->
หากโปรแกรมเมอร์เป็นแฮกเกอร์ ความคิดเห็นที่ส่งกลับมายังไคลเอนต์จะเป็น <!-- ความคิดเห็นนี้ถูกเพิ่มโดยแฮกเกอร์ -->
(2) ความคิดเห็น JSP เขียนด้วยรหัส JSP แต่ไม่ได้ส่งไปยังไคลเอนต์
<%-- ความคิดเห็น JSP ความคิดเห็นนี้จะถูกละเว้นเมื่อมีการคอมไพล์ JSP --%>
<%-- /*ความคิดเห็นหลายบรรทัดใน Scriptlet*/ --%>
<%-- /**ความคิดเห็นแบบหลายบรรทัดใน Scriptlet ซึ่งสามารถแยกออกจากไฟล์ java โดยใช้ javadoc*/ --%>
<%-- ความคิดเห็นบรรทัดเดียวของ JSP--%>
2. 3 องค์ประกอบสคริปต์
(1) การประกาศตัวแปรระดับโลก
<%! int i=0; String str="สวัสดีชาวโลก!";
(2) การแสดงออก
ในโค้ด JSP นิพจน์มักใช้เพื่อส่งออกค่าของตัวแปรซึ่งสามารถอยู่ที่ใดก็ได้
<%! int a=1; int b=2; String str="สวัสดีชาวโลก!";
<%=a+b%> <%=str>
PS: คุณไม่สามารถใช้สัญลักษณ์ ";" เป็นจุดสิ้นสุดของนิพจน์ได้ แต่นิพจน์เดียวกันจะต้องลงท้ายด้วยเครื่องหมายอัฒภาคใน Scriptlet
(3)สคริปต์เล็ต
ส่วนสคริปต์ถูกใช้เพื่อให้มีส่วนโปรแกรม Java ที่ถูกต้อง
<% int b=3; %>ตัวแปรท้องถิ่น
3. 3 องค์ประกอบคำสั่ง
(1)คำสั่งหน้า
<%@ หน้า contentType="text/html;charset=utf-8"%>
กำหนดแอ็ตทริบิวต์โกลบอลของไฟล์ JSP รวมถึง: ภาษา, ส่วนขยาย, อิมพอร์ต, เซสชัน, บัฟเฟอร์, ออโต้ฟลัช, isThreadSafe, ข้อมูล, errorPage, isErrorPage, contentType (รูปแบบเอาต์พุตจากเซิร์ฟเวอร์ไปยังไคลเอ็นต์)
ตำแหน่งสามารถอยู่ที่ใดก็ได้บนหน้า แต่ขอแนะนำให้วางไว้ที่ด้านบนของหน้า
ภาษา: ประกาศประเภทของภาษาสคริปต์ ปัจจุบันใช้ได้เฉพาะ "java" เท่านั้น
ขยาย: ระบุชื่อเต็มของคลาส Java ที่ต้องเพิ่มเมื่อคอมไพล์ JSP มันจะจำกัดความสามารถในการคอมไพล์ของ JSP ดังนั้นโปรดใช้ด้วยความระมัดระวัง!
import: รายการแพ็คเกจ Java ที่ต้องนำเข้า
เซสชัน: ตั้งค่าว่าไคลเอ็นต์ต้องการเซสชัน HTTP หรือไม่ ค่าเริ่มต้นเป็นจริง
บัฟเฟอร์: ขนาดของบัฟเฟอร์ถูกใช้โดยวัตถุ out เพื่อประมวลผลเอาต์พุตของ JSP ที่ดำเนินการไปยังเบราว์เซอร์ไคลเอ็นต์ ค่าเริ่มต้นคือ 8Kb
autoFlush: ตั้งค่าว่าจะบังคับเอาต์พุตหรือไม่ หากบัฟเฟอร์ล้น หากถูกกำหนดเป็น true (ค่าเริ่มต้น) ผลลัพธ์จะเป็นปกติ หากถูกกำหนดเป็น false จะเกิดข้อผิดพลาดที่ไม่คาดคิด
isThreadSafe: ตั้งค่าว่าไฟล์ JSP สามารถใช้ในหลายเธรดได้หรือไม่ ค่าเริ่มต้นเป็นจริง
ข้อมูล: ข้อมูลข้อความ สามารถดึงข้อมูลได้โดยใช้เมธอด Servlet.getServletInfo()
errorPage: ตั้งค่าไฟล์ JSP ที่จัดการเหตุการณ์ข้อยกเว้น
sErrorPage: ตั้งค่าว่าเพจนี้เป็นเพจที่จัดการเหตุการณ์ข้อยกเว้นหรือไม่ หากตั้งค่าเป็นจริง คุณจะสามารถใช้ออบเจ็กต์ข้อยกเว้นได้
contentType: ตั้งค่าประเภท MIME และชุดการเข้ารหัสอักขระ ประเภท MIME เริ่มต้นคือ text/html และชุดอักขระเริ่มต้นคือ charset=ISO-8859-1
สามารถใช้คำสั่ง < %@page %> หลายคำสั่งในหนึ่งเพจได้ แต่ยกเว้นแอตทริบิวต์นำเข้า คุณลักษณะอื่นๆ สามารถใช้ได้เพียงครั้งเดียวเท่านั้น
แพ็คเกจที่นำเข้าโดย JSP ตามค่าเริ่มต้น แพ็คเกจต่อไปนี้ถูกนำเข้าระหว่างการคอมไพล์ JSP ดังนั้นจึงไม่จำเป็นต้องใช้คำสั่งเพจเพื่อแนะนำแพ็คเกจเหล่านั้นในไฟล์ JSP:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
(2) รวมถึงคำสั่ง
รหัส HTML
<%@ รวมไฟล์ = "เส้นทางสัมพัทธ์" %>
ใช้คำสั่งรวมเพื่อรวมไฟล์สแตติกใน JSP และแยกวิเคราะห์คำสั่ง JSP ในไฟล์นี้
หากพาธเริ่มต้นด้วย "/" ดังนั้นพาธนี้จะอ้างอิงถึงพาธบริบทของแอปพลิเคชัน jsp เป็นหลัก
หากพาธถูกเปิดเป็นชื่อไฟล์หรือไดเร็กทอรีไฟล์ พาธนี้จะเป็นพาธปัจจุบันของไฟล์ JSP ที่กำลังใช้งาน
(3)คำสั่งแท็กลิบ
รหัส HTML
<%@ taglib uri = "TagLibrary" คำนำหน้า = "mypfx" %>
ใช้คำสั่ง taglib เพื่อกำหนดไลบรารีแท็กและคำนำหน้าที่กำหนดเอง
uri: Uniform Resource Identifier จะตั้งชื่อเลเบลแบบกำหนดเองโดยไม่ซ้ำกันตามคำนำหน้าของเลเบล ซึ่งอาจเป็นพาธแบบสัมพัทธ์หรือแบบสัมบูรณ์ก็ได้
คำนำหน้า: คำนำหน้าของป้ายกำกับที่กำหนดเอง อย่าใช้ jsp, jspx, java, javax, servlet, sun, sunw เป็นคำนำหน้า เนื่องจาก Sun ได้ประกาศไว้แล้ว
4. 8 คำสั่งการกระทำ
(1) การข้ามหน้า: <jsp:forward>
แท็ก <jsp:forward> ส่งอ็อบเจ็กต์คำขอที่มีคำขอของผู้ใช้จากไฟล์ jsp หนึ่งไปยังอีกไฟล์หนึ่ง
มีทั้งหมด 2 คุณสมบัติ
คุณลักษณะของหน้าคือนิพจน์หรือสตริงที่อธิบายไฟล์หรือ URL ที่จะกำหนดเส้นทาง
<jsp:param>ส่งพารามิเตอร์ตั้งแต่หนึ่งตัวขึ้นไปไปยังไฟล์ไดนามิก หากใช้แท็ก <jsp:param> ไฟล์เป้าหมายจะต้องเป็นไฟล์ไดนามิก (เช่น Servlet หรือ JSP เป็นต้น)
รหัส HTML
<jsp:หน้าไปข้างหน้า=test.jsp>
<jsp:param name="ชื่อผู้ใช้" value="<%=user%>"/>
<jsp:param name="password" value="12345678"/>
</jsp:ไปข้างหน้า>
รับชื่อผู้ใช้ผ่าน request.getParameter("username")
(2)รวมหน้า: <jsp:include>
<jsp:include> อนุญาตให้รวมทรัพยากรเว็บแบบคงที่และไดนามิก และผลลัพธ์ของการรวมทั้งสองนี้จะแตกต่างกัน
หากรวมเฉพาะไฟล์สแตติก ดังนั้นการรวมนี้จะเพิ่มเนื้อหาของไฟล์ที่รวมเข้ากับไฟล์ JSP เท่านั้น ซึ่งคล้ายกับ < %@include% >;
หากมีการรวมทรัพยากรบนเว็บแบบไดนามิก ไฟล์ที่รวมไว้จะถูกดำเนินการโดยคอมไพเลอร์ JSP ด้วย
หากไฟล์รวมนี้เป็นไดนามิก คุณยังสามารถใช้ <jsp:param> เพื่อส่งผ่านพารามิเตอร์และค่าพารามิเตอร์ได้
(3) สร้าง Bean: <jsp:useBean>
สร้างอินสแตนซ์ Bean และระบุชื่อและขอบเขต
<jsp:useBean id="beanInstanceName" scope="page|request|session|application" class="package.className"/>
ประกอบด้วยคุณสมบัติ 5 ประการ
id: ยืนยันตัวแปร Bean ในขอบเขตที่กำหนด และใช้ id เพื่อใช้อินสแตนซ์ Bean นี้ในโปรแกรม ค่าของ id คำนึงถึงขนาดตัวพิมพ์
ขอบเขต: ขอบเขตที่มี Bean อยู่และขอบเขตที่ถูกต้องของชื่อตัวแปร id ค่าเริ่มต้นคือหน้า
คลาส: ใช้คีย์เวิร์ดใหม่และตัวสร้างคลาสเพื่อสร้างอินสแตนซ์ bean จากคลาส คลาสนี้ไม่สามารถเป็นนามธรรมได้ และต้องมีคอนสตรัคเตอร์สาธารณะและไม่มีอาร์กิวเมนต์
type: หาก Bean นี้มีอยู่แล้วในขอบเขตที่ระบุ การใช้ type จะกำหนดประเภทข้อมูลให้กับ Bean นี้ หากใช้ประเภทโดยไม่มีคลาสหรือ beanName bean จะไม่ถูกสร้างอินสแตนซ์
beanName: beanName อาจเป็นสตริง package.class หรือนิพจน์ jsp และค่าจะถูกส่งไปยังเมธอด Beans.instantiate ค่าของประเภทสามารถเหมือนกับ beanName คลาสพื้นฐาน หรืออินเทอร์เฟซที่นำไปใช้
(4) ตั้งค่าคุณสมบัติ Bean: <jsp:setProperty>
<jsp:setProperty name="beanInstanceName" property="*"|property="propertyName" value="string|<%=expression%>"|param="parameterName"/>
ชื่อ: ระบุชื่อของอินสแตนซ์ Bean ที่สร้างขึ้นใน <jsp:useBean> นั่นคือ id
คุณสมบัติ: จับคู่คุณสมบัติใน Bean
พารามิเตอร์: อ้างถึงชื่อพารามิเตอร์ในออบเจ็กต์คำขอ และตั้งค่าที่สอดคล้องกับแอตทริบิวต์ Bean
ค่า: ใช้ค่าที่ระบุเพื่อตั้งค่าคุณสมบัติ Bean ค่านี้สามารถเป็นสตริงหรือนิพจน์ได้ หากเป็นสตริง จะถูกแปลงเป็นประเภทของแอตทริบิวต์ Bean (เช่น "0.98" จะถูกแปลงเป็นประเภทคู่ 0.98) หากเป็นนิพจน์ ประเภทของนิพจน์จะต้องสอดคล้องกับประเภทของแอตทริบิวต์ Bean
PS: ไม่สามารถใช้แอตทริบิวต์พารามิเตอร์และแอตทริบิวต์ค่าพร้อมกันใน <jsp:setProperty> เดียวกัน
(5) รับคุณสมบัติ Bean: <jsp:getProperty>
รับค่าแอตทริบิวต์ในวัตถุ Bean ที่มีอยู่และแสดงบนเพจ
<jsp:getProperty name="beanInstanceName property="propertyName"/>
ชื่อ: ชื่อเดียวกับอินสแตนซ์วัตถุที่มีอยู่
คุณสมบัติ: ชื่อของคุณสมบัติในวัตถุ
(6) ใช้ปลั๊กอิน Applet: <jsp:plugin>
รหัส HTML
<jsp:plugin type="applet" code="MeidaPlay.class" codebase="../classes">
<jsp:ปาร์มาส>
<jsp:param name="way" value="Hall"/>
</jsp:พารามิเตอร์>
<jsp:ทางเลือกกลับ>
<p>ไม่สามารถโหลดแอปเพล็ตได้!</p>
</ทางเลือก>
</jsp:ปลั๊กอิน>
ใช้ <jsp:plugin> เพื่อแทรกแอปเพล็ตหรือ Bean และหากจำเป็น ให้ดาวน์โหลดปลั๊กอิน Java เพื่อดำเนินการ
(7) กำหนดพารามิเตอร์: <jsp:param>
สามารถใช้ได้ใน <jsp:include>, <jsp:forward>, <jsp:plugin>
(8) ข้อความแสดงข้อผิดพลาดปลั๊กอิน: <jsp:fallback>
เมื่อปลั๊กอิน <jsp:plugin> ไม่สามารถแสดงได้ตามปกติ ข้อความพร้อมต์จะปรากฏขึ้น
3. อ็อบเจ็กต์ในตัว JSP
1. คำขอ: วัตถุคำขอ วัตถุนี้สรุปข้อมูลที่ส่งโดยผู้ใช้ สามารถรับข้อมูลที่ห่อหุ้มได้โดยการเรียกวิธีการที่เกี่ยวข้องของวัตถุ
เมื่อออบเจ็กต์คำขอได้รับตัวอักษรจีนที่ลูกค้าส่งมา ตัวอักษรที่อ่านไม่ออกจะปรากฏขึ้นและจะต้องดำเนินการประมวลผลพิเศษ
วิธีการที่ใช้กันทั่วไป:
getParameter(String parameterName): รับข้อมูลการส่งแบบฟอร์ม
getProtocol(): รับโปรโตคอลที่ลูกค้าใช้
getServletPath(): รับหน้าที่ลูกค้าส่งข้อมูล
getMethod(): วิธีการรับข้อมูลที่ลูกค้าส่งมา
getHeader(String str): รับค่าของ Accept, Accept-encoding และ Host ในไฟล์ส่วนหัว HTTP
getRermoteHost(): รับที่อยู่ IP ของลูกค้า
getServerName: รับชื่อเซิร์ฟเวอร์
getServerPort: รับหมายเลขพอร์ตของเซิร์ฟเวอร์
getParameterNames(): รับชื่อของพารามิเตอร์ทั้งหมดที่ลูกค้าส่งมา
2. การตอบสนอง: ออบเจ็กต์ตอบสนองตอบสนองแบบไดนามิกต่อคำขอของลูกค้าและส่งข้อมูลไปยังไคลเอนต์
(1) ตอบสนองต่อแอตทริบิวต์ contentType แบบไดนามิก ใช้คำสั่ง page เพื่อตั้งค่าแอตทริบิวต์ contentType ของเพจแบบคงที่ เมื่อตั้งค่าแอตทริบิวต์นี้แบบไดนามิก ให้ใช้ response.setContextType("text/html;charset=utf-8");
(2) การเปลี่ยนเส้นทางการตอบสนอง
response.sendRedirect("index.jsp");
3. เซสชัน: วัตถุเซสชัน
(1) วัตถุเซสชันคืออะไร?
อ็อบเจ็กต์เซสชันจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการโหลดเพจ JSP แรกเพื่อให้การจัดการเซสชันเสร็จสมบูรณ์
เริ่มต้นเมื่อไคลเอ็นต์เปิดเบราว์เซอร์และเชื่อมต่อกับเซิร์ฟเวอร์ และสิ้นสุดเมื่อไคลเอ็นต์ปิดเบราว์เซอร์และออกจากเซิร์ฟเวอร์ ซึ่งเรียกว่าเซสชัน
(2) ID ของวัตถุเซสชัน
เมื่อลูกค้าเยี่ยมชมเพจ JSP บนเซิร์ฟเวอร์เป็นครั้งแรก กลไก JSP จะสร้างอ็อบเจ็กต์เซสชันและกำหนดหมายเลข ID เป็นประเภทสตริง นอกจากนี้ กลไก JSP ยังส่งหมายเลข ID นี้ไปยังไคลเอนต์และเก็บไว้ในคุกกี้ ด้วยวิธีนี้อ็อบเจ็กต์เซสชัน จะไม่จนกว่าไคลเอนต์จะปิดเบราว์เซอร์ที่อ็อบเจ็กต์เซสชันของลูกค้าจะถูกแก้ไขโดยเซิร์ฟเวอร์ และความโต้ตอบของเซสชันกับไคลเอนต์จะหายไป
(3) วิธีการทั่วไป
public String getId(): รับหมายเลขของวัตถุเซสชัน
โมฆะสาธารณะ setAttribute(String str,Object obj): เพิ่มวัตถุพารามิเตอร์ให้กับวัตถุเซสชัน
วัตถุสาธารณะ getAttribute(): รับคุณลักษณะในวัตถุเซสชันตามชื่อแอตทริบิวต์
public boolean isNew(): ตรวจสอบว่าเป็นลูกค้าใหม่หรือไม่
4. แอปพลิเคชัน: วัตถุแอปพลิเคชัน
(1) ออบเจ็กต์แอปพลิเคชันคืออะไร
ออบเจ็กต์แอปพลิเคชันนี้ถูกสร้างขึ้นหลังจากเซิร์ฟเวอร์เริ่มทำงาน เมื่อลูกค้าเรียกดูระหว่างหน้าต่างๆ ของเว็บไซต์ที่เยี่ยมชม ออบเจ็กต์แอปพลิเคชันจะเหมือนกัน และลูกค้าทั้งหมดแชร์ออบเจ็กต์แอปพลิเคชันในตัวนี้
(2) วิธีการทั่วไป
setAttribute(String key,Object obj): เพิ่มอ็อบเจ็กต์พารามิเตอร์ให้กับอ็อบเจ็กต์ Application
getAttibute (คีย์สตริง): รับแอตทริบิวต์ในวัตถุ Application ตามชื่อแอตทริบิวต์
5. ออก: วัตถุเอาท์พุต
วัตถุออกคือสตรีมเอาท์พุตที่ใช้ในการส่งออกข้อมูลไปยังไคลเอนต์
out.print(): ส่งออกข้อมูลประเภทต่างๆ
out.newLine(): ส่งออกอักขระขึ้นบรรทัดใหม่
out.close(): ปิดสตรีม
6. การกำหนดค่า: วัตถุการกำหนดค่า โดยทั่วไปเราใช้วัตถุการกำหนดค่าเพื่อรับข้อมูลการกำหนดค่าเริ่มต้นบางส่วน วิธีการที่ใช้กันทั่วไปคือ getInitParameter และ getInitParameterNames เพื่อรับพารามิเตอร์ระหว่างการเริ่มต้น Servlet
7.เพจ: วัตถุหน้า
อ็อบเจ็กต์เพจแสดงถึงอ็อบเจ็กต์คลาสที่กำลังรันอยู่ซึ่งสร้างโดยไฟล์ JSP และไม่แนะนำสำหรับผู้อ่านทั่วไป
8.PageContext: วัตถุบริบทของหน้า
คลาส PageContext ที่แนะนำโดย JSP ช่วยให้คุณเข้าถึงคุณสมบัติต่างๆ ของเพจได้ ตัวแปร pageContext เก็บค่าของออบเจ็กต์ PageContext ที่เชื่อมโยงกับเพจปัจจุบัน คลาส PageContext มีเมธอดต่างๆ เช่น getRequest, getResponse, getOut และ getSession
9.ข้อยกเว้น: วัตถุข้อยกเว้น
อ็อบเจ็กต์ข้อยกเว้นแสดงถึงอ็อบเจ็กต์ข้อยกเว้นที่สร้างขึ้นเมื่อไฟล์ JSP กำลังทำงานอยู่ อ็อบเจ็กต์นี้ไม่สามารถใช้โดยตรงในไฟล์ JSP ธรรมดา แต่สามารถใช้ได้เท่านั้น
< %@page isErrorPage="true"%> ถูกใช้ในไฟล์ JSP นี่เป็นเพราะว่าอ็อบเจ็กต์ข้อผิดพลาดที่สร้างขึ้นเมื่อไฟล์ JSP กำลังทำงานอยู่ถูกโยนทิ้งและสามารถดักจับได้โดย JSP เท่านั้นที่ใช้แท็ก < %@pageisErrorPage="true"% > เพื่อดักจับอ็อบเจ็กต์ข้อผิดพลาด วิธีที่ใช้บ่อยที่สุดคือ getMessage ซึ่งใช้เพื่อรับข้อมูลข้อผิดพลาด
4. หน้าเข้าสู่ระบบอินสแตนซ์: index.jsp
รหัส HTML
<%@ ภาษาหน้า = "java" pageEncoding = "UTF-8" contentType = "text/html; charset=UTF-8" %>
<html>
<หัว>
<title>เข้าสู่ระบบ</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
<style type="text/css">
.btn {
ตระกูลฟอนต์: "Tahoma", "宋体";
ขนาดตัวอักษร: 9pt;
สี: #001E3C;
ขอบล่าง: #6794BC 1px ทึบ;
ขอบซ้าย: #8BB8E0 1px ทึบ;
เส้นขอบขวา: #6794BC 1px ทึบ;
ขอบด้านบน: #8BB8E0 1px ทึบ;
ภาพพื้นหลัง: url (image/buttonbg.gif);
เคอร์เซอร์: มือ;
รูปแบบตัวอักษร: ปกติ;
ช่องว่างภายในซ้าย: 3px;
ช่องว่างภายในขวา: 3px;
-
</สไตล์>
<script type="text/javascript">
ฟังก์ชั่น doLogin(){
var vform = document.loginform;
ถ้า(!loginform.username.value){
alert("กรุณากรอกชื่อผู้ใช้!")
กลับ;
-
ถ้า(!loginform.password.value){
alert("กรุณาใส่รหัสผ่าน!")
กลับ;
-
vform.ส่ง();
-
</สคริปต์>
</หัว>
<body topmargin="0" leftmargin="0" >
<การกระทำของฟอร์ม = "receive.jsp" name = "longinForm" method = "โพสต์">
<ความกว้างของตาราง="100%" ความสูง="100%">
<tr>
<td align="center" valign="middle">
<ตาราง id="form1"
cellspacing="0" cellpadding="0" border="0" style="width: 500;">
<CAPTION style="display: none">
</คำอธิบาย>
<TR>
<ทีดี>
<ตารางความกว้าง = "100%" ความสูง = "100%" ระยะห่างระหว่างเซลล์ = "0"
cellpadding="0" border="0" style="table-layout: fixed">
<TR>
<TD valign="ด้านบน">
<FIELDSET id="form1_group0" style="width: 100%;">
<LEGEND>เข้าสู่ระบบ</LEGEND>
<DIV>
<DIV style="width: 100%; height: 100%">
<ตารางความกว้าง = "100%" ระยะห่างระหว่างเซลล์ = "0"
cellpadding="4" border="0" style="table-layout: fixed;">
<คอลกรุ๊ป>
<ความกว้าง COL="100"></COL>
<ความกว้าง COL="50%"></COL>
<ความกว้าง COL="100"></COL>
<ความกว้าง COL="50%"></COL>
</คอลกรุ๊ป>
<TR>
<TD align="ขวา">
ชื่อผู้ใช้
</TD>
<คลาส TD="InnerTableContentCell">
<ประเภทอินพุต = "ข้อความ" ชื่อ = "ชื่อผู้ใช้"
สไตล์ = "ความกว้าง: 100%;">
</TD>
<TD align="ขวา">
รหัสผ่าน
</TD>
<ทีดี>
<ประเภทอินพุต = "รหัสผ่าน" ชื่อ = "รหัสผ่าน"
สไตล์ = "ความกว้าง: 100%;" />
<ประเภทอินพุต = "ซ่อน" ชื่อ = "action2" ค่า = "0">
</TD>
</TR>
<TR>
<TD colSpan="4"
align="ขวา">
<input type="button" name="login" value="Login" onclick="this.form.submit();" class="btn"/>
</TD>
</TR>
</ตาราง>
</DIV>
</DIV>
</ชุดสนาม>
</TD>
</TR>
</ตาราง>
</TD>
</TR>
</ตาราง>
</td>
</tr>
</ตาราง>
</แบบฟอร์ม>
</ร่างกาย>
</html>
หน้ารับข้อมูล: รับ.jsp
รหัส HTML
<%@ ภาษาหน้า = "java" pageEncoding = "UTF-8" contentType = "text/html; charset=UTF-8" info = "แท็กการกระทำ"%>
<jsp:useBean id="userVo" class="exercise.vo.UserVo" scope="คำขอ">
<jsp:setProperty name="userVo" property="name" param="ชื่อผู้ใช้"/>
<jsp:setProperty name="userVo" property="password" param="รหัสผ่าน"/>
</jsp:useBean>
<html>
<หัว>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
</หัว>
<ร่างกาย>
นี่คือเพจ JSP ของฉัน <br>
<hr>ใช้ <jsp:getProperty> เพื่อรับค่าที่ส่งในแบบฟอร์ม<br>
ชื่อ:<jsp:getProperty property="name" name="userVo"/><br>
รหัสผ่าน:<jsp:getProperty property="password" name="userVo"/>
<br><br><hr>
-
out.println("รับโดยตรงจากวัตถุ vo:<br> name:"+userVo.getName()+
"<br>รหัสผ่าน:"+userVo.getPassword()+"<br>");
String serviceName = request.getServerName();//ร้องขอวัตถุภายใน 1.jsp
out.println("<br><hr>ชื่อเซิร์ฟเวอร์: "+serviceName);
out.println("<br>ประเภท MIME: "+response.getContentType());//2.jsp วัตถุตอบสนองภายใน
session.setAttribute("sessionName,"วัตถุเซสชันภายใน jsp");//3.jsp วัตถุเซสชันภายใน
out.println("<br>วัตถุเซสชัน: "+session.getAttribute("sessionName"));//4.jsp วัตถุออกภายใน
pageContext.setAttribute("pageContext", "การอ้างอิงสภาพแวดล้อมบริบท"); // วัตถุ pageContext ภายใน 5.jsp
//6.ใบสมัคร
//7. กำหนดค่าอินสแตนซ์ ServletConfig
//8. อินสแตนซ์ของหน้า java.lang.Object
//9. ข้อยกเว้นต้องใช้อินสแตนซ์ของ java.lang.Throwable บนเพจที่มี isErrorPage=true ในคำสั่งเพจ
ข้อมูลสตริง = pageContext.getServletContext().getServerInfo();
out.println("รับแอตทริบิวต์ข้อมูลในคำสั่งเพจ: "+info);
-
</ร่างกาย>