1. 程式人生 > >struts2(二)---ModelDriven模型驅動

struts2(二)---ModelDriven模型驅動

這篇文章用來寫一下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>
上面就是模型驅動機制,缺少的程式碼在文章首部提供的連結中有。

相關推薦

struts2()---ModelDriven模型驅動

這篇文章用來寫一下struts中的模型驅動機制modelDriven 1.為什麼要用modelDriven struts中Action 用來處理業務邏輯,如果向上一篇文章中的做法,把實體類的屬性及get set方法都寫在action中,會是程式碼比較混

Struts2 ModelDriven(模型驅動)注意事項

以下僅作為個人筆記記錄,如有不當,多謝指出 首先,Action必須實現ModelDriven介面,可在implements ModelDriven<T> T中指定泛型,即你需要用到的Model類,如:要登入,從登入頁面提交上來userName和password,

Struts2淺析 之 模型驅動與屬性驅動

1.Struts2的屬性驅動. Struts2的屬性驅動指的是在action中JSP頁面的每一個form中的name都對應在action中有一個屬性與之對應。看下面程式碼片段: <form action="register.do" name="RegisterFo

ModelDriven模型驅動中文亂碼問題

在使用struts做專案的時候,使用模型驅動在資料庫插入中文的時候會發生亂碼,查詢了好久之後解決了。。總結一下: 當傳遞引數的時候發生亂碼,需要修改tomcat伺服器server.xml檔案在Connector節點中加入 URIEncoding=”UTF-8”

Struts2模型驅動(ModelDriven)

1.  模型驅動:           模型驅動是使用javaBean物件來封裝請求引數,在整個MVC流程中可以直接使用這個物件。在傳送請求後Struts將各個請求引數(javab的屬性)封裝到一個JavaBean物件中,Action接收這個例項物件並用該物件進行相關處理返回處理結果。          

【SSH快速進階】——struts2模型驅動ModelDriven

上篇部落格《SSH快速進階——struts2簡單的例項》中,處理使用者登陸的action—LoginAction為: package com.danny.user.action; public cl

struts2獲取表單數據之 屬性封裝 模型驅動 表達式封裝 對象封裝到list集合 對象封裝到map集合 五種方便的封裝方式

demo1 submit namespace auto nbsp return admin user pri 一、屬性封裝   屬性封裝是在action裏面設定屬性值,屬性名字一定要和表單中的name一樣,action中extends ActionSupport   dem

struts2 模型驅動

rate 方法 mit java todo ret auto post string 在servlet中獲取頁面傳遞過來的數據的方式是:request.getParameter(“username”);這個代碼可以獲取到頁面的username的數據。在action中可以通過

Struts2實現ModelDriven進行屬性驅動

nbsp class pub model 提交 必須 屬性 post for 1. 實現ModelDriven的作用 ModelDriven,屬性驅動十分有用,form表單提交的的name,和類中的set方法名稱想對應,就可以實現自動註入。 2. Struts2實現Mo

第06講 struts2的設定資料-模型驅動

1,在 HeadFirstStruts2chapter02 中,新建類UserAction3,實現ModelDriven。ModelDriven的缺點是隻能載入一個bean。 import com.cruise.model.User; import com.cruise.service.UserSe

struts2[2.3]引數獲得方式-(3)模型驅動獲得引數

1.學習路線 今天咱們來學struts2引數獲得方式,let`go!                   

Struts2模型驅動方式封裝資料

主要解決的問題:是在action中如果獲取請求引數 主要有兩種方式: 屬性驅動 直接在action類中提供與請求引數匹配屬性,提供get/set方法 在action類中創始一個javaBean,對其提供get/set ,在請求時頁面上要進行修改        

struts2的屬性驅動模型驅動

.Struts2的屬性驅動. Struts2的屬性驅動指的是在action中JSP頁面的每一個form中的name都對應在action中有一個屬性與之對應。   Struts2的模型驅動 Struts2的模型驅動其實和Struts1.x中的ActionForm有點類似,

Struts2模型驅動將實體類物件自動壓入值棧棧頂的問題

struts2中action自動將模型(實體類物件)放入值棧棧頂,棧頂的實體類例項的各個屬性(除了從頁面通過模型驅動進來的屬性)總是null,通過不斷的撓頭和查閱才發現模型驅動的ModelDriven介面的 getModel()返回的物件指向的是例項是最初new出的物件的地址,如果在acti

struts2 接受引數的兩種方式(屬性驅動模型驅動)

定義: 在struts2中,頁面的資料和action(控制層)傳輸基本上有兩種方式,一個是屬性驅動、另一個是模型驅動。 屬性驅動 基本資料型別的屬性對應: 就是Web頁面上html標籤

Struts2-屬性驅動模型驅動

 Struts2 - 屬性驅動與模型驅動 一、為什麼要使用屬性驅動和模型驅動?          :struts2與struts很大的不同點在於,struts的execute方法提供了HttpServletRequest和       HttpServletResp

Struts2模型驅動原理

談到模型驅動之前,先了解一下屬性驅動,屬性驅動和模型都是用來解決表單值和類中的屬性值對應傳遞的。 一、屬性驅動 a)  原理:主要靠的就是ParameterInterceptor攔截器來實現表單值和action中對應屬性的值傳遞,valueStack.setValue()

Struts2——模型驅動

模型驅動攔截器: Struts執行時候,會執行預設的攔截器棧,其中有一個攔截器,模型驅動攔截器: <interceptor name="modelDriven" class="com

Struts2屬性驅動模型驅動詳解

    屬性驅動,就是在Action中定義的是和表單中對應的一個個屬性,每個屬性都有對應的get/set方法。當表單提 交到Action後,Struts2將會自動將根據表單的name屬性呼叫Acti

Strust2 --- 根據泛型封裝Action的模型驅動ModelDriven獲取model物件

public class BaseAction<T> extends ActionSupport implements ModelDriven<T> { //模型驅動