struts2 如何获取表单数据?
解决方案 »
- 求教一个关于class加载的问题
- 我第一个jsp页面 是这样的 我想另一个jsp页面得到这个页面的num的值怎么做啊
- Ireport3.7.1和struts2整合问题
- 求一正则表达式如下:
- 安装ipv6协议的机器 在使用request.getRomoteAddr()为什么获得的是ipv6地址,不能获得以前ipv地址了
- struts中jsp页面中不能获取action类中设置的session
- 移动设备单点登录如何实现?
- 在线等:Struts 的<logic:iterate>可否设置循环的增长步长
- 急的要死,请大家检测一个问题,我实在搞不明白了!!!
- struts taglib 问题?
- java 项目经验怎么写?
- java入门级,提高级学习方法求教?
<input type="text" name="uname" value="123"/>
action 中必须也得有个uname 属性,还得有get,set方法。。
提交的时候,uname 的值就是123
表单提交时,框架自动将表单中的值set进来。在action的处理方法中就可以使用了。
2 也可以让action extends一个ModeAction 假设表单封装的类是A
在action中写上 private A a; 提供它的get set方法。然后A类中封装form的属性。规则跟struts1一样
/** 项目: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)本程序工作流程图:
页面中的表单数据 名称和 action中一致就行了
直接 把 要取的东西定义成成员变量 给个 setter方法就好
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;
}
}}
同意!
楼主去了解一下struts2 的 基本用法 就会清楚的
1、action的属性名字与页面的名字一致,而此时又会出现如果action中的属性是对象的情况,此时页面中的name又必须设置为该对象的变量名.该对象的属性名
2、针对页面必须设置该对象的变量名.该对象的属性名的情况,可以让action实现ModelDriven接口,这样在action中存在对象时依然可以直接在页面使用该对象的属性名
有 User类 属性 name pwd
在action中 private User user; 提供getter setter方法
在页面中 <input type="text" name="user.name"/>
<input type="password" name="user.pwd"/>
这样就能直接获得一个User对象了