Struts2框架學習01

1.先建立一個Struts2項目

    除了com包和jsp文件夾,就是建立出來對的結構html

2表現層與業務層的數據傳輸

    2.1原始的servlet方法

        2.1.1建立jsp文件夾,建立一個jsp頁面form1.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/1/12/012
  Time: 8:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form name="form1" action="${pageContext.request.contextPath}/form1.action" method="post">

    username:<input name="name" type="text" ><br>
    password:<input name="password" type="text" ><br>
    address:<input name="address" type="text" ><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

    2.1.2.建立Action Form1Action

package com.xiaobo.Action;

import com.opensymphony.xwork2.ActionContext;
import org.apache.struts2.ServletActionContext;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;

/**
 * Created by Administrator on 2018/1/12/012.
 */
public class Form1Action {
    public  String execute(){
        //獲取表單的數據
        //方法一ActionContext,解耦性很是好,但不夠清晰明瞭
//        ActionContext actionContex=ActionContext.getContext();
//
//        Map<String, Object> map = actionContex.getParameters();
//
//        Set<String> keys = map.keySet();
//        for (String key:keys){
//            Object[] o = (Object[]) map.get(key);
//            System.out.println(Arrays.toString( o));
//        }
        //方法二
        //利用ServletActionContext獲取request對象,再像servlet獲取參數值;
        //簡單明瞭,想獲取就直接寫參數
        HttpServletRequest request = ServletActionContext.getRequest();
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        String address = request.getParameter("address");
        System.out.println(name+" "+password+" "+address);

        //獲取3個域對象
//        HttpServletRequest request = ServletActionContext.getRequest();
//        HttpSession session = request.getSession();
//        ServletContext Context = ServletActionContext.getServletContext();
        //方法三 利用接口來實現,繁瑣不用
        return "success";
    }
}

2.1.3.struts.xml文件在後面總體貼出

2.2屬性封裝的方法獲取表單數據

    2.2.1將上面代碼複製一遍就是form2了

    2.2.2 jsp中文件修改下action的名字

<form name="form1" action="${pageContext.request.contextPath}/form2.action" method="post">

    username:<input name="name" type="text" ><br>
    password:<input name="password" type="text" ><br>
    address:<input name="address" type="text" ><br>
    <input type="submit" value="提交">
</form>

    2.2.3 Form2Action

/**
 *屬性封裝的方法獲取表單數據
 */

public class Form2Action {
    //注意 password的值要與表單裏的password屬性一致
    private String name;
    private String password;

    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 getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    private String address;
    public  String execute(){
        System.out.println(name+ password+address);
        return "success";
    }
}

2.3 模型驅動封裝的方法獲取表單數據,開發中經常使用

    2.3.1 如上,只貼出Form3Actionjava

import com.xiaobo.Bean.User;

/**
 *模型驅動封裝的方法獲取表單數據,開發中經常使用
 */

public class Form3Action implements ModelDriven {
    //注意 User類的成員變量的值要與表單裏的password屬性一致
 private User user=new User();
    public  String execute(){
        System.out.println(user.getName()+ user.getAddress()+user.getPassword());
        return "success";
    }

    @Override
    public Object getModel() {
        return user;
    }
}

2.3.2 如代碼所示,須要一個包含全部的屬性的類而且提供get和set方法才能夠apache

package com.xiaobo.Bean;

/**
 * Created by Administrator on 2018/1/12/012.
 */
public class User {
    private String  name;
    private String  password;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    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 getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    private String  address;
}

2.4表達式的方式

    2.4.1話很少說,先複製代碼;session

    2.4.2 這個時候jsp中的代碼須要改一下jsp

<form name="form1" action="${pageContext.request.contextPath}/form4.action" method="post">

    username:<input name="user.name" type="text" ><br>
    password:<input name="user.password" type="text" ><br>
    address:<input name="user.address" type="text" ><br>
    <input type="submit" value="提交">
</form>

    2.4.3 Form4Action代碼,user對象要設置set和get方法;ide

package com.xiaobo.Action;

/**
 * Created by Administrator on 2018/1/12/012.
 */


import com.opensymphony.xwork2.ModelDriven;
import com.xiaobo.Bean.User;

/**
 *表達式的方法獲取表單數據,
 */

public class Form4Action  {
    //注意 User必定要有set和get方法
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public  String execute(){

        System.out.println(user.getName()+ user.getAddress()+user.getPassword());
        return "success";
    }

}

 

3.貼出struts.xml文件

<?xml version="1.0" encoding="UTF-8"?>

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

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <!--全局結果配置-->
        <!--<global-results>-->
            <!--&lt;!&ndash;type默認是dispatcher轉發,redirect重定向&ndash;&gt;-->
            <!--<result name="success" type="redirect">/jsp/success.jsp</result>-->
        <!--</global-results>-->
        <action name="Book" class="com.xiaobo.Action.BookAction" >
            <!--局部的結果配置 redirectAction以重定向的方式請求其餘的action -->
            <result name="success" type="redirectAction">Order</result>
        </action>
        <action name="Order" class="com.xiaobo.Action.OrderAction">
            <result name="success">/jsp/Order.jsp</result>
        </action>
        <action name="form1" class="com.xiaobo.Action.Form1Action">
            <result name="success">/jsp/success.jsp</result>
        </action>
        <action name="form2" class="com.xiaobo.Action.Form2Action">
            <result name="success">/jsp/success.jsp</result>
        </action>
        <action name="form3" class="com.xiaobo.Action.Form3Action">
            <result name="success">/jsp/success.jsp</result>
        </action>
        <action name="form4" class="com.xiaobo.Action.Form4Action">
            <result name="success">/jsp/success.jsp</result>
        </action>
    </package>
</struts>
相關文章
相關標籤/搜索