[转]Struts form传值
Struts form传值
大约三四个月没用过struts框架,突然想拾起来,却发现好多都忘了。出现传值传不过来的问题。没办法,上网查了一下,看见了一位老师的帖子,总结的很好。特此转载与分享,文末附链接。
在Eclipse中建立第一个Struts2程序中我们建立了第一个struts程序,那么如何把登陆页面中的用户名传递到登录成功的页面中呢?
有三种方式,
1,使用默认的action的传递方式。
2,自定义一个vo,在action中使用这个vo
3,使用ModelDriven的方式。
下面分别叙述。
1,使用默认的action的传递方式。
action文件如下:
package struts2.login;
public class LoginAction {
private String username;
private String password;
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;
}
public String execute() {
System.out.println (LoginAction.class.hashCode());
if (username.equalsIgnoreCase("aaa") &&
password.equals("aaaaaa")) {
return "loginSuc";
}
else {
return "loginFail";
}
}
}
登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
欢迎您,<s:property value="username" />登录成功。
2,自定义一个vo,在action中使用这个vo
自定义vo文件名:LoginVO.java
文件内容:
package struts2.login;
public class LoginVO {
private String username;
private String password;
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;
}
}
在 Action文件中,要使用这个vo
文件内容:
package struts2.login;
public class LoginAction {
private LoginVO user = null;
public String execute() {
System.out.println (LoginAction.class.hashCode());
if (user.getUsername().equalsIgnoreCase("aaa") &&
user.getPassword().equals("aaaaaa")) {
return "loginSuc";
}
else {
return "loginFail";
}
}
public LoginVO getUser() {
return user;
}
public void setUser(LoginVO user) {
this.user = user;
}
}
登陆成功的文件如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
欢迎您,<s:property name="user.username">登录成功。
注意login文件的部分也要进行修改
文件内容如下:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<title>login2</title>
<form action="login.action" method="post">
username:<input type="input" name="user.username"><br>
password:<input type="input" name="user.password"><br>
<input type="submit" value="登录">
</form>
3,使用 ModelDriven的方式。
同样也需要一个vo,这个vo和方法2中的一致,但是action中的写法就不一样了。
action文件内容如下:
package struts2.login;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements ModelDriven<LoginVO>{
@Override
public LoginVO getModel() {
// TODO Auto-generated method stub
return user;
}
private LoginVO user = new LoginVO();
public String execute() {
System.out.println (LoginAction.class.hashCode());
if (user.getUsername().equalsIgnoreCase("aaa") &&
user.getPassword().equals("aaaaaa")) {
return "loginSuc";
}
else {
return "loginFail";
}
}
}
而登陆成功的页面和login的文件则不需要追加 user的前缀,即和方法1的文件内容一样。
三种方法的总结:
第一种方法把form的值都放在action文件中,当form提交的项目很多的时候,action的内容将变得很多,很臃肿。项目少的时候可用。
第二种方法将form的值单独放在vo中,解决了 action文件臃肿的问题,同时使form和action分开,较好。但是需要在设置和获取的jsp页面上进行标识。
第三种方法在第二种方法的基础上,通过实现特定的接口,去掉了action中的set和get方法,同时去掉了jsp页面上的标识。使后台程序的logic更加清晰。
链接地址:http://blog.csdn.net/tianlincao/article/details/6098371
[转]Struts form传值的更多相关文章
- 基于struts研究传值问题
一.新建项目 struts 1.file——>new——>Web Project——>取名struts——>finsh——>将之前项目下的jar包copy到该项目下 2. ...
- struts form表单提交action处理之后没有跳转页面
作为一个ssm新人,对struts的理解也仅仅是书本上一些简单的示例, 对如下这个form进行提交之后,执行完action,并return 一个字符串,在struts配置文件中配置了对应的jsp页面, ...
- 【转】jsp 表单form传值
写的很好,看到了忍不住不转啊,希望可以分享一下~~ 转载自http://blog.csdn.net/anmei2010/article/details/4140216 页面间链接和数据传递的三种方式 ...
- struts jsp传值到action,乱码的解决方案
使用了Struts框架,前台写好了编码为utf-8 <%@ page language="java" contentType="text/html; charset ...
- axios实现类似form传值的格式,以及实现拦截器功能,response拦截实现权限判断
import axios from 'axios' import Qs from 'qs' // 超时设置 const service = axios.create({ transformReques ...
- struts—文件的上传和下载
设计了一个小的案例:上传图片到服务器,上传成功后显示图片列表,然后点击下载上传到服务器的图片. 注意表单的配置属性: <form enctype="multipart/Form-dat ...
- (Struts)ActionForm类及表单数据验证
LoginForm代码: /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ pac ...
- struts的上传和下载
上传: jsp: <body> <h1>filogin</h1> <!--如果表单中有文件文件控件,上传的编码必须是multipart/form-data - ...
- MyEclipse+Struts+Hibernate+Mysql开发环境配置
软件: jdk-6u22-windows-x64.exe apache-tomcat-6.0.29.exe mysql-5.1.51-winx64.exe myeclipse-8.6.0-win32. ...
随机推荐
- Cryptography I 学习笔记 --- 信息完整性
1. ECBC-MAC,需要一对密钥k与k1,然后将明文分组,用cbc模式对明文分块加密,将最后的密文块再用k1进行加密,即可得到结果 2. NMAC,需要一对密钥k与k1,然后将明文分组,用k加密第 ...
- [Machine Learning with Python] My First Data Preprocessing Pipeline with Titanic Dataset
The Dataset was acquired from https://www.kaggle.com/c/titanic For data preprocessing, I firstly def ...
- 10.1综合强化刷题 Day2 morning
一道图论神题(god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...
- Ubuntu 16.04下IntelliJ IDEA菜单显示乱码的问题解决
说明:这个问题一般是Ubuntu安装时默认使用了中文,而IDEA默认是以系统默认字体为主,所以就会出现乱码:要解决这种问题,就是在IDEA启动时强制设置为英文. 解决方式: 在idea.vmoptio ...
- EasyMvc入门教程-基本控件说明(8)提醒导航
提醒导航顾名思义就是提醒大家注意某些文字了..请看下面的例子: 实现代码如下: @Html.Q().BlockRemind().Text("我可以作为提醒使用") 有的同学会说:这 ...
- Struts2学习记录-Value Stack(值栈)和OGNL表达式
仅仅是学习记录.把我知道的都说出来 一.值栈的作用 记录处理当前请求的action的数据. 二,小样例 有两个action:Action1和Action2 Action1有两个属性:name和pass ...
- nodejs session 设计
会话管理 { //保存会话 _data : {}, /** 会话基本操作 ***/ //查找会话 getSession : function(id){}, //创建会话 createSession : ...
- windows8开发-关于wp7应用迁移到win8 metro风格
虽然微软说,wp7应用移植到win8上面是比较简单,只需要修改部分API和设计原则上的细节,同时它也提供了一份比较简洁的参考文档: 而实际上这种移植的工作量还是不小的,尤其当应用引用了较多底层的API ...
- IntelliJ IDEA创建文件时自动填入作者时间 定制格式
IntelliJ IDEA创建文件时自动填入作者时间 定制格式 学习了:https://blog.csdn.net/Hi_Boy_/article/details/78205483 学习了:http: ...
- JAVA_StandardServer await create[8005]怎么办
Tomcat 6.0 错误信息: 严重: StandardServer.await:create[8005]: java.net.BindException: Address already in u ...