Struts 类型转换之局部和全局配置
我们碰到过很多情况,就是时间日期常常会出现错误,这是我们最头疼的事,在struts2中有一些内置转换器,也有一些需要我们自己配置。
我们为什么需要类型转换呢?
在基于HTTP协议的Web应用中 客户端请求的所有内容(表单中提交的内容等)都以文本编码的方式传输到服务器端
但服务器端的编程语言(如Java)有着丰富的数据类型 如 int boolean Date 等等
因此 当这些参数进入应用程序时 必须被转换成适合的服务器端编程语言的数据类型
在Servlet中 类型转换工作是由开发者自己完成的,例如:
String s=request.getParameter("pageIndex");
int pageIndex=Integer.parseInt(s);
类型转换的工作是必不可少的 重复性的. 如果有一个良好的类型转换机制 必将大大节省开发时间,提高开发效率。
Struts2提供了强大的类型转换功能:
内置转换器:
对于大部分的常用类型 开发人员在开发过程中不需要自己编码实现类型转换 这是因为在Struts2框架爱中可以完成大多数常用的类型转换
//由内部提供的类型转换器完成
1.String 将 int long double boolean String数组或者java.util.Date类型转换为字符串
2.boolean/Boolean 在字符串和布尔值之间转换
3.char/Character 在字符串和字符之间进行转换
4.int/Integer float/Float long/Long double/Double
5.Date 在字符串和日期只见进行转换 具体输入输出格式与当前的local有关
6.数组和集合 在字符串数组和数组对象 几何对象之间进行转换
接下来我们讲解一下自定义类型转换器:
1.0创建一个Action来继承ActionSupport
public class StudentAction extends ActionSupport {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String execute() throws Exception {
System.out.println(date);
return SUCCESS;
}
}
2.0创建一个DateAction继承StrutsTypeConverter
public class DateAction extends StrutsTypeConverter {
private static final List<SimpleDateFormat> list=new ArrayList<SimpleDateFormat>();
static {
list.add(new SimpleDateFormat("yyyy/MM/dd"));
list.add(new SimpleDateFormat("yyyy-MM-dd"));
}
public Object convertFromString(Map context, String[] values, Class toClass) {
String date=values[];
for (SimpleDateFormat item:list){
try {
return item.parse(date);
} catch (ParseException e) {
continue;
}
}
throw new TypeConversionException();
}
public String convertToString(Map map, Object o) {
System.out.println(new Date()+"============================");
return o.toString();
}
}
3.0创建StudentAction-conversion.properties
date=cn.converter.DateAction
4.0Struts.xml中的配置
<package name="default" namespace="/" extends="struts-default">
<action name="stuAction" class="cn.action2.StudentAction">
<result>/converter/success.jsp</result>
<result name="input">/converter/index.jsp</result>
</action>
</package>
5.0页面
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<title>登陆页面</title>
<body>
<s:fielderror></s:fielderror>
<s:form action="stuAction" method="POST">
<s:textfield name="date"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
success.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>成功页面</title>
</head>
<body>
欢迎你:<s:property value="date"></s:property></body>
</html>
这就是自己设置类型转换的案例。。。。。
Struts 类型转换之局部和全局配置的更多相关文章
- mybatis全局配置mybatis-config.xml
大部分时候,我们都是在Spring 里面去集成MyBatis.因为Spring 对MyBatis 的一些操作进行的封装,我们不能直接看到它的本质,所以先看下不使用容器的时候,也就是编程的方式,MyBa ...
- mybatis(二)全局配置mybatis-config.xml
转载:https://www.cnblogs.com/wuzhenzhao/p/11092526.html 大部分时候,我们都是在Spring 里面去集成MyBatis.因为Spring 对MyBat ...
- struts中的常量,action配置中的默认值
1.struts中Action的开发方式 继承ActionSupport类,这种方法实现的Action可以进行数据校验: 实现Action接口: 不继承任何类,不实现任何接口: 是否继承类或实现接口, ...
- 4、mybatis动态sql+struts2(通配符+全局配置+分页)
1.创建userinfo.sql数据库脚本 create table USERINFO ( id NUMBER not null, uname ), password ), age NUMBER ) ...
- vue入门全局配置
全局配置 Vue.config 是一个对象,包含 Vue 的全局配置.可以在启动应用之前修改下列属性: silent 类型:boolean 默认值:false 用法: Vue.config.silen ...
- API(全局配置,全局API)
全局配置 Vue.config是一个对象,包含Vue的全局配置 silent 类型:boolean 默认值:false 用法 Vue.config.silent=true 取消Vue所有的日志与警告 ...
- 009-Spring Boot全局配置跨域请求支持
1.Spring Boot 2.0以前全局配置跨域主要是继承WebMvcConfigurerAdapter @Configuration public class CorsConfig extends ...
- iview Message(全局提示)与Notice(通知提醒)全局配置方法
在使用iview 的Message与Notice组件时,可以对提示框的显示位置与显示时长进行配置. iview提供了两个配置属性.分别是: top 提示组件距离顶端的距离,单位像素. duration ...
- Keepalived的全局配置
Keepalived的全局配置 默认配置文件如下: ! Configuration File for keepalived global_defs { notification_email { aca ...
随机推荐
- [译文]casperjs的API-mouse模块
mouse类 这个类是对各种鼠标操作的抽象,比如移动,点击,双击,滚动等.它要求一个已经获得DOM属性的casper对象,能用这种方式创造一个鼠标对象: var casper = require(&q ...
- 河内塔问题(C++版)
上次,我们讲了汉诺塔,今天我们来讲一讲和汉诺塔类似的题目<河内塔问题> 题目描述 Description 一位法国数学家曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里 ...
- Python-Django编程问题汇总
OS:Windows10 64 IDE:JetBrain Python Community Edition 2017.3.4 Python:python-3.6.4 Django:V2.0.3 问题一 ...
- 调用ajax的返回值,需要再ajax之外的函数体里return,以及同步异步问题
<html> <head> <meta charset="utf-8"/> <script src="js/jquery-1.1 ...
- 语音转文字小工具开发Python
# -*- coding: utf- -*- import requests import re import os import time from aip import AipSpeech fro ...
- 【性能测试】:oracle数据库的监控方式
一,[前提]:登陆操作系统后,需要切换到SQLPLUS的命令行模式:sqlplus / as sysdba 二,[监控步骤]:开始时执行一次:SQL>exec DBMS_WORKLOAD_REP ...
- 【Three.js】模型抗锯齿处理
1.锯齿消除方法 three.js参考使用官方demo发现模型渲染有锯齿,这种情况在旋转视角时候就非常明显. 抗锯齿的方法,很简单,只需要配置render两个属性即可: renderer = new ...
- Mac下的裁剪快捷键
按[Command]+[C]复制文件,然后按[Command]+[Option]+[V]. 注意:[Command]+[X]只能剪切文字文本.
- Android AES加密工具类实现(基础回顾)
package com.powercreator.cms.util; import java.security.SecureRandom; import javax.crypto.Cipher; im ...
- IOS打开pdf文件
下了一个打开pdf的第三方,就是打开之后不能缩放.今天上午修改了下试着可以让它能够缩放,在网上查了下,要实现代理方法,写了下,可调试的时候用两个手指不起作用,以为是写的有问题,最后问了下小伙伴.我也在 ...