struts2 如何获取表单数据?

解决方案 »

  1.   

    不太了解struts2,应该也有 actionform 吧
      

  2.   

    例:
    <input type="text" name="uname" value="123"/>
    action 中必须也得有个uname 属性,还得有get,set方法。。
    提交的时候,uname 的值就是123
      

  3.   

    1 可以将form中的属性 直接写在action中 提供get set 方法,命名规则跟struts1相同。必须一致。
    表单提交时,框架自动将表单中的值set进来。在action的处理方法中就可以使用了。
     
    2 也可以让action extends一个ModeAction  假设表单封装的类是A
      在action中写上 private A a; 提供它的get set方法。然后A类中封装form的属性。规则跟struts1一样
      

  4.   

    /*****************************************************************************/
    /**                   项目:Struts2的简单应用                                **/
    /**                   开发工具:MyEcilpse8.0                                 **/
    /**                   作者:                                        **/
    /**                   时间:2010年6月26日星期六20:41                     ** /
    /*****************************************************************************/1) 打开MyEclipse8.0新建一个Myeclipse下的Web工程,工程名为“Struts2_Sample”
    2) 配置web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <filter>
        <filter-name>struts</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
     </filter>
     <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
     </filter-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    3) 导入类库到WEB-INF下的“lib”目录(最基本为下面6个):
    commons-fileupload-1.2.1.jar
    commons-logging-1.0.4.jar
    freeer-2.3.15.jar
    orgl-2.7.3.jar
    struts2-core-2.1.8.1.jar
    xwork-core-2.1.6.jar
    4) 新建登录界面(index.jsp):
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@taglib uri="/struts-tags" prefix="s" %>
    <html>
      <head>    <title>登陆界面</title>
      </head>
      
      <body>
          <s:form action="Login">
              <s:textfield name="name" label="登录名"></s:textfield>
              <s:textfield name="password" label="密码"></s:textfield>
              <s:submit value="登录"></s:submit>
          </s:form>
      </body>
    </html>5) 新建登录成功界面(success.jsp):
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@taglib uri="/struts-tags" prefix="s" %>
    <html>
      <head>
        <title>成功界面</title>
      </head>
      <body>
                  登陆成功!<hr />
                  用户名:${name }<br />
                  密码:${password }<br />            
      </body>
    </html>6)新建登录失败界面(error.jsp):
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@taglib uri="/struts-tags" prefix="s" %>
    <html>
      <head>
        <title>失败界面</title>
      </head>
      <body>
                  登陆失败!<hr />
                  用户名或密码错误!<a href="index.jsp">返回</a>
      </body>
    </html>
    6) 在“src”目录下新建一个名为“com.lgj.login”的包,在该包下新建一个Action类(Login):
    package com.lgj.login;
    import com.opensymphony.xwork2.ActionSupport;
    public class Login extends ActionSupport{ /**
     * 本程序采用Struts2.1.8搭建一个登录程序应用
     * 
     * 作者:
     * 时间:2010年6月26日下午
     */
    private static final long serialVersionUID = 1L;
    private String name;
    private String password;
    public String execute() throws Exception{

    if(this.name.equals("lgj")&&this.password.equals("198879"))
    {
    return SUCCESS;
    }else
    {
    return ERROR;
    }

    }
    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;
    }
    }7) 配置“struts.xml”,在“src”目录下新建一个名为“struts.xml”的文件,配置如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
                            "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
         <package name="default" extends="struts-default">
            <action name="Login" class="com.lgj.login.Login">
               <result name="success">/success.jsp</result>
               <result name="error">/error.jsp</result>
            </action>
         </package>
    </struts>    8) 部署项目到服务器,打开浏览器,在浏览器下输入:
       http://localhost:8080/Struts2_Sample
       即可看到结果:
     图1
     
    图29)本程序工作流程图:
        
                                          
      

  5.   

    action中定义 对象的个属性 
    页面中的表单数据 名称和 action中一致就行了
      

  6.   

    struts2 是采用 注入 方式的
    直接 把 要取的东西定义成成员变量 给个 setter方法就好
      

  7.   

    没有actionform,直接把你要提交的数据的属性,定义到你请求的action里面,然后生成他的set,get方法就可以取到值了。
      

  8.   

    package com.ih.console.system;import java.util.Date;
    import java.util.List;
    import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.ih.constant.MessageContant;
    import com.ih.constant.SessionConstant;
    import com.ih.core.system.LoginManager;
    import com.ih.core.system.NavTree;
    import com.ih.core.system.impl.LoginManagerImpl;
    import com.ih.core.system.impl.NavTreeImpl;
    import com.ih.dao.system.LoginManagerDao;
    import com.ih.dao.system.pojo.PersonnelSystemUser;
    import com.ih.util.ParseDate;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    /**
     * 登录
     * @author zhangrui
     * 
     *
     */
    public class LoginAction extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private String userName;
    private String passWord;
    private String time;
    private String ip;
    private int count; public int getCount() {
    return count;
    } public void setCount(int count) {
    this.count = count;
    } public String getIp() {
    return ip;
    } public void setIp(String ip) {
    this.ip = ip;
    } public String getTime() {
    return time;
    } public void setTime(String time) {
    this.time = time;
    } public String getUserName() {
    return userName;
    } public void setUserName(String userName) {
    this.userName = userName;
    } public String getPassWord() {
    return passWord;
    } public void setPassWord(String passWord) {
    this.passWord = passWord;
    } /**
     * 登录
     * @author zhangrui
     * @return
     */
    @SuppressWarnings("unchecked")
    @Override
    public String execute() throws Exception {
    LoginManager lm = new LoginManagerImpl();
    //md5加密
    // MD5 md5 = new MD5();
    // passWord = md5.getMD5ofStr(this.passWord);
    PersonnelSystemUser user = lm.checkPassWord(userName,passWord);
    if (lm.checkLogin(this.userName, this.passWord)) {
    ActionContext actionContext = ActionContext.getContext();
    Map session = actionContext.getSession();
    session.put(SessionConstant.USERID, user.getUserId());
    List  list = lm.getRoleName(user.getUserId());
    session.put(SessionConstant.ROLE, list);
    NavTree nt=new NavTreeImpl();
    session.put(SessionConstant.ROOTNODE,nt.queryTreeRootNode());
    HttpServletRequest req=(HttpServletRequest)ServletActionContext.getRequest();
    this.ip = req.getRemoteAddr();
    session.put(SessionConstant.IP, ip);
    Date date = new Date();
    this.time = ParseDate.parseFullFormat(date);
    session.put(SessionConstant.TIME, time);
    this.count = lm.loginTimes(user.getUserId());
    session.put(SessionConstant.LOGINTIMES, count);
    return SUCCESS;

    else {
    this.addActionError(MessageContant.MESSAGE);
    return ERROR;
    }
    }}
      

  9.   


    同意!
     楼主去了解一下struts2  的 基本用法 就会清楚的  
      

  10.   

    这位,页面里面的id值放到action里面作为属性,然后提供get,set方法,然后你就可以直接用啦,不需要其它的什么操作
      

  11.   

    struts2有两种方法实现表单数据的传输:
    1、action的属性名字与页面的名字一致,而此时又会出现如果action中的属性是对象的情况,此时页面中的name又必须设置为该对象的变量名.该对象的属性名
    2、针对页面必须设置该对象的变量名.该对象的属性名的情况,可以让action实现ModelDriven接口,这样在action中存在对象时依然可以直接在页面使用该对象的属性名
      

  12.   

    嗯 还能用对象 
     有 User类 属性 name pwd
     在action中 private User user; 提供getter setter方法
     在页面中 <input type="text" name="user.name"/>
              <input type="password" name="user.pwd"/>
     这样就能直接获得一个User对象了
      

  13.   

    简单的说就是set进来的,这里满包括属性驱动和模型驱动两种方式。LZ上网一搜就明白了。