zoukankan      html  css  js  c++  java
  • Struts2(Action获取数据和生命周期、StrutsMVC、自动数据类型转换)

    1、从表单获取数据

    (1)创建一个表单(form.jsp):

     <body>
                <form action="${pageContext.request.contextPath}/h/Action">
                    用户名:<input type="text" name="username"/>
                           <input type="submit" value="提交"/>
                </form>
     </body>

    (2)创建一个Action:

    public class Action extends ActionSupport{
            private String username;
            public String getUsername() {
                return username;
            }
    
            public void setUsername(String username) {
                this.username = username;
            }
    
            public String execute(){
                System.out.println("用户名为:"+username);
                return "success";
            }
    }

    Action从表单获取值的时候,需要保证被获取的值在Action和表单中有相同的名字。

    (3)对Struts2.xml 文件进行配置:

     <package name="hello" namespace="/h" extends="struts-default">
            <action name="Action" class="pers.zhb.hello.Action" method="execute">
                <result name="success" type="dispatcher">/form.jsp</result>
            </action>
     </package>

    (4)测试结果:

    表单中写入数据并提交:

     Action中获取数据并打印到控制台:

    2、Action的生命周期

    (1)每次请求Action的时候都会创建一个Action实例对象:

    public class Action extends ActionSupport{
            private String username;
            public String getUsername() {
                return username;
            }
    
            public void setUsername(String username) {
                this.username = username;
            }
    
            public Action(){
                super();
                System.out.println("Action的实例对象被创建了!");
            }
    
            public String execute(){
                System.out.println("用户名为:"+username);
                return "success";
            }
    }

     (2)Action是线程安全的(不存在并发,每发起一次请求都会创建一个Action实例),可以用成员变量接收参数,而Servlet是线程不安全的,不能用成员变量接收数据。

    3、MVC与StrutsMVC:

    (1)MVC思想:

    M:操作数据的业务处理层

    V:采集和显示数据

    C:视图层和业务模型之间的桥梁

    (2)Struts MVC:

     M:对象模型,封装页面传来的参数,交由业务进行处理,处理后可能还要返回模型数据到页面进行显示

     V :视图,struts提供标签来支持视图的展示

     C:提供struts的过滤器,拦截用户的请求,查找struts配置文件,为其匹配一个对应的Action,这个Action负责调用模型,获得数据,然后对数据做部分处理,接着Action再将处理后的数据,为其选择一个视图进行显示

    4、自动数据类型转换

    在利用Servlet接收表单提交的数字类型数据的时候,需要将表单提交的字符串类型的数据转化为相应的数据,但是在Struts2里面是不需要的,可以自动完成。

    表单:

     <form action="${pageContext.request.contextPath}/h/Action">
                    用户名:<input type="text" name="username"/><br>
                    年龄:<input type="text" name="userage"/><br>
                           <input type="submit" value="提交"/>
     </form>

    Action:

    public class Action extends ActionSupport{
            private String username;
            private Integer userage;
            public Integer getUserage() {
                return userage;
            }
    
            public void setUserage(Integer userage) {
                this.userage = userage;
            }
    
            public String getUsername() {
                return username;
            }
    
            public void setUsername(String username) {
                this.username = username;
            }
    
            public String execute(){
                System.out.println("用户名为:"+username);
                System.out.println("年龄为:"+userage);
                return "success";
            }
    }

    测试结果:

     

  • 相关阅读:
    多线程学习纪要
    字符编码ASCII、Unicode、UTF-8以及验证
    C# 自定义特性Attribute要点
    Java --- 流操作
    数据库 --- 索引
    Java -- 枚举
    mybatis --- 使用通用mapper或者mybatis-plus进行映射时,当数据库中有大写字母,自定义映射的字段名。
    后端 --- 快速创建一个sb项目 (使用spring官网的https://start.spring.io)
    数据库 --- decimal类型测试
    Java --- 线上故障调优01 打印堆栈信息
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12269125.html
Copyright © 2011-2022 走看看