




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类型转换的必要性:在前台Form表单中接受到服务器端的是String类型的,而服务器端往往需要的不完全是String型的,还需要int、date型以及其他的实体类型,这就涉及到Struts2的类型转换 Struts2类型转换是基于xwork中的ONGL的,自定义转换器可以继承自DefaultTypeConverter,也可以继承自StrutsTypeConverter类(继承自DefaultTypeConverter)。 自定义转换器使用方法1、 所有对象类型都需要自定义转换器,自定义转换器需继承DefaultTypeConverter类,覆盖 public Object convertValue(Map context , Object value, Class toType) 方法;2、 为已经写好的转换器注册:在action包里新建XXXAperties文件(局部配置文件),并在里边声明需要转换的Action类的成员变量(Point):变量名=转换器类,也可以用全局配置文件配置:在src目录下新建perties,里面声明:要转化的实体类=转换器类。 在传参数的过程中,出现参数类型为对象类型的时候,也可以不使用自定义转换器,但是必须满足:1、该对象类型的各个成员变量在表单中单独输入 2、实体类提供一个无参的构造方法struts2 框架据我目前所知道有以下几下几大好处:类型转换、表单验证、国际化支持、处理表示分开等,当然还有其它很多的好处,这就有待继续学习了。struts2类型转换是它的一个主要功能之一。它的流程如下图 1、struts2的一些基本例:login.jsp(新建一个JSP页面)导入struts2的标签下面添加一个表单 结果页面result.jspusername:password:新建一个LoginAction类,继承ActionSupport有成员变量以及他们的set、get方法:private String username;private String password;public String execute() throws Exception return SUCCESS;struts.xml /result.jsp 下面来分析下上面的代码,先看struts.xml中的内容。pachkage中的name属性,表示了该project。在该package中定义了一个action,name属性为login,调用class路径为com.test.action.LoginAction,即上面定义的LoginAction类。result中属性name=success表示了,当页面回一个success结果时跳至result.jsp页面。这样通过struts.xml将LoginAction类与login.jsp页面关联起来。其中login.jsp中将该表单与struts.xml中名为login的action关联。程序是如何运作的呢?当我们访问login.jsp,输入username与password,按submit提交后,程序调用LoginAction中各个set方法,讲表单中对应的值赋值给对应的成员变量,注(与页面中的同名)。(这里因为没有写自己的类型转化,所以通过struts2提供的默认的类型转化完成,下面我会做具体说明)。完成了表单的提交后,页面通过validate方法进行相关验证,该方法需要我们overwrite(比如,我们判断username不为空等等。),完成了validate之后,通过execute方法,返回一个result,如返回SUCCESS,同去struts.xml中的该action中查找对应的result进行页面的跳转,如上代码,则我们跳转至result.jsp,并且,result.jsp通过LoginAction中的get方法,获得各成员变量显示出之前我们提交的内容。2、类型转化之前提到,在set方法之前隐含了类型转化。页面提交,我们获得的所有内容都是String类型的,而在set方法中,我们要set的成员,并不一定是String类型,所以我们需要一定的类型转化。例:我们要输入一个Point(x,y),则我们需要对其进行类型转换。首先,我们在工程下新建一个Point类,成员变量int x,y;已经相对应的set,get方法。新建一个input.jsp页面 新建一个output.jsp,对输入进行输出point:age:username:date:下面是主要的类型转化类,新建一个类PointConverter继承DefaultTypeConverter重写下面的public Object convertValue(Map context, Object value, Class toType)方法具体内容:if(Point.class = toType) Point point = new Point(); String str = (String)value; String paramValues = str0.split(,); int x = Integer.parseInt(paramValues0); int y = Integer.parseInt(paramValues1); point.setX(x); point.setY(y); return point;if(String.class = toType) Point point = (Point)value; int x = point.getX(); int y = point.getY(); String result = x= + x + , y= + y + ; return result; return null;新建PointAction继承ActionSupport包扩成员变量以及相关set,get方法:private Point point;private int age;private String username;private Date date;public String execute() throws Exception return SUCCESS;struts.xml中的配置,添加一个action /output.jsp可以看到,在input.jsp的表单中,已经使用了pointConverter该action下面需要写类型转换的文件PointAperties内容:point=com.test.converter.PointConverter表示:用PointConverter对PointAction中的point进行类型转换3、对多个不同Action类中的同类型对象的转换,使用全局类型转换(上面的资源文件属于局部类型转换)全局类型转换的资源文件命名固定为:perties若,我们要对所有的Point定义的对象用PointConverter进行类型转化,则com.test.bean.Point=com.test.converter.PointConverter4、使用StrutsTypeConverter来完成上述转换(免去了两个转换方向的判断)新建PointConverter2继承StrutsTypeConverterOverridepublic Object convertFromString(Map context, String values, Class toClass) Point point = new Point(); String paramValues = values0.split(,); int x = Integer.parseInt(paramValues0); int y = Integer.parseInt(paramValues1); point.setX(x); point.setY(y); return point;Overridepublic String convertToString(Map context, Object o) Point point = (Point)o; int x = point.getX(); int y = point.getY(); String result = x = + x + , y = + y + ; return result;5、对于集合类型的转换,如private List point;新建PointConverter3继承StrutsTypeConverterOverridepublic Object convertFromString(Map context, String values, Class toClass) List list = new ArrayList(); for(String value : values) Point point = new Point(); String paramValues = value.split(,); int x = Integer.parseInt(paramValues0); int y = Integer.parseInt(paramValues1); point.setX(x); point.setY(y); list.add(point); return list;Overridepublic String convertToString(Map context, Object o) List list = (List)o; StringBuilder sb = new StringBuilder(); sb.ap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林油田第十二中学2025~2026学年度第一学期期初测试卷 九年级历史试卷(含答案)
- 2024年呼伦贝尔农垦谢尔塔拉特泥河哈达图浩特陶海农牧场招聘172人历年高频考题难、易错点模拟试题及1套完整答案详解
- 新时空科技盈利质量分析
- 2025内蒙古呼伦贝尔选聘政务服务社会监督员9人笔试备考及完整答案详解
- 教师招聘之《小学教师招聘》综合提升试卷附完整答案详解(各地真题)
- 押题宝典教师招聘之《小学教师招聘》试题及参考答案详解(预热题)
- 教师招聘之《小学教师招聘》通关考试题库附参考答案详解【突破训练】
- 解析卷北师大版9年级数学上册期末试题及完整答案详解(夺冠)
- 教师招聘之《小学教师招聘》能力检测【综合题】附答案详解
- 内蒙古呼伦贝尔农垦集团有限公司招聘笔试题库及答案详解(典优)
- 动环监控介绍铁路专用通信子系统教学湖南铁道课件
- 人工智能辅助情报分析-全面剖析
- 2022-2027年中国电力工程监理行业市场运行现状及投资规划建议报告
- 患者自杀案例分析
- 副主任护师职称述职报告
- 《电机原理与应用》课件
- DB4403-T 56-2020 住宅小区电动汽车充电设施安全管理规范
- 展会安全风险评估报告
- 《学前教育法》知识考试题库100题(含答案)
- 专题十一-新航路到工业革命
- 桩基检测施工方案
评论
0/150
提交评论