Struts2学习笔记(5)-参数传递方法


参数传递即将参数传输到程序后台中,后台可能做一些处理,然后再将内容存入数据库之类嗒!

参数传递的方法较多,一一说明如下。

1、Action中直接参数法

有如下的index.jsp文件

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> 
<base href="<%=basePath %>"/> 
<title>Insert title here</title> 
</head> 
<body> 
使用action属性接收参数<a href="user/user!add?name=a&age=8">添加用户</a> 
     
</body> 
</html>

对于其中的<a></a>来说,传递两个参数至程序,一个是name,一个是age,在struts.xml中的配置如下:

http://struts.apache.org/dtds/struts-2.0.dtd"> 
 
<struts> 
    <constant name="struts.devMode" value="true" /> 
    <package name="user" extends="struts-default" namespace="/user"> 
         
        <action name="user" class="com.bjsxt.struts2.user.action.UserAction"> 
            <result>/user_add_success.jsp</result> 
        </action> 
    </package> 
</struts>

这时我们的UserAction该如何写呢?范例如下:

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> 
<base href="<%=basePath %>"/> 
<title>Insert title here</title> 
</head> 
<body>  
使用Domain Model接收参数<a href="user/user!add?user.name=a&user.age=8">添加用户</a> 
     
</body> 
</html>

修改成上述18行部分。

上面说明了下Struts2参数传递的两种方法,其中第二种方法被称为:DomainModel,域模型。即新建一个类,用于存放属性。

下面说明另外一种方法,被称为:ModelDriven,模型驱动。

它与第二种方法非常类似,其他都是一样的,仅仅就是Action和访问有区别,它的Action如下:

复制代码 代码如下:
package com.bjsxt.struts2.user.action; 
 
import com.bjsxt.struts2.user.model.User; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 
 
public class UserAction extends ActionSupport implements ModelDriven<User>{ 
     
    private User user = new User(); 
     
    public String add() { 
        System.out.println("name=" + user.getName()); 
        System.out.println("age=" + user.getAge()); 
        return SUCCESS; 
    } 
 
    @Override 
    public User getModel() { 
        return user; 
    } 
     

我们可以从中看到,它实现了ModelDriven接口,并采用了泛型技术。采用这种方式Struts2不会自动的实例化一个对象,因此只能我们手动生成。它覆写了ModelDriven接口的getModel()方法,它的作用就是返回一个类对象。

它的访问是和第二种有区别的(与第一种方法一样):

复制代码 代码如下:
使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a>

它并没有采用user.name的方式,这也是为什么必须要new一个对象的原因。

这种方式的基本思想过程为:首先Action解析url,获得其中的参数,然后进入Action中,发现此Action实现了一个ModelDriven接口,此时就调用ModelDriven接口的getModel方法,获得类的对象,然后调用此类的set和get方法,将参数传入。

此种方式体现了Struts2的MVC思想,M----Model,V----View,C----Controller,但是这种方式很少使用,我们使用最多的还是上面的第二种方式。

以上就是Struts2中参数传递方法的全部内容,希望能给大家一个参考,也希望大家多多支持phpstudy。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3