AAABBB struts2学习笔记之action传值方式(向jsp传值的典型的三种方式)
来源:互联网 发布:linux gzip 解压zip 编辑:程序博客网 时间:2024/06/05 23:03
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 1.5em; font-size: 12px;">通过包装javaBean传值: <s:property value="user.username"/></span>
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 1.5em; font-size: 12px;">因为迭代器的定义是只能循环数组,集合或map,所以单个javaBean对象是不能使用迭代器遍历取值的</span>
action层里面,一定要写上set,get list<Javabean> 方法,因为迭代器只输出象数组,list集合,map集合的数组,迭代器的values值一定得是list<Javabean>类型。通过action里面的类视的直接javabean方法: <%=request.getParameter("zss") %>>通过在action里面设置”ServletActionContext.getRequest().getSession().setAttribute("SessionKey", "SessionValue")“方法::<%=request.getSession().getAttribute("SessionKey") %>
如果是jsp向action传值,action类中只需要定义与jsp相对应的name属性值的get set方法即可,然后直接在action里面打印这个name值就能得到结果(前端输入的name结果值)。
JSP页面:写在表单里面,利用隐藏域传值,注意表单提交的地址是下面的这个action<input type="hidden" name="name" value="zss"/>saction里面: private String name; public String getName() {return name;}public void setName(String name) {this.name = name;}System.out.println("jsp传值: "+name);
1、字段驱动方式
所谓字段驱动方式就是通过字段进行数据传递。在Struts2中我们可以直接在Action里定义各种Java基本类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。
前几篇中提到的struts2例子,用的就是字段驱动方式。
UserAction.java
- public class UserAction {
- 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() throws Exception {
- System.out.print(username+"--------"+password);
- // 只有用户名为001,密码为123456方可成功登陆
- if (username.equals("001") && password.equals("123456")) {
- return "success";
- } else {
- return "error";
- }
- }
- }
这个Action中的定义了两个字符串字段"username”和"password”,这两个字段分别对应登陆页面上的“用户名”和“密码”两个表单域。
2、模型驱动方式
所谓模型驱动方式是指通过JavaBean模型进行数据传递。采用这种方式,JavaBean所封装的属性与表单的属性一一对应,JavaBean将成为数据传递的载体。使用模型驱动方式,Action类通过get*()的方法来获取模型,其中“*”代表具体的模型对象。
首先,我们创建一个模型:
接下来定义Action类,两个字段已经不再单独定义,而是定义一个User类型的域模型:
- public class LoginAction extends ActionSupport {
- private static final long serialVersionUID = 1030294046920869257L;
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- // 处理用户请求的execute方法
- public String execute() throws Exception {
- if (isInvalid(user.getUsername()))
- return INPUT;
- if (isInvalid(user.getPassword()))
- return INPUT;
- // 只有用户名为001,密码为123456方可成功登陆
- if (user.getUsername().equals("001") && user.getPassword().equals("123456")) {
- // 通过ActionContext对象访问Web应用的Session
- ActionContext context = ActionContext.getContext();
- context.getSession().put("user", user.getUsername());
- context.getSession().put("password", user.getPassword());
- System.out.println(user.getUsername() + "----" + user.getPassword());
- return "success";
- } else {
- return "error";
- }
- }
在使用模型驱动传值的时候需要注意,如果JSP页面是负责取值的,那么取值的格式必须为“模型对象名.属性名”;如果JSP页面是负责传值的,那么传值的格式可以为“模型对象名.属性名”,也可以直接是“属性名”。
接下来对登陆页和成功页进行改动:
login.jsp:
success.jsp:
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>成功页面</title>
- </head>
- <body>
- <p align="center">登陆成功!!!您的用户名是<s:property value="user.username"></s:property></p>
- </body>
<span style="font-size: 14px;"><br/>数据库升级信息记录:<br/></span><span style="font-size:24px;color:#ff0000;"> <strong> <struts:iterator id="u" value="update"> Code:<struts:property value='#u.getCode()'/> <br/></strong></span><span style="font-size: 14px;"> Version:<struts:property value='#u.getVersion()'/> <br/> Url:<struts:property value='#u.getUrl()'/> <br/> Dialect:<struts:property value='#u.getDialect()'/> <br/> ProName:<struts:property value='#u.getProName()'/> <br/> Driver:<struts:property value='#u.getDriver()'/> <br/> </struts:iterator> </span>也可以这样写:
<s:iteratorid="task"value="#request.tasks"> <trclass="table_header"> <td><s:propertyvalue="#task.tname"/></td> <td><s:propertyvalue="#task.tuid"/></td> <td><s:propertyvalue="#task.tstartTime"/></td> <td><s:propertyvalue="#task.tendTime"/></td> <td><s:propertyvalue="#task.tstate"/></td>
0 0
- AAABBB struts2学习笔记之action传值方式(向jsp传值的典型的三种方式)
- Struts2 jsp页面和Action之间的传值方式
- Struts2.x学习二(Action的传值方式)
- Struts2:jsp前台传值到action后台的三种方式
- struts2 action获取jsp参数的三种方式
- Struts2第九讲学习笔记Action的三种实现方式,两种驱动方式
- struts2中action的传值方式
- Struts2里面的action传值方式
- struts2中action的传值方式
- Struts2中Action的传值方式
- Action向视图传值的6种方式
- struts2的action向jsp传值问题。
- struts2创建Action的三种方式
- Struts2 action的三种实现方式
- Struts2:action的三种开发方式
- JSP页面向action传值方式总结
- jsp向action中传值的方式
- JSP 向action传递参数的方式
- GDI+使用例子
- 黑马程序员——IO流(结束篇)
- Python标准模块logging
- 93 添加class 移出class 移除/移出link或style的css规则,不常用
- Android之Bitmap
- AAABBB struts2学习笔记之action传值方式(向jsp传值的典型的三种方式)
- Android的bitmap和优化
- 多线程的开启方法
- Java内存管理
- 快速开发:普元EOS平台简介
- 开源项目
- 计算灰度图像的归一化直方图
- Spring学习总结(2.1)— Spring MVC
- QML基本可视化元素--Text