当前位置: 首页 > news >正文

黄石网站建设网络公司免费带后台的网站模板

黄石网站建设网络公司,免费带后台的网站模板,查降权网站,ks3c ks4c做网站input发送a.jax无论是X-Form-Urlencoded还是JSON HTTP发布到REST资源端点#xff0c;对于与日期或时间相关的数据都没有特定的“数据类型”。 大多数开发人员会将这些数据发布为“字符串”#xff0c;或者只是将它们转换为Unix时间戳值#xff08;例如1435061152#xff09… input发送a.jax 无论是X-Form-Urlencoded还是JSON HTTP发布到REST资源端点对于与日期或时间相关的数据都没有特定的“数据类型”。 大多数开发人员会将这些数据发布为“字符串”或者只是将它们转换为Unix时间戳值例如1435061152。 但是随着开发人员实现越来越多的端点方法将日期时间和时间戳字符串表示值解析为实际java.sql.Date或java.util.Date的代码将是重复的并且很无聊。 因此本文旨在说明如何在JAX-RS 2.0 REST端点方法参数中实现用于处理日期和时间相关的字符串值的自定义数据类型。 兼容性 该代码已通过Payara 4.1和Wildfly 8.2进行了测试。 对于其他其余的应用程序服务器和servlet容器需要JAX-RS 2.0库/ Java EE 7兼容性才能运行。 样品申请 为了演示这一点让我们构建一个具有JAX-RS REST资源端点的示例应用程序该端点通过FormParam参数值获取自定义数据类型对象类并将它们转换为java.sql.Date java.sql.Time java。 sql.Timestamp和java.util.Date为方便起见。 HTTP POST请求示例 假设进行了以下URL的HTTP POST使用“ SampleApplication ”作为应用程序名称因此使用上下文 http// 主机名端口 / SampleApplication / rest-api / request-handler / post-request-with-dates-and-time / 至于与此URL一起发布的HTTP参数它们是 发布参数 值字符串 SimpleDateFormat模式 自定义数据类型类名称 date_field 1948-05-15 yyyy-MM-dd RESTDateParam time_field 下午3:23 hmma RESTTimeParam timestamp_field 1979-10-11T144500 yyyy-MM-ddTHHmmss RESTTimestampParam timestamp_with_tzd_field 1979-10-11T144500 0800 yyyy-MM-ddTHHmmssZ RESTTimestampWithTZDParam 实现自定义数据类型类 解析日期字符串值并将其转换为java.sql.Date 首先让我们编写一个处理参数“ date_field ”的自定义数据类型类 该类分析日期格式为yyyy-MM-dd的日期的字符串表示形式并将其转换为java.sql.Date 。 RESTDateParam.java的代码 package com.developerscrappad;import java.text.ParseException; import java.text.SimpleDateFormat; import javax.ws.rs.WebApplicationException;public class RESTDateParam {// Declare the date format for the parsing to be correctprivate static final SimpleDateFormat df new SimpleDateFormat( yyyy-MM-dd );private java.sql.Date date;/*** This is the default constructor which must take in one string parameter.* The parameter is no other than the one passed in through the REST* end-point. Well see it later...*/public RESTDateParam( String dateStr ) throws WebApplicationException {try {date new java.sql.Date( df.parse( dateStr ).getTime() );} catch ( final ParseException ex ) {// Wrap up any expection as javax.ws.rs.WebApplicationExceptionthrow new WebApplicationException( ex );}}/*** This is a getter method which returns the parsed date string value as* java.sql.Date**/public java.sql.Date getDate() {return date;}/*** For convenience of result checking*/Overridepublic String toString() {if ( date ! null ) {return date.toString();} else {return ;}} } 代码说明 在这里我们首先为SimpleDateFormat定义适当的日期格式例如“ yyyy-MM-dd”以解析日期字符串。 一旦构造函数被调用并且在转换之后我们就可以通过getDate方法获取java.sql.Date对象。 除了java.sql.Date您可能希望结果对象为java.util.Date或java.util.Calendar这很好这在很大程度上取决于应用程序的具体情况。 在这里由于我们没有保留额外的时间和时区信息因此只需一个简单的java.sql.Date就足够了。 对于下面的其他自定义数据类型类则是如此。 解析时间字符串值带有AM / PM指示器并将其转换为java.sql.Time RESTTimeParam.java的代码 package com.developerscrappad;import java.text.ParseException; import java.text.SimpleDateFormat; import javax.ws.rs.WebApplicationException;public class RESTTimeParam {private static final SimpleDateFormat df new SimpleDateFormat( h:mma );private java.sql.Time time;public RESTTimeParam( String timeStr ) throws WebApplicationException {try {time new java.sql.Time( df.parse( timeStr ).getTime() );} catch ( final ParseException ex ) {throw new WebApplicationException( ex );}}public java.sql.Time getTime() {return time;}Overridepublic String toString() {if ( time ! null ) {return time.toString();} else {return ;}} } 解析日期和时间字符串值并将其转换为java.sql.Timestamp RESTTimestampParam.java的代码 package com.developerscrappad;import java.text.ParseException; import java.text.SimpleDateFormat; import javax.ws.rs.WebApplicationException;public class RESTTimestampParam {private static final SimpleDateFormat df new SimpleDateFormat( yyyy-MM-ddTHH:mm:ss );private java.sql.Timestamp timestamp;public RESTTimestampParam( String timestampStr ) throws WebApplicationException {try {timestamp new java.sql.Timestamp( df.parse( timestampStr ).getTime() );} catch ( final ParseException ex ) {throw new WebApplicationException( ex );}}public java.sql.Timestamp getTimestamp() {return timestamp;}Overridepublic String toString() {if ( timestamp ! null ) {return timestamp.toString();} else {return ;}} } 解析时间字符串值带有时区数据并将其转换为java.util.Date带有时区信息 RESTTimestampWithTZDParam.java的代码 package com.developerscrappad;import java.text.ParseException; import java.text.SimpleDateFormat; import javax.ws.rs.WebApplicationException;public class RESTTimestampWithTZDParam {private static final SimpleDateFormat df new SimpleDateFormat( yyyy-MM-ddTHH:mm:ssZ );private java.util.Date date;public RESTTimestampWithTZDParam( String dateTimeStr ) throws WebApplicationException {try {date new java.util.Date( df.parse( dateTimeStr ).getTime() );} catch ( final ParseException ex ) {throw new WebApplicationException( ex );}}public java.util.Date getDate() {return date;}Overridepublic String toString() {if ( date ! null ) {return date.toString();} else {return ;}} }实施REST资源端点 因此在定义了必要的自定义数据类型类以定义各种日期和时间格式之后就进行了定义。 REST资源端点方法现在将能够使用这些类来封装给定的各种数据格式。 所有要做的就是直接将其用作端点方法参数的数据类型。 例如 // ... POST Path( /path-root/path-value ) public Response methodThatHandlesPostRequest(FormParam( date_field ) RESTDateParam dateField ) {// The rest of the implementation... } // ... 让我们看一个完整的JAX-RS 2.0 REST资源端点实现示例。 RESTResource.java的代码 package com.developerscrappad;import javax.json.Json; import javax.ws.rs.FormParam; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.CacheControl; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder;Path( request-handler ) public class RESTResource {POSTPath( post-request-with-custom-param-data-type )Produces( application/json )public Response postRequestWithCustomParamDataType(FormParam( date_field ) RESTDateParam dateField, // Put the custom data type to good useFormParam( time_field ) RESTTimeParam timeField,FormParam( timestamp_field ) RESTTimestampParam timestampField,FormParam( timestamp_with_tzd_field ) RESTTimestampWithTZDParam tsWithTZDField) {// Output these data as JSON as server responseString jsonResult Json.createObjectBuilder().add( data_submitted, Json.createObjectBuilder().add( date_field, dateField.toString() ).add( time_field, timeField.toString() ).add( timestamp_field, timestampField.toString() ).add( timestamp_with_tzd_field, tsWithTZDField.toString() )).build().toString();return getNoCacheResponseBuilder( Response.Status.OK ).entity( jsonResult ).build();}/*** Say NO to result caching*/protected ResponseBuilder getNoCacheResponseBuilder( Response.Status status ) {CacheControl cc new CacheControl();cc.setNoCache( true );cc.setMaxAge( -1 );cc.setMustRevalidate( true );return Response.status( status ).cacheControl( cc );} } 不要忘记扩展javax.ws.rs.core.Application的启动REST Application类。 RESTApplication的代码 package com.developerscrappad;import java.util.Arrays; import java.util.HashSet; import java.util.Set; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application;ApplicationPath( rest-api ) public class RESTApplication extends Application {public SetClass? getClasses() {return new HashSetClass?( Arrays.asList( RESTResource.class ) );} }使用jQuery Ajax POST通过HTML客户端进行测试 为了测试自定义数据类型类使用jQuery编写了一个简单HTML页面该页面对端点URL执行ajax HTTP POST。 只需将下面HTML文件打包为Web应用程序的一部分以将其一起部署以进行测试。 请将其部署到适当的应用程序服务器或servlet容器中。 post-with-custom-param-data-type.html的代码 !DOCTYPE html htmlheadtitleDate, Time and Timestamp HTTP Post/title/headbodydivDate Field: input iddateField typetext value1948-05-15 / (format must be yyyy-MM-dd)/divdivTime Field: input idtimeField typetext value3:23PM / (format must be h:mma)/divdivTimestamp Field: input idtimestampField typetext value1979-10-11T14:45:00 stylewidth: 200px; / (format must be yyyy-MM-ddTHH:mm:ss)/divdivTimestamp With Time Zone Field: input idtimestampWithTZDField typetext value1979-10-11T14:45:000800 stylewidth: 200px; / (format must be yyyy-MM-ddTHH:mm:ss/-HHmm)/divdivinput typebutton valueSubmit onclickjavascript:performSubmit(); //divbr /br /div idresultJson/divscript srchttps://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js/scriptscript typetext/javascriptvar $ jQuery.noConflict();function performSubmit() {$.ajax( {url: rest-api/request-handler/post-request-with-custom-param-data-type,type: POST,data: {date_field: $.trim( $( #dateField ).val() ),time_field: $.trim( $( #timeField ).val() ),timestamp_field: $.trim( $( #timestampField ).val() ),timestamp_with_tzd_field: $.trim( $( #timestampWithTZDField ).val( ) )},success: function ( resultObj, textStatus, xhr ) {$( #resultJson ).html( h2Post Result (JSON)/h2 JSON.stringify( resultObj ) );},error: function ( xhr, textStatus, errorThrown ) {$( #resultJson ).html( Something went wrong, status xhr.status );}} );}/script/body /html结果 单击“ Submit ”按钮后HTML客户端应从REST资源端点方法路径post-request-with-custom-param-data-type接收正确的JSON响应并显示在屏幕。 发布结果 就这样。 感谢您的阅读希望对您有所帮助。 翻译自: https://www.javacodegeeks.com/2015/06/java-rest-jax-rs-2-0-how-to-handle-date-time-and-timestamp-data-types.htmlinput发送a.jax
http://www.pierceye.com/news/362189/

相关文章:

  • 免费1级做看网站制作单页网站要网址
  • 网站返回首页怎么做的好看自贡网站优化
  • 自己的网站如何做推广wordpress积分与奖励
  • 产品包装设计网站网站建设 中企动力宜昌
  • 英语营销型网站建设北京pk10网站开发
  • 交换链接适合哪些网站东莞小程序开发制作
  • 医院网站建设网站阿里巴巴网站是用什么技术做的
  • 潍坊 餐饮网站建设淘宝seo优化
  • 樟木头镇网站建设公司WordPress企业响应式主题
  • 怎么给网站做备份呢怎么去建设微信网站
  • 成都各公司网站中小企业网站建设 论文
  • 广告网站建设实训报告做电商从哪里入手
  • 建电子商务网站需要多少钱做网站的简称
  • 制定网站推广方案网络营销网站分析
  • 商城网站系网站 png逐行交错
  • 陕西网站建设陕icp备免费虚拟机安卓
  • 优化教程网站推广排名东莞网站建设推广有哪些
  • 金阳建设集团网站电子商务系统 网站建设
  • 网站建设规模哪里有做app软件开发
  • 建站工具上市手机视频网站设计
  • 代做道具网站做地方门户网站不备案可以吗
  • 电子商务 网站前台功能想做微商怎么找厂家
  • 网站建设电子书做网站引入字体
  • 顺德建设网站公司分发平台
  • 个人门户网站模板下载婚纱摄影网站定制
  • 提高网站流量的软文案例手机腾讯网
  • 网站只做内容 不做外链深圳宝安区天气
  • 生物网站 template淘宝的网站建设怎么建
  • 苏州哪家做网站好些推广之家app
  • 网站开发计入管理费用哪个明细对网站建设的调研报告