1. 程式人生 > >訪問Struts2中的自定義方法的幾種方式

訪問Struts2中的自定義方法的幾種方式

前期準備

首先建立一個待測試的Action,然後在裡面寫一個自定義的方法,如下:

package com.struts.trio;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class MultiRequestAction extends ActionSupport{

    public String addUser(){                //自定義方法
        ActionContext.getContext().getSession()
        .put("user"
, "測試姓名"); //存一個欄位在session 用於測試方法是否被呼叫 return "success"; } }

然後建一個success.jsp用於呼叫返回介面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登入成功</title> </head> <body> <h1>${session.user} 登入成功</h1> </body> </html>

配置訪問

這裡我們來介紹四種配置struts.xml來實現訪問自定義方法的方法。

新增method實現訪問

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 定義邏輯檢視與物理檢視之間的聯絡 --> <package name="user" extends="struts-default" namespace="/user"> <action name="add" class="com.struts.trio.MultiRequestAction" method="addUser"> <result name="success">/jsp/success.jsp</result> </action> </package> <!-- end --> </struts>

注1:連結中的 user 和 add 分別是 package 裡面的 namespace 屬性和 action 裡面的 name 屬性。
注2:action 裡面的 method 屬性關聯我們的自定義方法。
注3:下面struts.xml中的程式碼只貼出核心程式碼。

使用萬用字元 “*” 進行訪問

    <package name="user" extends="struts-default" namespace="/user">
        <action name="*" class="com.struts.trio.MultiRequestAction" method="{1}">
            <result name="success">/jsp/success.jsp</result>
        </action>
    </package> 

注1:這個是官方推薦使用的方法

使用 “!” 進行訪問

這種方法稱為:動態方法呼叫
我們首先要都要開啟動態方法呼叫
最後程式碼為:

    <!-- 開啟動態方法呼叫 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 
    <package name="user" extends="struts-default" namespace="/user">
        <action name="add" class="com.struts.trio.MultiRequestAction">
            <result name="success">/jsp/success.jsp</result>
        </action>
    </package> 

注1:連線尾部的addUser為自定義方法。

說明