【struts框架】第一节Action-路径问题与创建Action方法

简介:

1.路径问题

路径问题说明:

struts中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

虽然可以使用redirect方式解决,但redirect方式并非必要。

解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)

或者使用myeclipse经常用的,指定basePath:

myeclipse建立jsp页面给自动生成的东西
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
,意义就是:http://localhost:8080/XXXX/,其中XXXX就是上面的path

拿到basePath后,把所有的链接都改写为绝对路径:
<a href="<%=basePath %>path/path.action">进入问题界面</a>

还有一种方法是在<head>里面加<base href="<%=basePath%>">

四大法宝:关掉,刷新,重启,重装

PS:
当直接访问WEB应用的名时,首先服务器先去找web.xml里面的配置,找到struts的filter,之后根据struts的filter-mapping,找到struts.xml,去找namespace,如果namespace不存在,就交给tomcat的配置去处理,直接根据welcome-file-list跳转到欢迎界面了。

2.创建Action的方法

具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
具体Action的实现可以是一个普通的java类,里面有public String execute方法即可
或者实现Action接口
不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts封装好的方法

<result>里面的name要是不配的话,默认是success

创建Action的三个方法:
1.

package cn.edu.hpu.action;

public class IndexAction1 {
	public String execute(){
		return "success";
	}


}

2.
package cn.edu.hpu.action;

import com.opensymphony.xwork2.Action;

public class IndexAction2 implements Action{

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

}


3.
package cn.edu.hpu.action;

import com.opensymphony.xwork2.ActionSupport;

public class IndexAction3 extends ActionSupport{

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return super.execute();
	}

}


开发的时候最常用的是第三种方法,原因是ActionSupport已经帮我们封装了一些特别方便的方法来使用。

3.关于Action

Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用

a.method=来指定执行那个方法

例如:
  

<action name="add" class="cn.edu.hpu.action.AddAction" method="add">
       <result name="SUCCESS">/User_Add_success.jsp</result>
   </action>

package cn.edu.hpu.action;

public class AddAction {
	public String add(){
		return "SUCCESS";
	}
}

b.也可以在url地址中动态指定(动态方法调用DMI)(推荐)

(调用yyy的action中的add方法,而不是默认的execute方法)
http://localhost:8080/XXXX/yyy!add(注意用的是"!")

前者会产生太多的action,所以不推荐使用

尊重开源精神,尊重劳动成果,转载请注明出处:http://blog.csdn.net/acmman/article/details/43907321

相关文章
|
Java
struts2中Action的三种开发编写形式,ActionSupport,POJO
struts2中Action的三种开发编写形式,ActionSupport,POJO
74 0
struts2中Action的三种开发编写形式,ActionSupport,POJO
|
XML 安全 Java
action 的三种实现方式 | 学习笔记
快速学习 action 的三种实现方式,介绍了 action 的三种实现方式系统机制, 以及在实际应用过程中如何使用。
184 0
|
XML 前端开发 数据格式
Struts2里面灵活action跳转
Struts2里面灵活action跳转
173 0
|
Java API 容器
Struts2【开发Action】(二)
Struts2【开发Action】
155 0
Struts2【开发Action】(二)
|
XML 前端开发 Java
Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)
上一章简单介绍了Struts2的’两个蝴蝶飞,你好’ (一),如果没有看过,请观看上一章
332 0
Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)
|
Java API 数据安全/隐私保护
Struts2【开发Action】知识要点
前言 前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理 Action开发的三种方式 在第一次我们写开发步骤的时候,我们写的Action是继承着ActionSupport类的.
1162 0