struts2封装请求参数

利用struts2框架进行将页面请求的参数封装有三种方法

第一种(不推荐)

就是动作类和bean中结合在一起,这样方法比较简单,但是很混乱。

代码:

package com.example.action;

import com.opensymphony.xwork2.ActionSupport;

public class Person extends ActionSupport{

    private String username;
    private String password;
    private String nickname;
    public String getUsername() {
        return username;
    }

    //动作的方法
    public String execute() throws Exception {
        System.out.println(username+","+password+","+nickname);
        return NONE;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
}
  <action name="act1"  class="com.example.action.Person">
         <!--  静态注入  相当于调用action动作类的get 和set 方法-->

          <param name="nickname">游客</param>
</action>

第二种将动作类与bean中分离

package com.example.domain;
/**
 *  这是模型
 * @author sheldonLee
 *
 */
public class Student {

    private String username;
    private String password;
    private String nickname;
    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;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    @Override
    public String toString() {
        return "Student [username=" + username + ", password=" + password
                + ", nickname=" + nickname + "]";
    }

}
package com.example.action;

import com.example.domain.Student;

/**
 * 这是动作
 * @author sheldonLee
 *
 */
public class StudentAction {

    private Student student;

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }

    public String save(){
        //将表单的数据封装到模型对象中
        //调用service  将student中的数据保存到数据库中
        System.out.println(student.toString());
        return "none";
    }
}
  <body>
   <form action="${pageContext.request.contextPath }/act2" method="post">
   用户名:<input type="text" name="student.username"/><br/>
   密     码:<input type="password" name="student.password"/><br/>
   昵     称: <input type="text" name="student.nickname"/><br/>
   <input  type="submit" value="注册"/><br/>
 </form>

第三种是驱动模型(动作和bean也是分开的)ModelDriven

package com.example.domain;
/**
 *  这是Customer模型
 * @author sheldonLee
 *
 */
public class Customer {
    private String username;
    private String password;
    private String nickname;
    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;
    }
    public String getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    @Override
    public String toString() {
        return "Customer [username=" + username + ", password=" + password
                + ", nickname=" + nickname + "]";
    }

}
package com.example.action;

import com.example.domain.Customer;
import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction implements ModelDriven<Customer>{

    //动作类关联一个Customer 对象
    //为了getModel() 这个不会返回为空 所以要是实例化一个对象
    private Customer customer= new Customer();

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public String save(){
        System.out.println(customer);
        return "none";
    }
    //调用动作方法前,框架会先调用这个方法
    //这里不会实例化对象
    public Customer getModel() {
        // TODO Auto-generated method stub
        return customer;
    }
}
   <form action="${pageContext.request.contextPath }/act2" method="post">
   <!--参数中省掉了类名 -->
   用户名:<input type="text" name="username"/><br/>
   密     码:<input type="password" name="password"/><br/>
   昵     称: <input type="text" name="nickname"/><br/>
   <input  type="submit" value="注册"/><br/>
 </form>

主要注意两点 动作类要实现ModelDriver的接口,动作类中要关联对象要注意要实例化

时间: 2024-10-11 07:30:05

struts2封装请求参数的相关文章

深入分析JavaWeb 45 -- Struts2封装请求参数与类型转换

作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中,Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装. 1.Struts2 提供三种数据封装的方式 Action 本身作为model对象,通过成员setter封装 创建独立model对象,页面通过ognl表达式封装 使用ModelDriven接口,对请求数据进行封装 1. 方式一:在动作类中成员变量给予初始值. 在配置文件中struts.xml中 <package name="p1&q

Struts2(三)struts2处理请求参数及其校验

一.Action处理请求参数 1.Action处理请求参数三种方式 1.1.Action 本身作为model对象,通过成员setter封装 (属性驱动 ) // 页面: 用户名 <input type="text" name="username" /> <br/> // Action : public class RegistAction1 extends ActionSupport { private String username; pu

Struts2 -- 获取请求参数

1.直接将action做一个model,就可以得到请求参数. 缺点:需要单独定义javaBean,将action中属性copy到javaBean中.                     优点:简单.                                 这种方式 ,底层是通过反射来实现的. //获取请求参数 属性驱动 第一种,直接将action做为model public class DemoAction extends ActionSupport { private String

struts2的请求参数url的写法以及相关struts2与Spring集成时的情况

在使用struts2的时候,我们都知道以前的那种以离散的值作为传递的单位,他们的请求url是这么写的: localhost:8080/test/login?username=hello&password=world 以及其对应的action是这么写的 <span style="font-size:24px;">public class LoginAction extends ActionSupport { private String username ; priv

Struts2中请求参数校验

在Struts2中,请求参数的校验要放在服务端进行.其实我们在做.NET的项目时,使用过EasyUI,EasyUI有各种校验机制,那会是在客服端就直接对输入参数进行了校验.但是我们的Struts框架也是蛮强大的,它本身就给我们提供了非常详细的校验机制. 1.手动校验 使用手动校验,需要一下这么几个条件: ①你的Action要继承ActionSupport接口: ②重写validate接口,如果属性有问题,通过addFieldError(String,String)方法存储错误信息. ③如果向fi

Struts2中请求参数的接收方式和ModelDriven机制及其运用

odelDriven 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public class User { private int id; private String username; private String password; private int age; private String address; publi

struts2获得请求参数的方式

1.用Action的属性接收参数 2.用DomainModel(域模型)接收参数 3.用ModelDriven接收参数 使用这种方式接受参数需要实现ModelDriven接口,

Struts2接受请求参数

Action增加属性的get和set方法 接下来在浏览器上运行一下: 获取到了值! 原文地址:https://www.cnblogs.com/batj/p/9116207.html

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装