2.1 คำสั่ง JSP

เนื่องจากเราพบว่าไฟล์ JSP ถูกแปลงเป็นเซิร์ฟเล็ตปกติ คุณจึงสามารถเขียนโค้ด Java ปกติลงไปได้ และในโค้ด Java นี้ คุณสามารถใช้คลาสต่างๆ ได้ (คณิตศาสตร์จากตัวอย่าง) นี้ดียิ่งขึ้น! แต่เราจะเห็นว่าโค้ดทั้งหมดถูกย้ายไปยังdoGet()เมธอดเซิร์ฟเล็ต และสิ่งนี้ทำให้เกิดคำถามหลายข้อในทันที:

  • ทำอย่างไรให้โค้ดถูกย้ายไปที่ method doPost()?
  • วิธีเพิ่มรหัสของคุณเองในวิธีการinit()?
  • ในที่สุดการลงทะเบียนการนำเข้าคลาส?

คำถามดีๆ และแน่นอน พวกเขามีคำตอบ - คำสั่ง JSP โค้ดที่ไม่ใช่ HTML ทั้งหมดภายใน JSP จะต้องอยู่ในวงเล็บเหลี่ยมพิเศษ<%และ%>. คำสั่ง JSP ทั้งหมดกำหนดโดยเทมเพลต:

<%@ directive %>

นี่คือรายการแอตทริบิวต์คำสั่งของเพจที่ได้รับความนิยมสูงสุด:

ตัวอย่าง คำอธิบาย
1 นำเข้า <%@ page import="java.util.Date" %> นำเข้าคลาส
2 ชนิดของเนื้อหา <%@ page contentType=text/html %> ตั้งค่า contentType
3 ขยาย <%@ page extends="Object" %> คุณสามารถตั้งค่าคลาสพื้นฐาน
4 ข้อมูล <%@ page info="Author: Peter Ivanovich; version:1.0" %> ตั้งค่าข้อมูลสำหรับ getServletInfo()
5 กันชน <%@ page buffer="16kb" %> กำหนดขนาดของบัฟเฟอร์การตอบสนอง
6 ภาษา <%@ page language="java" %> ระบุภาษา ค่าเริ่มต้นคือ Java
7 isELIgnored <%@ page isELIgnored="true" %> อนุญาตให้คุณปิดใช้งานสคริปต์ EL
8 คือThreadSafe <%@ page isThreadSafe="false" %> ชี้ไปที่ threadsafe
9 ล้างอัตโนมัติ <%@ page autoFlush="false" %> จัดการการเขียนบัฟเฟอร์
10 การประชุม <%@ page session="false" %> คุณสามารถปิดเซสชันสำหรับหน้า
สิบเอ็ด การเข้ารหัสหน้า <%@ page pageEncoding="UTF-8"%> คุณสามารถตั้งค่าการเข้ารหัสหน้า
12 หน้าข้อผิดพลาด <%@ page errorPage="errorpage.jsp" %> คุณสามารถตั้งค่าหน้าข้อผิดพลาด

2.2 การนำเข้า

มาเพิ่มการนำเข้าไฟล์ JSP ของเราเพื่อความสนุกและกำหนดคลาสพื้นฐาน

ตัวอย่างไฟล์ JSP:


    <%@ page import="java.util.Date" %> 
    <%@ page import="java.lang.Math" %> 
    <%@ page extends="com.codegym.MyHttpServlet" %> 
 
    <html> 
    <body> 
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
    }
    %> 
  </body> 
   </html> 

และนี่คือสิ่งที่จะเกิดขึ้น:

import java.util.Date;
import java.lang.Math;

public class HelloServlet extends com.codegym.MyHttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html>  ");
    out.print("<body> ");
        double num = Math.random();
        if (num >  0.95) {
             out.print("<h2> You're lucky, user! </h2> <p> (" + num + ")</p> ");
        }
    out.print("</body> ");
    out.print("</html> ");
    }
}

ทำงาน ยอดเยี่ยม!