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";
            }
    }

    测试结果:

     

  • 相关阅读:
    Linux 进程退出后自动启动
    Python UDP broadcast PermissionError: [Errno 13] Permission denied
    C# 获取MAC地址
    C# 多线程
    C# UdpClient 设置超时时间
    C# 控件聚焦
    C# 添加图片资源
    C# Listview 第一列不能居中
    Ubuntu 14.04 AM335x TI-RTOS 编译
    为AM335x移植Linux内核主线代码
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12269125.html
Copyright © 2011-2022 走看看