1. 程式人生 > >Struts2模型驅動封裝

Struts2模型驅動封裝

  • 平常寫一下小東西,用到模型驅動封裝,簡直方便的不要不要的。

  • action頁面 
package Action;

import entity.Product;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class Product_Action extends ActionSupport implements ModelDriven<Product>{
    private Product product=new Product();
    @Override
    public Product getModel() {
        return product;
    }
    public String execute(){
        HttpServletRequest request= ServletActionContext.getRequest();
        HttpSession session=request.getSession();
        session.setAttribute("product",product);
        return SUCCESS;
    }
}
  •  兩個jsp頁面
<%@ page import="entity.Product" %><%--
  Created by IntelliJ IDEA.
  User: jdq8576
  Date: 2018/11/6
  Time: 10:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Save Product</title>
    <style type="text/css">
        /*@import url(../css/main.css);*/
        #global {
            text-align: left;
            border: 1px solid #dedede;
            background: saddlebrown;
            width: 560px;
            padding: 20px;
            margin: 100px auto;
        }
    </style>
</head>
<body>
<%
    Product product=(Product)session.getAttribute("product");
    String name=product.getName();
    String description=product.getDescription();
    String price=product.getPrice();
%>
<div id="global">
    <h4>The product has been saved.</h4>
    <p>
        <h5>Details:</h5>
        Product Name: ${name}<br/>
        Description: ${description}<br/>
        Price: $${price}
    </p>
</div>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: jdq8576
  Date: 2018/11/6
  Time: 9:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Add Product Form</title>
    <style type="text/css">
        #global {
            text-align: left;
            border: 1px solid #dedede;
            background: saddlebrown;
            width: 560px;
            padding: 20px;
            margin: 100px auto;
        }

        form {
            font: 100% verdana;
            min-width: 500px;
            max-width: 600px;
            width: 560px;
        }

        form fieldset {
            border-color: saddlebrown;
            border-width: 3px;
            margin: 0;
        }

        legend {
            font-size: 1.3em;
        }

        form label {
            width: 250px;
            display: block;
            float: left;
            text-align: right;
            padding: 2px;
        }

        #buttons {
            text-align: right;
        }
    </style>
</head>
<body>
<div id="global">
    <form action="actionSupport.action" method="post">
        <fieldset>
            <legend>Add a product</legend>
            <p>
                <label for="name">Product Name:</label>
                <input type="text" id="name" name="name" tabindex="1">
            </p>
            <p>
                <label for="description">Description:</label>
                <input type="text" id="description" name="description" tabindex="2">
            </p>
            <p>
                <label for="price">Price:</label>
                <input type="text" id="price" name="price" tabindex="3">
            </p>
            <p id="buttons">
                <input id="reset" type="reset" tabindex="4">
                <input id="submit" type="submit" tabindex="5" value="Add Product">
            </p>
        </fieldset>
    </form>
</div>
</body>
</html>
  •  Product類
package entity;

public class Product {
    private String name,description,price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}
  • Struts核心檔案:struts.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <package name="_1021" extends="struts-default" namespace="/">
        <action name="actionSupport" class="Action.Product_Action" method="execute">
            <result name="success">/jsps/ProductDetails.jsp</result>
        </action>
    </package>
</struts>

相關推薦

關於Struts2模型驅動封裝的細節

突然想到一個問題,當模型驅動封裝封裝了一次之後,也就是物件中被賦予了值,再次封裝較少的屬性,其它未封裝的資料還存在嗎? 通過輸出語句實驗,資料仍然還在物件中,所以,這裡的物件只是一個容器的作用,而且,屬性的封裝很有可能還是通過getParameter這種方式,配合反射機制來

Struts2模型驅動封裝

平常寫一下小東西,用到模型驅動封裝,簡直方便的不要不要的。 action頁面  package Action; import entity.Product; import com.opensymphony.xwork2.ActionSupport; import

struts2 模型驅動

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

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

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

struts學習(四)—屬性封裝模型驅動封裝和表示式封裝

本文學習內容來自傳智部落格struts教程。 1.屬性封裝 作用: 直接把表單提交屬性封裝到action的屬性裡面 步驟: (1)在action中宣告成員變數,變數名稱和表單輸入項的名稱一樣 (2)生成變數的set方法。 缺

Struts2模型驅動原理

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

Struts2——模型驅動

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

Struts2屬性驅動封裝(了),需要使用ognl表示式

建立一個Person類 public class Person {private String name;public String getName() {return name;}public void setName(String name) {this.name =

Struts2模型驅動亂碼處理

 在get傳參的時候遇到了struts2模型驅動的中文亂碼問題,各種寫filter過濾,都沒有成功,最後在網上查到 只需要在tomcat的server.xml配置中修改<Connector connectionTimeout="20000" port="8088" p

[java]struts2 模型驅動

   一開始敲網上商城的時候,對於資料的傳遞方式我是很驚豔了一把的,感覺特別高大上,就感覺,竟然不用像.net一樣取誰的值,給誰賦值這樣,只要需要用的時候,簡單的get一下就ok了,簡直高大上啊。

struts2模型驅動屬性名要和頁面一致

JSP程式碼<input type="text" name="shopId">javabean程式碼 private Integer shopID; 結果使用模型驅動時報錯 Unexpected Exception caught setting 'shopId'

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

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

Struts2模型驅動方式封裝資料

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

struts2屬性驅動模型

bsp 表單提交 man let 用戶 啟動服務 equal tex 屬性 屬性驅動模型的作用: 因為struts2與servlet API 實現了解耦,無法直接使用HttpServlet Request對象獲取表單提交的參數,但Struts2提供了屬性驅動模型機制來解決這

第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的屬性驅動模型驅動

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

struts2 屬性驅動模型 獲取表達資料

login.jsp <%-- Created by IntelliJ IDEA. User: WenSe Date: 2018/10/25 Time: 13:49 To change this template use File | Setting

Struts2模型驅動(ModelDriven)

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

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

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