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

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 {
	@Override
	public 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.xml 5.默认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;
	...
	@Override
	public User getModel() {
		return user;
	}
}

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值