深圳企业网站制作公司哪家好,山东省城乡住房和建设厅网站首页,新开传奇,优建网站restletRestlet是用于Java平台的轻量级#xff0c;全面的开源REST框架。 Restlet适用于服务器和客户端Web应用程序。 它支持主要的Internet传输#xff0c;数据格式和服务描述标准#xff0c;例如HTTP和HTTPS#xff0c;SMTP#xff0c;XML#xff0c;JSON#xff0c;At… restlet Restlet是用于Java平台的轻量级全面的开源REST框架。 Restlet适用于服务器和客户端Web应用程序。 它支持主要的Internet传输数据格式和服务描述标准例如HTTP和HTTPSSMTPXMLJSONAtom和WADL。 客户端库的GWT端口也可用。 参考http//en.wikipedia.org/wiki/Restlet 你好世界的例子 项目结构 RestletApplication.java package com.restlet.demo.application;import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;import com.restlet.demo.resource.HelloWorldResource;public class RestletApplication extends Application{ public synchronized Restlet createInboundRoot() {Router router new Router(getContext());router.attach(/helloWorld,HelloWorldResource.class );return router;}
} ResponseParseFactory.java package com.restlet.demo.core;import java.util.LinkedHashMap;import org.apache.log4j.Logger;
import org.json.simple.JSONValue;public class ResponseParseFactory {static Logger logger Logger.getLogger(ResponseParseFactory.class);SuppressWarnings({ rawtypes, unchecked })public String getFailureJsonString(String msg){String jsonString ;LinkedHashMap list new LinkedHashMap();list.put(response_status, false);list.put(result, msg);jsonString JSONValue.toJSONString(list);logger.info(jsonString);return jsonString;}SuppressWarnings({ rawtypes, unchecked })public String getSuccessJsonString(String msg){String jsonString ;LinkedHashMap list new LinkedHashMap();list.put(response_status,true);list.put(result, msg);jsonString JSONValue.toJSONString(list);logger.info(jsonString);return jsonString;}
} BaseResource.java package com.restlet.demo.resource;import java.util.HashMap;
import java.util.Map;import org.apache.log4j.Logger;
import org.json.JSONObject;
import org.json.simple.parser.JSONParser;
import org.restlet.data.Form;
import org.restlet.data.MediaType;
import org.restlet.data.Parameter;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;import com.restlet.demo.core.ResponseParseFactory;public abstract class BaseResource extends ServerResource{protected ResponseParseFactory parseFactory null;protected Logger logger Logger.getLogger(BaseResource.class);String jsonString;SuppressWarnings(rawtypes)Post(json)public Representation doPost(Representation entity){Map json null;jsonString ;parseFactory new ResponseParseFactory();try {JsonRepresentation represent new JsonRepresentation(entity);JSONObject jsonobject represent.getJsonObject();JSONParser parser new JSONParser();String jsonText jsonobject.toString();json (Map) parser.parse(jsonText);jsonString processRequest(json,post);} catch (Exception e) {e.printStackTrace();jsonString parseFactory.getFailureJsonString(e.getMessage());}return new StringRepresentation(jsonString, MediaType.APPLICATION_JSON);}SuppressWarnings(rawtypes)Getpublic Representation doGet(){Map json null;parseFactory new ResponseParseFactory();jsonString ;try {json getMapFromParam(getRequest().getResourceRef().getQueryAsForm());parseFactory new ResponseParseFactory();jsonString processRequest(json,get);} catch (Exception e) {e.printStackTrace();jsonString parseFactory.getFailureJsonString(e.getMessage());}return new StringRepresentation(jsonString, MediaType.APPLICATION_JSON);}public abstract String processRequest(Map json,String method);public static MapString, String getMapFromParam(Form form) {MapString, String map new HashMapString, String();for (Parameter parameter : form) {map.put(parameter.getName(), parameter.getValue());}return map;}} HelloWorldResource.java package com.restlet.demo.resource;import java.util.Map;import com.restlet.demo.core.ResponseParseFactory;public class HelloWorldResource extends BaseResource {public String processRequest(Map json, String method) {String returnString ;returnString new ResponseParseFactory().getSuccessJsonString(Hello json.get(user));return returnString;}
} log4j.properties # -----------------------------
# Appender to write to console.
# -----------------------------
log4j.appender.CONSOLEorg.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.TargetSystem.out
log4j.appender.CONSOLE.layoutorg.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern%-4r [%t] %-5p %c %x - %m%n
log4j.appender.CONSOLE.file ${catalina.base}/logs/regularLogging.log
log4j.appender.CONSOLE.MaxFileSize100KB# ---------------------------------------------
# Appender to write to application log.
# ---------------------------------------------
log4j.appender.APPLICATIONLOGorg.apache.log4j.DailyRollingFileAppender
log4j.appender.APPLICATIONLOG.File${catalina.base}/logs/restlet-demo.log
log4j.appender.APPLICATIONLOG.DatePattern.yyyy-MM-dd
#log4j.appender.APPLICATIONLOG.File/home/devphp/public_html/restletframework/logs/APPLICATION-LOG.log
log4j.appender.APPLICATIONLOG.EncodingUTF-8
log4j.appender.APPLICATIONLOG.layoutorg.apache.log4j.PatternLayout
log4j.appender.APPLICATIONLOG.layout.ConversionPattern%d [%5p]: %m%n# Turn off root logging.
#log4j.rootLoggerinfo, APPLICATIONLOG
log4j.rootLoggerinfo, CONSOLE , APPLICATIONLOG web.xml ?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://java.sun.com/xml/ns/javaee xmlns:webhttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd xsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd idWebApp_ID version2.5display-nameRestletDemo/display-nameservletservlet-nameRestletServlet/servlet-nameservlet-classorg.restlet.ext.servlet.ServerServlet/servlet-classinit-paramparam-nameorg.restlet.application/param-nameparam-valuecom.restlet.demo.application.RestletApplication/param-value/init-param/servletservlet-mappingservlet-nameRestletServlet/servlet-nameurl-pattern/service/*/url-pattern/servlet-mapping
/web-app 呼叫Hello World Web服务 参考 Restlet Framework –来自Sunil Gulabani博客的JCG合作伙伴 Sunil Gulabani的Hello World示例 。 翻译自: https://www.javacodegeeks.com/2013/09/restlet-framework-hello-world-example.htmlrestlet