- 浏览: 468383 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
a1439226817:
能不能发下源码1439226817@qq.com
ExtJsCRUD组件实现 -
w923690968:
[list][*]引用[u][/u][/list]
[JS]Drag And Drop -
zhumingyuan:
您好!用的的是3.2.3版本,按照您的方法配置了一下,但是还是 ...
spring vmc3.1.1 下,通过AnnotationMethodHandlerAdapter配置webBindingInitializer失效解决方案 -
sumo084:
我把xDarkness-MultClrBubble-1.0.j ...
JAVA实现类泡泡屏保效果 -
sumo084:
求源码,楼主好人,630483738@qq.com,谢谢
JAVA实现类泡泡屏保效果
要使用struts2,首先需要在web.xml中配置一个监听器:
接着,我们实现一个Action,在struts2中,实现Action并不像struts1那样一定需要继承一个基类,你也可以不继承任何基类:
代码看上去很简洁。我们定义了一个saveUser方法,这个方法的定义也不像struts1中那样一定需要request、forward参数什么的,完全就是一个很简单的方法。我们要想向request中设值则可以通过ServletActionContext.getRequest()获取到容器上下文中的request对象,就像这样:ServletActionContext.getRequest().setAttribute("sex", "男");
但是,struts2并不推荐这样使用,struts2推荐使用ActionContext上下文来设值,代码如下:
设置好值之后,我们可以通过struts2提供的一个静态常量Action.SUCCESS来返回需要跳转的页面了。Action.SUCCESS其实就是一个"success"字符串,它会到struts.XML中去找当前action中名称为success的result来进行跳转。struts.XML的配置如下:
struts2的配置文件通过使用package将action进行分类,这样便于组织。通常这个package需要继承一个名为"struts-default"的package,同时也引入了命名空间namespace的概念。
下面是一些比较简单的辅助类、POJO类:
接下来需要将刚才action中设置的值在页面中显示了,页面定义如下:
struts2使用了OGNL语言来对action上下文中设置的变量进行解析输出。OGNL的基础请参考本blog中“OGNL入门”那篇教程,我这边也就不再做过多的解释了。
上面的代码都完成后,我们就可以来进行测试了。在浏览器中手动输入如下url,或者在root文件夹下新建一个jsp文件,加上如下代码:
点击这个超链接,它会调用simple命名空间下的名称为hello的action中的saveUser方法进行参数传递。经由saveUser方法调用后,会跳转到success对应的页面,显示出刚才传递的数据。
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
接着,我们实现一个Action,在struts2中,实现Action并不像struts1那样一定需要继承一个基类,你也可以不继承任何基类:
package org.darkness.struts2.test; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; public class ParamsAction { private int id; private String username; private String password; private boolean boolvalue; // getter and setter methods here public Utils getUtils() { return new Utils(); } public String saveUser() { // 直接赋值,可以将这个值传递到下一个页面 id = 10; // 通过ActionContext对象来传值,在页面上,通过#name来取值 ActionContext.getContext().put("name", "暗之幻影"); // 通过httpRequest对象来传输数据 ServletActionContext.getRequest().setAttribute("sex", "男"); List<User> users = new ArrayList<User>(); for (int i = 0; i < 10; i++) { User user = new User(); user.setId(i); user.setUsername("darkness" + i); user.setPassword("sky" + i); users.add(user); } ActionContext.getContext().put("users", users); return Action.SUCCESS; } }
代码看上去很简洁。我们定义了一个saveUser方法,这个方法的定义也不像struts1中那样一定需要request、forward参数什么的,完全就是一个很简单的方法。我们要想向request中设值则可以通过ServletActionContext.getRequest()获取到容器上下文中的request对象,就像这样:ServletActionContext.getRequest().setAttribute("sex", "男");
但是,struts2并不推荐这样使用,struts2推荐使用ActionContext上下文来设值,代码如下:
ActionContext.getContext().put("name", "暗之幻影");
设置好值之后,我们可以通过struts2提供的一个静态常量Action.SUCCESS来返回需要跳转的页面了。Action.SUCCESS其实就是一个"success"字符串,它会到struts.XML中去找当前action中名称为success的result来进行跳转。struts.XML的配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="simple" namespace="/simple" extends="struts-default"> <action name="hello" class="org.darkness.struts2.test.ParamsAction"> <result name="success"> /struts2/test/save_success.jsp </result> </action> </package> </struts>
struts2的配置文件通过使用package将action进行分类,这样便于组织。通常这个package需要继承一个名为"struts-default"的package,同时也引入了命名空间namespace的概念。
下面是一些比较简单的辅助类、POJO类:
package org.darkness.struts2.test; public class Utils { public static String toLowerCase(String str) { return str.toLowerCase(); } public String toUpperCase(String str) { return str.toUpperCase(); } } package org.darkness.struts2.test; public class User { private int id; private String username; private String password; private Person person; // getter and setter methods here } package org.darkness.struts2.test; public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String fact(User u){ return u.getUsername()+","; } public String getFact(){ return "username"; } }
接下来需要将刚才action中设置的值在页面中显示了,页面定义如下:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> id:<s:property value="id"/> <br> username: <s:property value="username"/> <br> password: <s:property value="password"/> <br> booleanvalue: <s:property value="boolvalue"/> <br> name=<s:property value="#name"/> <br> name=<s:property value="name"/> <br> sex=<s:property value="#request['sex']"/> <br> <s:iterator value="#users"> id:<s:property value="id"/>, username:<s:property value="@org.darkness.struts2.test.Utils@toLowerCase(username)"/>, password:<s:property value="new org.darkness.struts2.test.Utils().toUpperCase(password)"/>,boolvalue:<s:property value="boolvalue"/> <br> </s:iterator> username: <s:property value="utils.toUpperCase(username)"/> <br> davevalue: <s:property value="datevalue"/> <br> point: <s:property value="point"/> <br> </body> </html>
struts2使用了OGNL语言来对action上下文中设置的变量进行解析输出。OGNL的基础请参考本blog中“OGNL入门”那篇教程,我这边也就不再做过多的解释了。
上面的代码都完成后,我们就可以来进行测试了。在浏览器中手动输入如下url,或者在root文件夹下新建一个jsp文件,加上如下代码:
<a href="simple/hello!saveUser.action?username=darkness&password=sky&boolvalue=true">调用ParamsAction.saveUser方法</a>
点击这个超链接,它会调用simple命名空间下的名称为hello的action中的saveUser方法进行参数传递。经由saveUser方法调用后,会跳转到success对应的页面,显示出刚才传递的数据。
发表评论
-
Flex端使用alivepdf直接导出PDF文件:测试中文有乱码
2011-07-21 16:15 2877Flex端使用alivepdf直接导出PDF文件:测试中文有乱 ... -
关于Project facet Java 6.0 is not supported的问题解决方案
2009-09-21 10:33 2113今天在Eclipse下发布使用java6.0的项目时遇到了“P ... -
JAVA日期格式化
2009-09-04 16:02 1627JAVA日期格式化直接使用SimpleDateFormat类, ... -
MyEclipse7.x下VSS(Visual SourceSafe)的安装和使用
2009-09-01 11:05 2090一、下载VSS插件 可以去官方网站下载,也可以在这里ht ... -
使JfreeChart横坐标数据换行显示
2009-08-31 20:50 6452在jfreechart中如果横坐标的数据太多显示的时候会变成 ... -
Struts2整合Freemarker生成静态页面
2009-08-10 09:42 6346这是生成静态页面的预览: 其对应的模板文件: & ... -
Struts2与Spring整合
2009-08-05 21:51 1323【先引入struts2、spring相 ... -
The method getJspApplicationContext(ServletContext) is undefined for the type
2009-07-08 10:45 10834The method getJspApplicationCo ... -
Java Base64类库学习笔记
2009-06-26 14:12 1870Java Base64 这是一个用于编码和解码(encode/ ... -
base64_encode和base64_decode的JAVA实现
2009-06-26 13:32 8268Base64是网络上最常见的用于传输8Bit字节代码的编码方式 ... -
OGNL入门
2009-05-01 07:30 3615package org.darkness.ognl.tes ... -
JSP复习笔记——文件上传
2009-04-28 11:57 1253SmartUpload主要的功能是上传文件 上传图片,可以通过 ... -
JSP复习笔记——第11章 JSP 构架和MVC设计模式
2009-04-28 11:56 132711.1 JSP Model I 体系结构 ... -
JSP复习笔记——第10章 连接数据库 之 JDBC相关
2009-04-28 11:00 1204批处理: import java.sql.*; publ ... -
JSP复习笔记——第10章 连接数据库 之 jsp+DAO实现留言管理程序
2009-04-28 10:57 1877案例-jsp+DAO实现留言管理程序 ------------ ... -
JSP复习笔记——第10章 连接数据库 之 使用JSP+DAO完成用户登陆
2009-04-28 10:52 1016使用JSP+DAO完成用户登陆 import java. ... -
JSP复习笔记——第10章 连接数据库 之 DAO设计模式
2009-04-28 10:51 1471之前的开发可以发现以下问题: 1、 所有的JDBC代码写在JS ... -
JSP复习笔记——第10章 连接数据库 之 JSP+JDBC留言管理程序
2009-04-28 10:48 1377JSP+JDBC留言管理程序 -- 创建表 -- 用户表 ... -
JSP复习笔记——第10章 连接数据库 之 使用JSP基于数据库完成用户登陆程序
2009-04-28 10:45 1377使用JSP基于数据库完成用户登陆程序 使用Statement存 ... -
JSP复习笔记——第10章 连接数据库 之 使用数据源
2009-04-28 10:43 917JDBC基本操作过程: 打开数据库连接 操作数据库 ...
相关推荐
总的来说,Struts2提供了多种方式来向结果传递参数,这使得它在处理复杂的业务逻辑和页面跳转时具有高度的可定制性。根据项目的具体需求,选择合适的方法可以提高代码的可维护性和效率。在实践中,结合使用不同的...
### Struts2中的参数传递 #### 一、概述 在Web开发中,Struts2框架因其灵活、高效的特点被广泛采用。Struts2的核心之一就是它对于参数传递的支持能力,这一点主要依赖于OGNL(Object-Graph Navigation Language)...
在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...
Struts2作为一款流行的Java Web框架,为开发者提供了丰富的功能,其中包括通过方法上传递参数的能力。这种方法使得在处理用户请求时更加灵活,不需要依赖特定的注解,而是直接通过参数名来获取界面传递的参数信息。...
### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...
2. **传递参数**:在Struts2中,可以通过不同的方式传递参数,如表单参数、URL参数、Action上下文参数等。例如,在`main.jsp`中可以使用表单元素将数据提交到服务器,然后在Action类中通过`@ActionParams`注解或者...
2. 在 JSP 页面中,使用表单或其他方式将参数传递给 Action。 3. 在 Action 中,使用设定的属性接收参数,例如 `userName`。 例如,在 Action 中定义了 `userName` 属性,可以在 JSP 页面中使用 `user1!add?...
在Struts2中,接收参数是常见的操作,这涉及到用户通过HTTP请求传递的数据如何被框架捕获和处理。这篇博客文章可能深入探讨了Struts2如何在Action类中获取和管理这些参数。 首先,Struts2的核心是DispatcherServlet...
在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...
本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...
在Struts2框架中,参数传递是连接前端页面与后台Action类的重要环节,使得用户交互的数据能够被正确处理。在本文中,我们将深入探讨几种在Struts2中进行参数传递的方法。 1. **Action中直接参数法** 这是最基本的...
5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。通过OGNL,可以在JSP页面中直接访问Action中的属性,或者在Action中动态设置模型数据。 6. ...
“Struts2.3.1.2_API.chm”文档包含了Struts2框架的详细API,其中涵盖了各个主要类和接口的解释、方法签名、参数说明以及返回值类型。开发者可以通过查阅此文档,快速查找特定功能的实现方式,例如ActionSupport类,...
本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 首先,最常见的接收参数方式是通过方法签名直接接收。例如,如果在JSP页面上有这样一个表单: ```jsp 提交" /> ``` 对应的Action...
7. 请求与响应的处理,包括参数传递和数据封装 8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts...
### Struts2 接受参数的几种方式 #### 第一种方式:直接在 Action 中设置变量 这种方式是最直接的参数接收方式。当从前端传递参数到后端时,我们需要确保 Action 类中有与这些参数名称相匹配的变量。例如,如果...
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 本实例没测试这个问题 但在工作项目中碰到了 但原因在这里...
4. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的默认表达式语言,用于在视图和模型之间传递数据。它允许开发者在JSP或其他视图层中直接访问Action对象的属性,或者设置模型数据。例如,`${user...
Struts2的安全漏洞通常涉及OGNL(Object-Graph Navigation Language),这是一个强大的表达式语言,用于在Struts2中传递数据和执行逻辑。例如,S2-045、S2-052、S2-063等都是知名的OGNL注入漏洞,允许攻击者通过精心...