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>
还没有评论,来说两句吧...