Struts 2 - Chú thích

Như đã đề cập trước đây, Struts cung cấp hai dạng cấu hình. Cách truyền thống là sử dụngstruts.xmltệp cho tất cả các cấu hình. Chúng tôi đã thấy rất nhiều ví dụ về điều đó trong hướng dẫn cho đến nay. Cách khác để định cấu hình Struts là sử dụng tính năng Chú thích của Java 5. Sử dụng chú thích thanh chống, chúng ta có thể đạt đượcZero Configuration.

Để bắt đầu sử dụng chú thích trong dự án của bạn, hãy đảm bảo rằng bạn đã đưa các tệp jar sau vào WebContent/WEB-INF/lib thư mục -

  • 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

Bây giờ, hãy để chúng tôi xem cách bạn có thể thực hiện với cấu hình có sẵn trong struts.xml và thay thế nó bằng các chú thích.

Để giải thích khái niệm Annotation trong Struts2, chúng ta sẽ phải xem xét lại ví dụ xác thực được giải thích trong chương Struts2 Validations .

Ở đây, chúng tôi sẽ lấy một ví dụ về một Nhân viên có tên, tuổi sẽ được ghi lại bằng cách sử dụng một trang đơn giản và chúng tôi sẽ đặt hai xác nhận để đảm bảo rằng ÜSER luôn nhập tên và tuổi phải từ 28 đến 65.

Chúng ta hãy bắt đầu với trang JSP chính của ví dụ.

Tạo trang chính

Hãy để chúng tôi viết tệp JSP trang chính index.jsp, được sử dụng để thu thập thông tin liên quan đến Nhân viên được đề cập ở trên.

<%@ 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 sử dụng thẻ Struts, thẻ này chúng ta chưa trình bày nhưng chúng ta sẽ nghiên cứu chúng trong các chương liên quan đến thẻ. Nhưng hiện tại, chỉ cần giả sử rằng thẻ s: textfield in một trường đầu vào và s: submit in ra một nút gửi. Chúng tôi đã sử dụng thuộc tính nhãn cho mỗi thẻ để tạo nhãn cho mỗi thẻ.

Tạo chế độ xem

Chúng tôi sẽ sử dụng tệp JSP success.jsp sẽ được gọi trong trường hợp hành động đã xác định trả về 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>

Tạo hành động

Đây là nơi sử dụng chú thích. Hãy để chúng tôi xác định lại lớp hành độngEmployee với chú thích, sau đó thêm một phương thức được gọi là validate () như hình dưới đây trong Employee.javatập tin. Đảm bảo rằng lớp hành động của bạn mở rộngActionSupport lớp, nếu không phương thức xác thực của bạn sẽ không được thực thi.

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;
   }
}

Chúng tôi đã sử dụng một vài chú thích trong ví dụ này. Hãy để tôi xem qua từng cái một -

  • Đầu tiên, chúng tôi đã bao gồm Resultschú thích. Chú thích Kết quả là một tập hợp các kết quả.

  • Dưới chú thích kết quả, chúng tôi có hai chú thích kết quả. Các chú thích kết quả cónametương ứng với kết quả của phương thức thực thi. Chúng cũng chứa một vị trí mà chế độ xem sẽ được phân phát tương ứng với giá trị trả về từ execute ()

  • Chú thích tiếp theo là Actionchú thích. Điều này được sử dụng để trang trí cho phương thức execute (). Phương thức Hành động cũng nhận một giá trị là URL mà hành động được gọi.

  • Cuối cùng, tôi đã sử dụng hai validationchú thích. Tôi đã định cấu hình trình xác thực trường bắt buộc trênname trường và trình xác thực phạm vi số nguyên trên agecánh đồng. Tôi cũng đã chỉ định một thông báo tùy chỉnh để xác nhận.

Tệp cấu hình

Chúng tôi thực sự không cần struts.xml tệp cấu hình, vì vậy hãy để chúng tôi xóa tệp này và để chúng tôi kiểm tra nội dung của web.xml tập tin -

<?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>

Bây giờ, nhấp chuột phải vào tên dự án và nhấp vào Export > WAR Fileđể tạo tệp Chiến tranh. Sau đó, triển khai WAR này trong thư mục ứng dụng web của Tomcat. Cuối cùng, khởi động máy chủ Tomcat và cố gắng truy cập URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Điều này sẽ tạo ra màn hình sau:

Bây giờ không nhập bất kỳ thông tin cần thiết nào, chỉ cần nhấp vào Submitcái nút. Bạn sẽ thấy kết quả sau:

Nhập thông tin bắt buộc nhưng nhập sai trường Từ, hãy để chúng tôi nói tên là "kiểm tra" và tuổi là 30, và cuối cùng nhấp vào Submitcái nút. Bạn sẽ thấy kết quả sau:

Struts 2 Loại chú thích

Các ứng dụng Struts 2 có thể sử dụng các chú thích Java 5 như một sự thay thế cho cấu hình thuộc tính XML và Java. Bạn có thể kiểm tra danh sách các chú thích quan trọng nhất liên quan đến các danh mục khác nhau -

Struts 2 Loại chú thích .