除了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>