zoukankan      html  css  js  c++  java
  • struts2(二)---ModelDriven模型驱动

    这篇文章是在上一篇文章(http://blog.csdn.net/u012116457/article/details/48194905)的基础上写的,大家可以先快速阅读一下上一篇。

    这篇文章用来写一下struts中的模型驱动机制modelDriven

    1.为什么要用modelDriven

     struts中Action 用来处理业务逻辑,如果向上一篇文章中的做法,把实体类的属性及get set方法都写在action中,会是代码比较混乱。根据分层的思想,我们可以将其封装为实体bean。
     而要在action中使用该bean,就要使用ModelDriver(模型驱动),使用ModelDriver的类要继承ModelDriven类。
    

    2.下面通过一个实例来看一下具体的使用方法

    struts.xml和web.xml依然和上一篇中配置的一样。

    不同的是将表单中涉及的属性封装为了一个bean.如下:

    package bean;
    
    public class UserBean {
        //封装表单项,即表单中有的字段,且要相对应
        private String name;
        private String password;
        //封装非表单项,即表单中没有该属性,此处info用来存放服务器返回给页面的信息
        private String info;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    
    }
    LoginAction.java修改为如下:
    

    package action;

    import bean.UserBean;

    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;

    public class LoginAction extends ActionSupport implements ModelDriven{

    private UserBean model;
    
    @Override
    public UserBean getModel() {
        if(model == null){
            model = new UserBean(); 
        }           
        return model;
    }
    
    public String index(){
        return "index";
    }
    
    public String execute(){
        //会自动取出页面表单中的值
        if("sa".equals(this.getModel().getName().trim())&&"aaaaaa".equals(this.getModel().getPassword().trim())){
            this.getModel().setInfo("登陆成功");
            return SUCCESS;         
        }{
            this.getModel().setInfo("登陆失败");
            return LOGIN;
    
        }
    }
    

    }
    welcome.jsp修改如下:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
    
        <title>info</title>
    
      </head>
    
      <body>
         <!-- 写法一 从request取 -->
         ${request.model.name}<br/>
         ${request.model.info}<br/>
         <!-- 写法二 从值栈取(值栈后边再细究) -->
         ${model.name}<br/>
         ${model.info}<br/>
         <!-- 简写 -->
         ${name}<br/>
         ${info}<br/>
      </body>
    </html>
    上面就是模型驱动机制,缺少的代码在文章首部提供的链接中有。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Linux下vi和vim模式相互切换
    Linux文件系统目录
    华硕笔记本(UEFI)支持U盘启动
    什么是RSS feed?订阅RSS有什么好处?
    JSTL的时间格式化标签的使用
    token session区别 以及JWT无状态token
    c++ 重载成员函数的地址如何获取
    c++ __VA_ARGS__
    协程任务调度器
    yield return 1
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931737.html
Copyright © 2011-2022 走看看