Struts2学习之常用配置及action接收参数

来源:互联网 发布:玫瑰花淘宝 编辑:程序博客网 时间:2024/05/29 08:43

在http://blog.csdn.net/qq_21231581/article/details/51838812中我们完成了Struts2框架的准备工作,并且顺利演示了一个小栗子,本篇文章我会继续了解Struts2的常用配置,好了开始吧:

1.Struts.xml文件的基本内容

             1.全局属性

             2.用户请求与action响应之间的关系

             3.action可能用到的参数和结果

             4.各种拦截器的配置

2.action类中访问servlet的API(request,response,session等)

             方式1.ActionContext(推荐使用

                        ActionContext.getContext()可获得该对象,同时其有方法如:

                                     1、public Object get(Object key):取得HttpServletRequest中key的值                  
                                  2、void put(String key,Object value):设置HttpServletRequest中key的值为value;
                                   3、public Map getApplication():获取封装了ServletContext的Map对象;
                                   4、void setApplication(Map application):设置ServletContext实例;

                                  5、Map getParameters():类似于HttpServletRequest中的getParametersMap方法;
                                   6、public Map getSession():获取封装了HttpSession的Map对象;
                                   7、void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换为session的属性名和属性值;;

             方式2.实现Aware接口(不推荐使用

             方式3.ServletActionContext(推荐使用),有如下静态方法

                                   1.getPageContext();

                                  2.getRequest() ;

                                  3.getResponse();

                                  4.getServletContext()。

3.动态方法调用

             步骤一:在Action类中创建相关的动态方法,形如:

public class DemoSupport extends ActionSupport {@Overridepublic String execute() throws Exception {System.out.println("Hello struts2!");return this.SUCCESS;}public String loadAll() {System.out.println("Hello Dynamic Method!");return "loadAll";}}

            步骤二:创建与该方法相对应的视图,即JSP界面

                            我已经创建名为loadAll.jsp文件

            步骤三:在struts.xml文件中相应配置

                           配置方法有三种:

                                    方法一:在action节点中直接配置一个result节点,形如:

<!-- 这是第一种动态方法调用方式 class:对应的Action类路径 method:对应创建的方法名<span style="font-size:14px;"><span style="font-size:14px;"><span style="font-size:14px;"><span style="font-size:14px;"><span style="font-size:14px;"></span></span></span></span></span><pre name="code" class="html"> name:url中访问Action的路径名
 --><action name="load" class="Action.DemoSupport" method="loadAll"><!-- 对应的JSP视图 --><result>/loadAll.jsp</result></action>
                                           弊端:一个action类中动态方法多的话比较繁琐

                                    方法二:感叹号配置使用(不推荐),有兴趣的可百度,在此不做赘述。

                                   方法三:通配符配置使用(官方推荐)“_*”

<action name="demo_*" method="{1}" class="Action.DemoSupport">            <result>/result.jsp</result>            <!--name值与相应的动态方法返回结果相一致 -->            <result name="loadAll">/loadAll.jsp</result>        </action>

                                           说明:action节点的name属性中的“*”对应method的{1},如果有第二的“*”则对应的{2},以此类推
                                           url为http://.../demo_loadAll.action,则loadAll.JSP就会显示在浏览器界面

4.指定多个配置文件(Struts.xml分解)

                                步骤一:新建一个与struts.xml相同结构的xml文件 

                               步骤二:在struts.xml中如下配置

<include file="sys.xml"></include>
                               由此,一些配置即可写入到同目录下(在其他目录下创建则补全相对路径)的sys.xml5.默认action设置

6.修改action的后缀名

             首先,得保证web.xml中struts的map-partern是/*(之前我被这个玩了一小会儿)

             之后,在struts.xml中的struts节点下添加如下

<!-- value即后缀,默认为action,若设置为空则如下,其他的话直接写入配置 --><constant name="struts.action.extension" value=","

7.Action类接收参数

             方法一:使用Action的属性接收参数:在Action类中定义属性,创建getter/setter:形如:

public class DemoSupport extends ActionSupport {private String username = "";public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}......public String loadAll() {System.out.println(this.username);System.out.println("Hello Dynamic Method!");return "loadAll";}}
                           但是这个方法不适合用在参数较多的地方

            方法二:使用DomainModel接收参数:

                            将较多的字段封装成Bean,之后在Action中新建一个该成员对象,并给出getter/setter

                           并且,在JSP中需要加上成员对象名去写参数:

<form action="sys/login.action" method="post">  <input type="text" name="user.username">  <input type="password" name="user.password">  <input type="submit" value="submit"></form>
                           接收使用参数使用对象的getter/setter

           方法三:使用ModelDriven接收参数:

                           将较多的字段封装成Bean,之后在Action中新建一个该成员对象

                            将对应的Action类实现ModelDriven接口给出对象Bean的泛型,实现其getModel方法

public class DemoSupport extends ActionSupport implements ModelDriven<User>{private User user;...@Overridepublic User getModel() {return user;}}

                           接收使用参数使用对象的getter/setter



0 0
原创粉丝点击