訪問Struts2中的自定義方法的幾種方式
阿新 • • 發佈:2019-01-30
前期準備
首先建立一個待測試的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
為自定義方法。