Struts2 url介绍和 Action类可以三种实现方式

Struts2 url介绍和 Action类可以三种实现方式

url大体的分类:

1、一般的方式
  2、带有特殊符号的方式: _   !


下面是示例代码:

1. struts.xml

<?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>
	<!-- 常量:实现动态的方法的调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

	<!-- 一般形式的url -->
	<package name="user" extends="struts-default">
		<action name="insert" class="cn.sz.action.UserAction">
			<result>/index.jsp</result>
		</action>
		<!--这里可以指定调用哪一个方法 -->
		<action name="login" class="cn.sz.action.LoginAction" method="login">
			<result>/index.jsp</result>
		</action>
	</package>

	<!-- 一般形式的url,这里使用命名空间 -->
	<package name="orders" extends="struts-default" namespace="/orders">
		<action name="add" class="cn.sz.action.OrdersAction">
			<result>/index.jsp</result>
		</action>
	</package>
	<!-- 特殊形式url(动态调用方法) -->
	<package name="dept" extends="struts-default" namespace="/dept">
		<!-- {1}表示第一个*的内容,{2}表示等*的内容,{0}表示全部的内容 -->
		<action name="*_*" class="cn.sz.action.{1}Action" method="{2}">
			<result>/{0}index.jsp</result>
		</action>
	</package>

	<package name="good" extends="struts-default" namespace="/good">
		<action name="good_*" class="cn.sz.action.GoodAction" method="{1}">
			<!-- <result name="update">/jsp/good/update.jsp</result> 
				<result name="search">/jsp/good/search.jsp</result> 
				<result name="insert">/jsp/good/delete.jsp</result> -->
			<!-- 上面的写法可以替换为如下 -->
			<result name="{1}">/jsp/good/{1}.jsp</result>
		</action>
	</package>

	<!-- 带 ! 动态方法调用需要配置上面的常量 -->
	<package name="person" extends="struts-default" namespace="/person">
		<action name="person" class="cn.sz.action.PersonAction">
			<result name="add">/jsp/person/add.jsp</result>
		</action>
	</package>
</struts>


   2.访问的页面index.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>Struts2 url测试页面</h1>

	<a href="insert.action">一般形式(继承ActionSupport)</a>
	<br />
	<a href="login.action">一般形式二(自定义普通类Action)</a>
	<br />
	<a href="orders/add.action">一般形式三(实现Action接口)</a>
	<br />
	<a href="dept/Dept_add.action">特殊形式(*_*形式Action)</a>
	<br />
	<a href="good/good_add.action">特殊形式(xxx_*形式Action)</a>
	<br />
	<a href="person/person!add.action">特殊形式(xxx!*形式Action)</a>
	<br />
</body>
</html>


   
 Action类可以有三种实现方式:继承ActionSupport类,实现Action接口,一个普通类


1.继承ActionSupport类

package cn.sz.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	public String execute() {
		
		return SUCCESS;
	}
}


2.实现Action接口

package cn.sz.action;

import com.opensymphony.xwork2.Action;

public class OrdersAction implements Action {

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}

}


3.一个普通类

package cn.sz.action;

public class GoodAction {

	public String add() {
		return "add";
	}

	public String delete() {
		return "delete";
	}
}


 补充知识:

我们可以在Action中指定跳转的页面(动态指定结果集),如下代码:

flag设置我们要跳转的页面地址。

Action类:

package cn.sz.action;

public class LogAction {
	private String flag;

	public String getFlag() {
		return flag;
	}

	public void setFlag(String flag) {
		this.flag = flag;
	}

	public String insert() {
		if (true) {
			this.flag = "/main.jsp";
			return "main";
		} else {
			return "insert";
		}
	}
}

struts.xml 配置文件

<?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="login" extends="struts-default" namespace="/login">
		<action name="log" class="cn.sz.action.LogAction" method="insert">
			<result name="insert">/jsp/admin/index.jsp</result>
			<result name="main">${flag}</result>
		</action>
	</package>
</struts>   
  



  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值