除了com包和jsp文件夾,就是建立出來對的結構html
<%-- 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>
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"; } }
<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>
/** *屬性封裝的方法獲取表單數據 */ 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.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.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"; } }
<?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>--> <!--<!–type默認是dispatcher轉發,redirect重定向–>--> <!--<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>