博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2 的学习笔记(三) Struts2 数据传输
阅读量:6149 次
发布时间:2019-06-21

本文共 3328 字,大约阅读时间需要 11 分钟。

hot3.png

 数据处理

1.       在servlet中,如果要获取页面提交的数据需要使用request.getParameter方法来获取,并且每次需要进行相关的类型转换工作。数据的获取及转换工作比较简单,并且是重复的操作。在struts2中提供了一种比较优秀的方式来接收和转换数据。

2.       在struts2中,如果要获取表单中的数据可以有多种方式:

a)         属性驱动方式

b)        对象驱动方式

c)         模型驱动方式。

3.       属性驱动:页面表单中表单域的名称和action的属性名一致,并且在action中提供属性的get/set方法,那么struts2会自动将数据设置到action的属性上,在处理方法中可以直接获取表单值(属性值)。为action的属性设置了get方法,那么在页面中就可以通过el表达式获取属性值。

Jsp页面

<form action="login.action" method="post">

    username:<input type="text" name="username"/><br>

    password:<input type="password" name="password"/><br>

    <input type="submit" value="login"/>

    </form>

Action处理类

public class UserAction {

   private String username;

   private String password;

   //登录处理方法

   public String login(){

      System.out.println("用户名:"+username+"\t密码:"+password);

      if("siggy".equals(username)&&"1111".equals(password)){

         //登录成功

         /**

          * Action.SUCCESS="success"; 表示action执行成功,并且需要展示页面

          * Action.NONE="none";表示action执行成功,不需要视图展示页面

          * Action.ERROR="error";表示action执行失败,需要一个失败页面进行展示

          * Action.INPUT="input";表示如果action要执行成功,需要更多的输入信息。

          * Action.LOGIN="login";表示需要用户登录方可访问

          */

        

         //return "success";

         return Action.SUCCESS;

      }

      return "login";

   }

  

   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;

   }

}

4.       对象驱动:在action类中,将对象设置为属性,并且提供get/set方法。在页面中表单域名称是action类中对象的属性名.属性。在对象的类中提供对应属性的get/set方法即可。这样在action的处理类获取的将会是对象。对象驱动的好处在于不用在处理类中 再封装对象。缺点是在jsp中表单域名称有重复的地方。

Vo类

public class User {

   private String name;

   private String pwd;

   public String getName() {

      return name;

   }

   public void setName(String name) {

      this.name = name;

   }

   public String getPwd() {

      return pwd;

   }

   public void setPwd(String pwd) {

      this.pwd = pwd;

   }

}

Action处理类

public class UserObjectAction {

   private User user;

   public String login(){

      System.out.println("用户名:"+user.getName()+"\t密码:"+user.getPwd());

      if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){

         return Action.SUCCESS;

      }

      return "login";

   }

   public User getUser() {

      return user;

   }

   public void setUser(User user) {

      this.user = user;

   }

}

Jsp页面

<form action="loginObject.action" method="post">

    username:<input type="text" name="user.name"/><br>

    password:<input type="password" name="user.pwd"/><br>

    <input type="submit" value="login"/>

    </form>

5.       模型驱动:由于对象驱动在页面中有重复的代码,当类的属性比较多时,开发效率比较低。Struts2中提供了一种模型驱动,使得在页面的表单域名称和类的属性名一致,action处理类需要实现ModelDriven接口即可。

Jsp页面

<form action="loginModel.action" method="post">

    username:<input type="text" name="name"/><br>

    password:<input type="password" name="pwd"/><br>

    <input type="submit" value="login"/>

    </form>

Vo类

public class User {

   private String name;

   private String pwd;

   public String getName() {

      return name;

   }

   public void setName(String name) {

      this.name = name;

   }

   public String getPwd() {

      return pwd;

   }

   public void setPwd(String pwd) {

      this.pwd = pwd;

   }

}

Action处理类

public class UserModelAction implements ModelDriven<User>{

   private User user;

   public String login(){

      System.out.println("用户名:"+user.getName()+"\t密码:"+user.getPwd());

      if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){

         return Action.SUCCESS;

      }

      return "login";

   }

   public User getModel() {

      return user = new User();

   }

   public User getUser() {

      return user;

   }

 

   public void setUser(User user) {

      this.user = user;

   }

}

 

转载于:https://my.oschina.net/u/3053883/blog/862111

你可能感兴趣的文章
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>