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> { //模型驅動