1. Trang chủ
  2. » Thể loại khác

custom interceptor trong struts 2

4 94 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 304,58 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Custom Interceptor trong Struts 2 Trong Struts 2, bạn có thể tạo Interceptor riêng cho mình bằng cách triển khai Interceptor Interface trong một lớp và ghi đè 3 phương thức trong vòng đờ

Trang 1

Custom Interceptor trong Struts 2

Trong Struts 2, bạn có thể tạo Interceptor riêng cho mình bằng cách triển khai Interceptor Interface trong một lớp và ghi đè 3 phương thức trong vòng đời của nó

Để tạo Custom Interceptor, Interceptor Interface phải được triển khai Nó có 3 phương thức là:

1 public void init(): Được triệu hồi chỉ một lần và được sử dụng để khởi tạo Interceptor

2 public void intercept(ActionInvocation ai): Được triệu hồi với mỗi request, nó được sử dụng

để định nghĩa trình logic của tiến trình xử lý Nếu nó trả về chuỗi, thì result page sẽ được triệu hồi Nếu nó trả về phương thức invoke() của ActionInvocation Interface, thì Interceptor hoặc action kế tiếp sẽ được triệu hồi

3 public void destroy(): Được triệu hồi chỉ một lần và được sử dụng để hủy Interceptor

Ghi chú: Interceptor có thể thay đổi flow của ứng dụng bởi trả về chuỗi

Trong ví dụ này, chúng ta tạo Custom Interceptor mà chuyển đổi yêu cầu xử lý dữ liệu thành chữ hoa Bạn theo hai bước để tạo Custom Interceptor:

Bước 1: Tạo một Interceptor (phải triển khai Interceptor Interface)

Chúng ta chuyển đổi thuộc tính name của lớp action thành chữ hoa

MyInterceptor.java

package com ;

import com opensymphony xwork2 ActionInvocation ;

import com opensymphony xwork2 interceptor Interceptor ;

import com opensymphony xwork2 util ValueStack ;

public class MyInterceptor implements Interceptor {

public void init () {}

public String intercept ( ActionInvocation ai ) throws Exception

ValueStack stack = ai getStack ();

Trang 2

String s = stack findString ( "name" );

stack set ( "name" , toUpperCase ());

return ai invoke ();

}

public void destroy () {}

}

Trong phần code trên, phương thức getStack() của ActionInvocation trả về tham chiếu của

thứcfindString của ValueStack

Phương thức set của ValueStack thiết lập thuộc tính name với giá trị đã cho Trong trường hợp

này, chúng ta chuyển đổi giá trị của thuộc tính name thành chữ hoa và lưu trữ nó vào trong

ValueStack Phương thức invoke của ActionInvocation trả về thông tin của resource kế tiếp

Bước 2: Định nghĩa entry của Interceptor trong struts.xml file

Để định nghĩa Interceptor, đầu tiên chúng ta cần khai báo một Interceptor Phần tử interceptors của package được sử dụng để xác định các interceptor Phần tử interceptor của interceptors được sử dụng để định nghĩa Custom Interceptor của riêng bạn

Phần tử con interceptor-ref của action xác định Interceptor mà sẽ được áp dụng cho action này Tại đây, chúng ta xác định các interceptor là defaultStack và upper

struts.xml

<? xml version = "1.0" encoding = "UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts

Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<package name = "abc" extends = "struts-default" >

<interceptors>

<interceptor name = "upper" class = "com.MyInterceptor" ></interceptor>

</interceptors>

Trang 3

<action name = "login" class = "com.Login" >

<interceptor-ref name = "defaultStack" ></interceptor-ref>

<interceptor-ref name = "upper" ></interceptor-ref>

<result> welcome.jsp </result>

</action>

</package>

</struts>

Một số resource cần thiết khác

Chúng ta cũng cần một số resource khác như index.jsp, Login.java, welcome.jsp, như sau:

Tạo form để nhận input (index.jsp)

JSP page này tạo một form bởi sử dụng struts-tags Nó nhận name từ người dùng

index.jsp

<%@ taglib uri = "/struts-tags" prefix = "s" %>

<s:form action = "login" >

<s:textfield name = "name" label = "Name" ></s:textfield>

<s:submit value = "login" ></s:submit>

</s:form>

Tạo lớp action

:

Lớp action đơn giản chứa thuộc tính name và các phương thức setter và getter

Login.java

package com ;

public class Login

private String name ;

public String getName ()

return name ;

}

Trang 4

public void setName ( String name ) {

this name = name ;

}

public String execute (){

return "success" ;

}

}

Tạo thành phần view

JSP page này hiển thị name đã được nhập bởi người dùng

welcome.jsp

<%@ taglib uri = "/struts-tags" prefix = "s" %>

Welcome, <s:property value = "name" />

Ngày đăng: 02/12/2017, 21:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN