首页 > 其他 > 详细

Struts2笔记2—基础知识1

时间:2014-01-17 09:18:59      阅读:396      评论:0      收藏:0      [点我收藏+]

1、struts.xml中的package有个属性namespace,如下:

bubuko.com,布布扣
<package name="default" namespace="/" extends="struts-default">
        <action name="hello">
            <result>
               /Hello.jsp
            </result>
        </action>
    </package>
    
     <package name="front" namespace="/front" extends="struts-default">
        <action name="index">
            <result>
               /Index.jsp
            </result>
        </action>
    </package>
bubuko.com,布布扣

上述两个aciotn的url分别为:

http://localhost:8080/StrutsDemo/hello

http://localhost:8080/StrutsDemo/front/index

由此可以看出,namespace是项目名称以及action之间的一段,用于对action进行分模块的。

注意:若namespace="",即等于空,则url这一段可以随意定义,只要出现action名称即会被响应。

 

2、关于Action,在Struts.xml中可以用class来定义响应的类:

bubuko.com,布布扣
<package name="front" extends="struts-default" namespace="/">
        <action name="index" class="com.zsp.action.IndexAction">
            <result name="success">/Index.jsp</result>
           <result name="error">/Error.jsp</result>
        </action>
    </package>
bubuko.com,布布扣

其中IndexAction有3种实现方法:

<1>直接定义Java类,不需要继承接口和类,编写execute方法即可(不推荐)

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

<2>继承Action接口,重写execute()方法(不推荐)

bubuko.com,布布扣
import com.opensymphony.xwork2.Action;

public class IndexAction implements Action {
    @Override
    public String execute() {
        return "success";
    }
}
bubuko.com,布布扣

<3>继承ActionSupport类,重写execute()方法:

bubuko.com,布布扣
import com.opensymphony.xwork2.ActionSupport;

public class IndexAction extends ActionSupport {
    @Override
    public String execute() {
        return SUCCESS;
    }
}
bubuko.com,布布扣

ActionSupport继承Action接口,Action中定义了一些常量作为返回值:

bubuko.com,布布扣
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
bubuko.com,布布扣

Struts会根据不同的返回值指向不同的jsp页面,也可以自定义返回值。

 

3、路径问题,在开发中应该使用绝对路径,避免使用相对路径,可以在JSP页面如下定义:

bubuko.com,布布扣
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>

<head>
<base href="<%=basePath%>">
</head>
bubuko.com,布布扣

这样页面内的url就会自动在拼接到basePath之后。

 

4、Struts的动态调用(DMI)

在Struts.xml中,可以定义该Action执行的是哪个方法,而不一定非得是execute(),如下:

<action name="userAdd" class="com.zsp.action.UserAction" method="add">
            <result>/user_add_success.jsp</result>
        </action>

但如果类似的比较多,那么xml中就要定义很多的Action,所以这不是比较好的方法,可以在url中如此输入:

http://localhost:8080/StrutsDemo/user!add

使用感叹号,意味着该Action要执行add()方法,此时Struts.xml配置如下:

<action name="user" class="com.zsp.action.UserAction">
            <result>/user_add_success.jsp</result>
        </action>

Struts2笔记2—基础知识1

原文:http://www.cnblogs.com/zsp0817/p/3523339.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!