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 ประเภทคำอธิบายประกอบ