码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2 -- 获取请求参数

时间:2016-10-05 21:45:16      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

1.直接将action做一个model,就可以得到请求参数.

      缺点:需要单独定义javaBean,将action中属性copy到javaBean中。    
                 优点:简单。                
                 这种方式 ,底层是通过反射来实现的。

//获取请求参数  属性驱动  第一种,直接将action做为model
public class DemoAction extends ActionSupport {

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        // 2.判断用户名与密码是否正确
        if ("tom".equals(username) && "123".equals(password)) {

            request.getSession().setAttribute("username", username);

            return SUCCESS;
        } else {
            request.setAttribute("login.message", "用户名或密码错误");
            return "failer";
        }
    }
}

 

 

2.在action中声明一个model。

2.在action中声明一个model。
       private User user;提供get/set方法
                
         在页面上使用ognl来描述
        <input type="text" name="user.username">
                
          优点:简单,解决了第一种封装的问题
          缺点:在页面上使用了ognl表达式,页面不通用了。
                
          问题:这种方式,数据是怎样封装的?
          是通过struts2中的interceptor进行了数据封装.
          <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

//获取请求参数  属性驱动  第二种,直接在action声明一个model
public class DemoAction  extends ActionSupport {

    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String execute() throws Exception {
        HttpServletRequest request = ServletActionContext.getRequest();
        // 2.判断用户名与密码是否正确
        if ("tom".equals(user.getUsername()) && "123".equals(user.getPassword())) {

            request.getSession().setAttribute("username", user.getUsername());

            return SUCCESS;
        } else {
            request.setAttribute("login.message", "用户名或密码错误");
            return "failer";
        }
    }
}

 

3.模型驱动

步骤:
                1.让action类实现ModelDriven
                2.重写getModel方法
                3.在action中实现化一个model对象,让getModel方法返回这个对象。
                 
            优点:解决了属性驱动存在的问题
            缺点:一次只能封装一个model对象.
            
             struts2 有很多围绕模型驱动的特性
            * <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> 为模型驱动提供了更多特性

 

public class Login1Action extends ActionSupport implements ModelDriven<User>{
    
    private User user = new User();
    @Override
    public User getModel() {
        return user;
    }
    
    @Override
    public String execute() throws Exception {
System.out.println(user.getUsername()
+" --> "+user.getPassword());
return null; } }

 


 

扩展:
        1.将数据封装到List集合
            页面:
                username1:<input type="text" name="users[0].username"><br>
                password1:<input type="password" name="users[0].password"><br>
                
                username2:<input type="text" name="users[1].username"><br>
                password2:<input type="password" name="users[1].password"><br>
            
            action类:
                private List<User> users;
                get/set方法
                
        2.将数据封装到Map集合
            页面:
                username1:<input type="text" name="map[‘aaa‘].username"><br>
                password1:<input type="password" name="map[‘aaa‘].password"><br>
                
                username2:<input type="text" name="map[‘bbb‘].username"><br>
                password2:<input type="password" name="map[‘bbb‘].password"><br>
            
            action类:
                private Map<String, User> map;
                提供get/set

 

Struts2 -- 获取请求参数

标签:

原文地址:http://www.cnblogs.com/gudanjava/p/5932691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!