- 浏览: 1589216 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
1.Struts2中的类型转换器的注册方法
2.编写 自定义类型转换器类 继承 DefaultTypeConverions 类
(将 一个String类型的变量,封装到 User POJO对象中
实现: 将字符串 "用户名,密码" <==>封装到 User 的 name 和 pwd 属性中)
3.编写日期转换类 将 yyyy-mm-dd hh:mm:ss <==> Date
4.pojo
5.action
6.struts.xml
7.Action范围的 类型转换器配置文件 --放在 和action同目录下
ActionName-conversion.properties (命名规则)
8.login.jsp
9.success.jsp
10.访问地址 (string --->Date,Object)
--http://localhost:8080/Struts2_UserdefinedConversion/login.jsp
--依次 填入
admin,123456
2012-08-20 23:23:23
2012-08-25 00:00:00
==提交
11.就会看到效果
---
Object -- String: 欢迎你!admin你的密码是:123456
复合类型:Fri Jan 20 23:23:23 CST 2012
常用类型:Wed Jan 25 00:00:00 CST 2012
12.访问地址(Date,Object--String)
--http://localhost:8080/Struts2_UserdefinedConversion/userAction.action
就会看到文本框中是经过转换后的值
13.全局范围的类型转换器属性文件 (放在src目录下就可以了)
固定的名称 :xwork-conversion.properties
14.测试全局的时候 将局部的转换的属性文件中 给注释 然后再测试
注册局部类型转换器 比如: action范围 注册全局类型转换器 比如: 整个应用程序
2.编写 自定义类型转换器类 继承 DefaultTypeConverions 类
(将 一个String类型的变量,封装到 User POJO对象中
实现: 将字符串 "用户名,密码" <==>封装到 User 的 name 和 pwd 属性中)
package com.sh.conversion; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; import com.sh.pojo.User; public class UserConversion extends DefaultTypeConverter { @Override public Object convertValue(Map<String, Object> context, Object value, Class toType) { if(toType==User.class){ String [] params=(String[])value; User user=new User(); String [] userValue=params[0].split(","); user.setName(userValue[0]); user.setPwd(userValue[1]); return user; } else if(toType==String.class){ User user=(User)value; return "<"+user.getName()+","+user.getPwd()+">"; } return null; } }
3.编写日期转换类 将 yyyy-mm-dd hh:mm:ss <==> Date
package com.sh.conversion; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; import com.sun.xml.internal.fastinfoset.stax.events.Util; public class DateConversion extends DefaultTypeConverter { @Override public Object convertValue(Map<String, Object> context, Object value, Class toType) { SimpleDateFormat df=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); try { if(value!=null){ if(toType==Date.class){ String [] params=(String[])value; String param=params[0]; if(!Util.isEmptyString(param)){ return df.parse(param); }else return null; } else if (toType==String.class) { Date date=(Date)value; return df.format(date); } } } catch (Exception e) { e.printStackTrace();; } return null; } }
4.pojo
package com.sh.pojo; import java.util.Date; public class User { private String name; private String pwd; private Date birthday; //get set }
5.action
package com.sh.action; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; import com.sh.pojo.User; public class UserAction extends ActionSupport { private User user; private String message; private Date date; @Override public String execute() throws Exception { // TODO Auto-generated method stub if(getUser()!=null){ this.message="欢迎你!"+user.getName()+"你的密码是:"+user.getPwd(); return SUCCESS; } else{ user=new User(); user.setName("admin"); user.setPwd("123456"); date=new Date(); return INPUT; } } //get set }
6.struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="false"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="userAction" class="com.sh.action.UserAction"> <result>/success.jsp</result> <result name="input">/login.jsp</result> </action> </package> </struts>
7.Action范围的 类型转换器配置文件 --放在 和action同目录下
ActionName-conversion.properties (命名规则)
#Object--String user=com.sh.conversion.UserConversion # 注册action中的复合类型的转换器(String <=> Date) user.birthday=com.sh.conversion.DateConversion #注册action中常用 date 的转换器(String <=> Date) date=com.sh.conversion.DateConversion
8.login.jsp
<body> <s:form action="userAction" method="post"> 用户名:<s:textfield name="user"/><br/> 复合生日:<s:textfield name="user.birthday"/><br/> 常用日期:<s:textfield name="date"/><br/> <s:submit value="提交"/> </s:form> </body>
9.success.jsp
<body> Object -- String: ${message}<br/> 复合类型:${user.birthday }<br/> 常用类型:${date } </body>
10.访问地址 (string --->Date,Object)
--http://localhost:8080/Struts2_UserdefinedConversion/login.jsp
--依次 填入
admin,123456
2012-08-20 23:23:23
2012-08-25 00:00:00
==提交
11.就会看到效果
---
Object -- String: 欢迎你!admin你的密码是:123456
复合类型:Fri Jan 20 23:23:23 CST 2012
常用类型:Wed Jan 25 00:00:00 CST 2012
12.访问地址(Date,Object--String)
--http://localhost:8080/Struts2_UserdefinedConversion/userAction.action
就会看到文本框中是经过转换后的值
13.全局范围的类型转换器属性文件 (放在src目录下就可以了)
固定的名称 :xwork-conversion.properties
#应用程序中的素有User对象的birthday com.sh.pojo.User.birthday=com.sh.conversion.DateConversion #应用程序中的所有date类型 java.util.Date=com.sh.conversion.DateConversion #应用程序中的所有User的 name,pwd com.sh.pojo.User=com.sh.conversion.UserConversion
14.测试全局的时候 将局部的转换的属性文件中 给注释 然后再测试
//(string --->Date,Object) --http://localhost:8080/Struts2_UserdefinedConversion/login.jsp //(Date,Object--String) --http://localhost:8080/Struts2_UserdefinedConversion/userAction.action
- Struts2_UserdefinedConversion.zip (3.3 MB)
- 下载次数: 18
发表评论
-
解决getOutputStream() has already been called for this response
2014-07-30 19:16 3315java.lang.IllegalStateException ... -
Struts2 + ajaxFileUpload 异步上传文件
2013-12-04 19:33 1887ajaxFileUpload下载地址http://www.ph ... -
Struts2 Action 解析提交的XML
2013-10-16 12:30 1633package com.bjdata.bjsearch.p ... -
MyBatis+Spring+Struts2
2012-11-28 00:32 10611MyBatis3.1.1+Spring3.1.2+Struts ... -
Ibatis 整合spring + Struts2 加入OSCACHE
2012-11-14 00:10 4551说明: 使用 spring2.5 +ibatis2.3 ... -
Struts2中使用JfreeChart
2012-11-06 09:02 16371.jar commons-fileupload-1.2.2. ... -
Struts2整合SiteMesh
2012-11-05 10:33 76471.导入Struts2的jar 和 sitemesh.jar ... -
Struts2 编写安全策略(四十五)
2012-09-23 23:53 2290编写安全策略 包含(1 ... -
SSH2整合完整案例(四十三)
2012-09-14 09:34 20678注解配置:Struts2+Spring2.5+Hibernat ... -
Struts2 阻止表单重复 和 等待页面(四十四)
2012-09-23 21:13 2138表单重复提交现象 导 ... -
Struts2 文件上传,下载,删除(四十一)
2012-09-10 23:37 12324本文介绍了: 1.基于表单的文件上传 2.Struts 2 的 ... -
Struts2 文件上传,下载的类型(四十二)
2012-09-06 23:18 1993声明: 以下复制他人的!!! Struts2 文件上传 之 ... -
Struts2 常用标签使用(三十九)
2012-09-03 09:28 64201.append标签 使用append标签可以把多个集合对 ... -
Struts2 timer拦截器(三十二)
2012-08-31 02:17 20641.Strus2系统拦截器中,timer拦截器可以实现输出Ac ... -
Struts2 常用标签使用(三十九)
2012-09-03 00:50 51.append标签 使用append标签可以把多个集合对 ... -
Struts2 主题和模版设置(四十)
2012-09-03 20:24 4140----------------Struts2 主题----- ... -
Struts2 如何使用OGNL表达式(三十八)
2012-08-30 20:55 50711.OGNL是Object Graph Navitagtion ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-30 11:25 18457A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-29 14:08 9A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 iterator 标签遍历 Map,List,数组(三十六)
2012-08-26 18:30 205201.使用iterator 标签 遍历 数组,Map,List ...
相关推荐
标题中提到的“自己写的转换器”很可能就是针对Struts1框架的一个自定义类型转换器实现。这样的转换器能够帮助开发者更方便地处理不同数据类型的转换工作,尤其是在处理用户表单提交的数据时,可以将前端传入的字符...
默认情况下,Struts2提供了多种内置的转换器,可以处理基本数据类型和一些常见的Java对象,如Date、File等。当Action类的属性与请求参数类型不匹配时,Struts2会自动寻找合适的转换器进行转换。 **转换器的注册和...
- **类型转换和验证**:Struts2支持自定义类型转换器,可以将用户输入的数据转换为所需的类型;同时还提供了一套强大的验证机制,确保用户输入的数据符合预期格式。 #### 五、Struts2实战经验 - **国际化**:通过...
Struts2允许自定义类型转换器,以便在Action属性和请求参数之间进行数据转换。局部类型转换器针对特定Action类的某个属性,而全局类型转换器则对所有Action类生效。通过实现`Converter`接口或扩展`...
2. **xwork-core.jar**:XWork是Struts2的基础,它提供了一些基础功能,如类型转换、Ognl表达式支持、拦截器机制等。很多Struts2的功能都是基于XWork实现的。 3. **ognl.jar**:OGNL(Object-Graph Navigation ...
在Struts2中,转换器(Converter)扮演着数据绑定和格式化的重要角色,使得开发者能够对输入的数据进行有效控制和处理。本教程主要聚焦于Struts2的转换器开发,适合那些已经具备Java基础知识并希望通过MyEclipse IDE...
通过这些知识点,我们可以了解到"Struts2 demo2"可能涵盖了Struts2的核心特性,如Action配置、数据校验、类型转换、OGNL表达式、防止重复提交和自定义标签库的使用。这些内容对于理解和实践Java web开发中的MVC模式...
转换器是Struts 2提供的一个接口,用于处理ActionForm或模型对象中属性的数据类型转换。在表单提交时,如果用户输入的数据与预期的数据类型不符,转换器就会介入,尝试将用户输入的数据转换为正确的类型。此外,转换...
9. **类型转换(Type Conversion)**:Struts2提供了一套强大的类型转换机制,位于`org.apache.struts2.convention.converters`包下,可以自动将请求参数转换为Action属性的期望类型。 10. **注解支持(Annotations...
类型转换功能自动将请求参数转换为Action字段的类型,简化了开发工作。文件上传功能则允许用户通过表单提交文件,Struts2提供了一套完整的处理机制。 拦截器是Struts2的核心特性之一,它可以插入到Action调用前后,...
- **功能增强**:Struts2引入了更多的内置特性,如拦截器、结果类型等,减少了自定义组件的需求。 - **安全性改善**:Struts2提供了更为强大的安全机制,有助于防止常见的Web攻击。 - **社区支持**:尽管WebWork/...
- **Struts1**:使用Commons-Beanutils进行类型转换,每个类一个转换器,转换器不可配置。 - **Struts2**:使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换,并且具有更高的灵活性。 #### 九、数据...
- **OGNL 支持的数据转换:**STRUTS2 的数据转换机制更加灵活,支持 OGNL 表达式,这为复杂的数据类型转换提供了更多可能性。 **8. 验证框架:** - **内置验证框架:**STRUTS2 内置了 XWork 验证框架,提供了更为...
- **基于Struts2的类型转换器**:使用框架内置的类型转换器。 - **使用OGNL语言来转换类型**:通过OGNL表达式来定义复杂的类型转换逻辑。 **4.2 拦截器应用** - **拦截器的实现原理**:拦截器是一种在Action执行...
- **验证与转换(Validation & Conversion)**:Struts2提供了一套完整的验证和转换机制,可以在提交表单之前对用户输入的数据进行校验和格式化。 #### 六、总结 Struts2不仅解决了Struts1.x中存在的诸多问题,还...