Struts 2 - คำอธิบายประกอบ

ดังที่ได้กล่าวไว้ก่อนหน้านี้ Struts มีการกำหนดค่าสองรูปแบบ วิธีดั้งเดิมคือการใช้ไฟล์struts.xmlไฟล์สำหรับการกำหนดค่าทั้งหมด เราได้เห็นตัวอย่างมากมายในบทแนะนำนี้แล้ว วิธีอื่นในการกำหนดค่า Struts คือการใช้คุณลักษณะ Java 5 Annotations เราสามารถใช้คำอธิบายประกอบแบบ struts ได้Zero Configuration.

ในการเริ่มใช้คำอธิบายประกอบในโปรเจ็กต์ของคุณตรวจสอบให้แน่ใจว่าคุณได้รวมไฟล์ jar ต่อไปนี้ไว้ในไฟล์ WebContent/WEB-INF/lib โฟลเดอร์ -

  • struts2-convention-plugin-x.y.z.jar
  • asm-x.y.jar
  • antlr-x.y.z.jar
  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

ตอนนี้ให้เราดูว่าคุณจะทำอย่างไรกับการกำหนดค่าที่มีอยู่ในไฟล์ struts.xml ไฟล์และแทนที่ด้วยคำอธิบายประกอบ

เพื่ออธิบายแนวคิดของ Annotation ใน Struts2 เราจะต้องพิจารณาตัวอย่างการตรวจสอบความถูกต้องของเราอีกครั้งซึ่งอธิบายไว้ในบทการตรวจสอบ Struts2

ในที่นี้เราจะยกตัวอย่างพนักงานที่มีชื่ออายุจะถูกบันทึกโดยใช้หน้าเว็บง่ายๆและเราจะทำการตรวจสอบความถูกต้องสองครั้งเพื่อให้แน่ใจว่าÜSERป้อนชื่อและอายุควรอยู่ระหว่าง 28 ถึง 65 เสมอ

เริ่มต้นด้วยหน้า JSP หลักของตัวอย่าง

สร้างหน้าหลัก

ให้เราเขียนไฟล์ JSP หน้าหลัก index.jspซึ่งใช้ในการรวบรวมข้อมูลที่เกี่ยวข้องกับพนักงานดังกล่าวข้างต้น

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Employee Form</title>
   </head>

   <body>
      
      <s:form action = "empinfo" method = "post">
         <s:textfield name = "name" label = "Name" size = "20" />
         <s:textfield name = "age" label = "Age" size = "20" />
         <s:submit name = "submit" label = "Submit" align="center" />
      </s:form>

   </body>
</html>

index.jsp ใช้ประโยชน์จากแท็ก Struts ซึ่งเรายังไม่ได้กล่าวถึง แต่เราจะศึกษาในบทที่เกี่ยวข้องกับแท็ก แต่ตอนนี้สมมติว่าแท็ก s: textfield พิมพ์ช่องป้อนข้อมูลและปุ่ม s: submit จะพิมพ์ปุ่มส่ง เราใช้คุณสมบัติป้ายกำกับสำหรับแต่ละแท็กซึ่งสร้างป้ายกำกับสำหรับแต่ละแท็ก

สร้างมุมมอง

เราจะใช้ไฟล์ JSP success.jsp ซึ่งจะถูกเรียกใช้ในกรณีที่การกระทำที่กำหนดส่งคืน SUCCESS.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
	pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Success</title>
   </head>
   
   <body>
      Employee Information is captured successfully.
   </body>
</html>

สร้างการดำเนินการ

นี่คือสถานที่ที่ใช้คำอธิบายประกอบ ให้เรากำหนดคลาสการกระทำใหม่Employee ด้วยคำอธิบายประกอบจากนั้นเพิ่มวิธีการที่เรียกว่า validate () ดังแสดงด้านล่างใน Employee.javaไฟล์. ตรวจสอบให้แน่ใจว่าคลาสการกระทำของคุณขยายไฟล์ActionSupport class มิฉะนั้นวิธีการตรวจสอบของคุณจะไม่ถูกเรียกใช้งาน

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")
   
   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

เราได้ใช้คำอธิบายประกอบเล็กน้อยในตัวอย่างนี้ ให้ฉันผ่านมันทีละคน -

  • อันดับแรกเราได้รวมไฟล์ Resultsคำอธิบายประกอบ คำอธิบายประกอบผลลัพธ์คือชุดของผลลัพธ์

  • ภายใต้คำอธิบายประกอบผลลัพธ์เรามีคำอธิบายประกอบผลลัพธ์สองรายการ คำอธิบายประกอบผลลัพธ์มีนามสกุลnameที่สอดคล้องกับผลลัพธ์ของวิธีการดำเนินการ นอกจากนี้ยังมีตำแหน่งที่ควรให้บริการมุมมองที่สอดคล้องกับค่าที่ส่งคืนจาก execute ()

  • คำอธิบายประกอบถัดไปคือ Actionคำอธิบายประกอบ สิ่งนี้ใช้เพื่อตกแต่งเมธอด execute () วิธีการดำเนินการยังใช้ค่าซึ่งเป็น URL ที่เรียกใช้การดำเนินการ

  • ในที่สุดฉันก็ได้ใช้สองตัว validationคำอธิบายประกอบ ฉันได้กำหนดค่าตัวตรวจสอบฟิลด์ที่จำเป็นบนname ฟิลด์และตัวตรวจสอบช่วงจำนวนเต็มบน ageฟิลด์ ฉันยังได้ระบุข้อความที่กำหนดเองสำหรับการตรวจสอบความถูกต้อง

ไฟล์การกำหนดค่า

เราไม่ต้องการจริงๆ struts.xml ไฟล์กำหนดค่าดังนั้นให้เราลบไฟล์นี้และให้เราตรวจสอบเนื้อหาของ web.xml ไฟล์ -

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee"
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">

   <display-name>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
      <filter-name>struts2</filter-name>
      
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
      
      <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

ตอนนี้คลิกขวาที่ชื่อโครงการแล้วคลิก Export > WAR Fileเพื่อสร้างไฟล์ War จากนั้นปรับใช้ WAR นี้ในไดเร็กทอรี webapps ของ Tomcat สุดท้ายเริ่มเซิร์ฟเวอร์ Tomcat และพยายามเข้าถึง URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. สิ่งนี้จะสร้างหน้าจอต่อไปนี้ -

ตอนนี้ไม่ต้องป้อนข้อมูลที่จำเป็นใด ๆ เพียงคลิกที่ Submitปุ่ม. คุณจะเห็นผลลัพธ์ต่อไปนี้ -

ป้อนข้อมูลที่จำเป็น แต่ป้อนฟิลด์จากผิดให้เราพูดชื่อ "ทดสอบ" และอายุเป็น 30 ปีและสุดท้ายคลิกที่ Submitปุ่ม. คุณจะเห็นผลลัพธ์ต่อไปนี้ -

Struts 2 ประเภทคำอธิบายประกอบ

แอ็พพลิเคชัน Struts 2 สามารถใช้คำอธิบายประกอบ Java 5 เป็นทางเลือกสำหรับการกำหนดค่าคุณสมบัติ XML และ Java คุณสามารถตรวจสอบรายการคำอธิบายประกอบที่สำคัญที่สุดที่เกี่ยวข้องกับหมวดหมู่ต่างๆ -

Struts 2 ประเภทคำอธิบายประกอบ