เทคโนโลยี Servlet ของ Java Web Programming รู้เท่าไหร่?
1. Servlet Basics <br /> สำหรับการพัฒนาเทคโนโลยี Servlet, Sun Company มีอินเทอร์เฟซคอลัมน์และคลาสบางอย่างที่สำคัญที่สุดคือ Javax.servlet.servlet อินเตอร์เฟส แพ็คเกจสำคัญสองชุดคือ javax.servlet และ javax.servlet.http Servlet เป็นคลาสที่ใช้อินเทอร์เฟซ servlet มันถูกเรียกและสร้างโดยเว็บคอนเทนเนอร์ (Tomcat/Jetty ฯลฯ ) เพื่อรับและตอบสนองต่อคำขอของผู้ใช้ 5 วิธีบทคัดย่อถูกกำหนดไว้ในส่วนต่อประสาน servlet:
โครงสร้างคลาสระดับบนสุดของ servlet มีดังนี้:
2. โปรแกรม servlet แรก
สร้างโครงการ Java Web ใหม่จากนั้นสร้างคลาส Hello ใหม่ ซอร์สโค้ด hello.java มีดังนี้:
แพ็คเกจ zzz; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.https DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น IOException {// ตั้งค่าการตอบกลับการเข้ารหัสข้อความตอบกลับ SetContentType ("text/html; charset = utf-8"); PrintWriter out = response.getWriter (); out.println ("Hello World"); } @Override โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {this.doget (คำขอ, การตอบกลับ); -ไฟล์กำหนดค่า web.xml มีดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/nsds id = "webapp_id" เวอร์ชัน = "3.1"> <แสดง-ชื่อ> zzz </display-name> <servlet> <!-ลงทะเบียน servlet-> <servlet-name> สวัสดี </servlet-name> <! เส้นทาง-> <servlet-name> สวัสดี </servlet-name> <!-ระบุชื่อ servlet-> <url-pattern>/hello </url-pattern> <!-ระบุเส้นทางเสมือนเพื่อเข้าถึง servlet-> </servlet-mapping> </eb-app>
เริ่มต้นและเรียกใช้การแสดงเบราว์เซอร์ดังนี้:
3. วงจรชีวิต Servlet
วงจรชีวิตของ Servlet ถูกแบ่งออกเป็น 3 ขั้นตอน ขั้นตอนการเริ่มต้นขั้นตอนการดำเนินงาน และ ขั้นตอนการทำลายล้าง ต่อไปนี้เป็นคำอธิบายโดยละเอียดของแต่ละขั้นตอน:
ขั้นตอนการเริ่มต้น: เมื่อไคลเอ็นต์ส่งคำขอไปยังคอนเทนเนอร์ servlet เพื่อเข้าถึง servlet คอนเทนเนอร์จะวิเคราะห์การร้องขอก่อนเพื่อตรวจสอบว่าวัตถุ servlet อยู่ในหน่วยความจำหรือไม่และหากใช้โดยตรง มิฉะนั้นให้สร้างวัตถุ Servlet จากนั้นเรียกใช้เมธอด init () โปรดทราบว่า init () จะถูกเรียกเพียงครั้งเดียวในระหว่างรอบการประกาศทั้งหมดของ servlet
ขั้นตอนการวิ่ง: นี่เป็นขั้นตอนที่สำคัญที่สุดของ Servlet ในขั้นตอนนี้คอนเทนเนอร์จะสร้างวัตถุ ServletRequest และ ServletResponse เป็นพารามิเตอร์และส่งผ่านไปยังเมธอด servlet () สำหรับการเข้าถึง servlet แต่ละครั้งคอนเทนเนอร์ servlet จะเรียกวิธีการบริการ () หนึ่งครั้ง วิธีการบริการ () จะถูกเรียกหลายครั้งในช่วงวงจรชีวิตทั้งหมดของ servlet
ขั้นตอนการทำลายล้าง: เมื่อเซิร์ฟเวอร์ถูกปิดหรือเว็บแอปพลิเคชันถูกลบออกจากคอนเทนเนอร์ขั้นตอนนี้จะถูกป้อน ในเวลานี้จะมีการเรียกวิธีการทำลาย () ในช่วงวงจรชีวิตทั้งหมดวิธีการทำลาย () จะถูกเรียกเพียงครั้งเดียว เมื่อไคลเอนต์เข้าถึง servlet เป็นครั้งแรกคอนเทนเนอร์จะสร้างวัตถุ servlet แต่บางครั้งก็หวังว่าวัตถุ servlet จะเริ่มต้นทันทีที่ Tomcat เริ่มต้นขึ้น จะจัดการกับเรื่องนี้ได้อย่างไร? ในเวลานี้คุณจะต้องใช้องค์ประกอบ <load-on-startup> ใน web.xml การกำหนดค่าตัวอย่างมีดังนี้:
<servlet> <servlet-name> สวัสดี </servlet-name> <servlet-class> zzz.hello </servlet-class> <!-การโหลดโดยอัตโนมัติของโปรแกรม servlet-> <load-on-startup> 1 </load-on-startup> </servlet>
4. ServletConfig และ ServletContext
ในระหว่าง อินเทอร์เฟซ servletConfig หากต้องการข้อมูลเสริมบางอย่างเช่นการเข้ารหัสไฟล์ บริษัท ที่ใช้ Servlets ฯลฯ ข้อมูลนี้สามารถกำหนดค่าได้โดยใช้องค์ประกอบ <int-Param> ใน web.xml เมื่อ Tomcat เริ่มต้น Servlet ข้อมูลการกำหนดค่า servlet จะถูกห่อหุ้มลงในวัตถุ servletconfig และส่งผ่านไปยัง servlet ผ่าน init (servletconfig config) ServletConfig กำหนดชุดของวิธีการเพื่อรับข้อมูลการกำหนดค่า:
ถัดไปใช้ getinitparameter () เป็นตัวอย่างในการอธิบายการใช้วิธีนี้:
ไฟล์กำหนดค่า web.xml มีดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/nsds id = "webapp_id" เวอร์ชัน = "3.1"> <pramplay-name> zzz </display-name> <servlet> <servlet-name> สวัสดี </servlet-name> <servlet-class> zzz.hello </servlet-class> <init-param> <param-name> <servlet-mapping> <servlet-name> hello </servlet-name> <url-pattern>/hello </url-pattern> </servlet-mapping> </eb-app>
สวัสดีไฟล์ Java มีดังนี้:
แพ็คเกจ zzz; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า Javax.servlet.servletConfig; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpsertrequest; httpservlet {@Override โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น IOException {// ตั้งค่าข้อความตอบกลับการเข้ารหัสข้อความตอบกลับ PrintWriter out = response.getWriter (); servletConfig config = this.getServletConfig (); String param = config.getInitParameter ("บริษัท "); out.println ("บริษัท :" + param); } @Override โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {this.doget (คำขอ, การตอบกลับ); - อินเตอร์เฟส servletContext
เมื่อคอนเทนเนอร์ Servlet เริ่มต้นขึ้นวัตถุ ServletContext ที่ไม่ซ้ำกันจะถูกสร้างขึ้นสำหรับแต่ละเว็บแอปพลิเคชันเพื่อแสดงเว็บแอปพลิเคชันปัจจุบัน วัตถุนี้ไม่เพียง แต่ห่อหุ้มข้อมูลทั้งหมดของเว็บแอปพลิเคชันเท่านั้น แต่ยังใช้การแบ่งปันข้อมูลระหว่างวัตถุ Servlet หลายรายการ ใน web.xml คุณไม่เพียง แต่กำหนดค่าข้อมูลการเริ่มต้นของ servlet แต่ยังกำหนดค่าข้อมูลการเริ่มต้นของเว็บแอปพลิเคชันทั้งหมด วิธีการกำหนดค่ามีดังนี้:
<context-param> <param-name> ชื่อ </param-name> <param-value> luoxn28 </param-value> </context-param> <context-param> <param-name> บริษัท </param-name> <param-value>
หมายเหตุ: สามารถมีได้เพียงหนึ่ง <param-Name> และ <param- value> ในองค์ประกอบ <บริบท-พาราม> และการกำหนดค่าข้างต้นจะถูกกำหนดค่าภายใต้ <sweb-app> ใน web.xml สวัสดีไฟล์ Java มีดังนี้:
แพ็คเกจ zzz; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า java.util.enumeration; นำเข้า Javax.servlet.servletContext; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; คลาสสาธารณะสวัสดีขยาย httpservlet {@Override โมฆะสาธารณะ doget (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) โยน ioexception PrintWriter out = response.getWriter (); servletContext context = this.getServletContext (); การแจงนับ <String> paramNames = context.getInitParameterNames (); ในขณะที่ (paramNames.hasmoreElements ()) {string name = paramNames.nextElement (); ค่าสตริง = context.getInitParameter (ชื่อ); out.println (ชื่อ + ":" + value + "<br/>"); }} @Override โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {this.doget (คำขอ, การตอบกลับ); -เนื่องจาก Servlets ทั้งหมดในเว็บแอปพลิเคชันแบ่งปันวัตถุ ServletContext คุณสมบัติโดเมนของวัตถุ ServletContext สามารถเข้าถึงได้โดย servlets ทั้งหมดในเว็บแอปพลิเคชัน ในอินเตอร์เฟส servletContext มีการกำหนดสี่วิธีเพื่อเพิ่มลบและตั้งค่าคุณสมบัติโดเมน servletContext:
ด้วยวิธีการข้างต้นคุณสามารถตระหนักถึงการแบ่งปันข้อมูลระหว่าง Servlets หลายตัว ตัวอย่างเฉพาะนี้จะไม่ถูกโพสต์ด้วยรหัส มีข้อมูลมากมายที่สามารถอ้างอิงออนไลน์ได้เช่นการคลิก:
สรุปการพัฒนา Javaweb Servlet (II)
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้และฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนที่จะเข้าใจเทคโนโลยีเซิร์ฟเล็ตของเว็บ Java
การอ้างอิง
1. "บทนำสู่การพัฒนาโปรแกรม Java Web" Technology Technology