您的位置:首页 > 编程语言 > Java开发

访问Struts2中的自定义方法的几种方式

2017-04-03 01:59 393 查看

前期准备

首先创建一个待测试的
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>


这时候我们访问:http://localhost/HelloStruts2/user/add (我的端口设置成了 80)即可调用自定义方法!

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


访问链接:http://localhost/HelloStruts2/user/addUser

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


访问链接:http://localhost/HelloStruts2/user/add!addUser

注1:连接尾部的
addUser
为自定义方法。

说明

可以使用:http://localhost/HelloStruts2/user/add?method:execute=addUser

其中 add 是action的name属性,addUser为自定义方法名!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: