javarestful上传文件
A. java中怎样把后台的值传到前台 例如:
以微信小程序为例,java后台与微信小程序前台页面,主要是通过restful接口进行交互,详细步骤:
1、之前已经探讨了如何快速创建springboot的项目,可以参考下面的地址,主要是修改pom.xml文件,之前引用了spring-boot-starter,这里因为是要创建restFul接口,所以需要引用spring-boot-starter-web。
B. 如何在Java中 提供 RESTful Web 服务
通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(如,GET、POST、PUT或DELETE)来操作一个或多个资源。通常,GET是用于获取或列出一个或多个资源,POST用于创建,PUT用于更新或替换,而DELETE则用于删除资源。
例如,GET http //host/context/employees/12345将获取ID为12345的员工的表示。这个响应表示可以是包含详细的员工信息的XML或ATOM,或者是具有更好UI的JSP/HTML页面。您看到哪种表示方式取决于服务器端实现和您的客户端请求的MIME类型。
RESTful Web Service是一个使用HTTP和REST原理实现的Web Service。通常,一个RESTful Web Service将定义基本资源URI、它所支持的表示/响应MIME,以及它所支持的操作。
本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。
本文假定您是熟悉REST基本知识的。
Spring 3的REST支持
在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和Jersey。Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。
Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。
Spring REST支持的主要特性包括:
注释,如@RequestMapping 和 @PathVariable,支持资源标识和URL映射
支持为不同的MIME/内容类型使用不同的表示方式
使用相似的编程模型无缝地整合到原始的 MVC 层
创建一个示例RESTful Web Service
本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,本文还使用一些代码片断来帮助理解这些概念。
Hello World:使用Spring 3 REST支持
要创建这个例子所使用的开发环境,您需要:
IDE:Eclipse IDE for JEE (v3.4+)
Java SE5 以上
Web 容器:Apache Tomcat 6.0(Jetty或其他容器也可)
Spring 3框架(v3.0.3是本文编写时的最新版本)
其他程序库:JAXB 2、JSTL、commons-logging
在 Eclipse 中创建一个Web应用,然后设置Tomcat 6作为它的运行环境。然后,您需要设置web.xml文件来激活Spring
WebApplicationContext。这个例子将Spring bean配置分成两个文件:rest-servlet.xml 包含与MVC/REST有关的配置,rest-context.xml包含服务级别的配置(如数据源 beans)。清单 1 显示了web.xml中的Spring配置的部分。
清单 1. 在web.xml中激活Spring WebApplicationContext
以下是引用片段:
contextConfigLocation
/WEB-INF/rest-context.xml
<!-- This listener will load other application context file in addition to
rest-servlet.xml -->
org.springframework.web.context.ContextLoaderListener
rest
org.springframework.web.servlet.DispatcherServlet
1
rest
/service/*
在rest-servlet.xml文件中创建Spring MVC的相关配置(Controller、View、View Resolver)。清单 2 显示了其中最重要的部分。
清单 2. 在rest-servlet.xml文件中创建Spring MVC配置
以下是引用片段:
<bean class="org.springframework.web.servlet.mvc.annotation
." />
<bean class="org.springframework.web.servlet.mvc.annotation
." />
<bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
dw.spring3.rest.bean.Employee
dw.spring3.rest.bean.EmployeeList
<bean id="employees" class=
"org.springframework.web.servlet.view.xml.MarshallingView">
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.BeanNameViewResolver" />
上面的代码中:
Component-scan启用对带有Spring注释的类进行自动扫描,在实践中,它将检查控制器类中所定义的@Controller注释。
和使用@ReqeustMapping注释的类或函数的beans由Spring处理这个注释将在下一节进行详细介绍。
Jaxb2Mashaller定义使用JAXB 2进行对象XML映射(OXM)的编组器(marshaller)和解组器(unmarshaller )
MashallingView定义一个使用Jaxb2Mashaller的XML表示view
BeanNameViewResolver使用用户指定的bean名称定义一个视图解析器
本例将使用名为“employees”的MarshallingView。
这样就完成了Spring的相关配置。下一步是编写一个控制器来处理用户请求。清单3显示的是控制器类。
C. springmvc使用restful怎么传递到后台
HttpRequestServlet 接收前台传值
[java] view plain
@RequestMapping("/go5")
public String hello5(HttpServletRequest request){
String name=request.getParameter("uname");
String id=request.getParameter("uid");
System.out.println(id+"----"+name);
return "/WEB-INF/jsp/index.jsp";
}
直接接收前台传值
[java] view plain
//接收单个参数
@RequestMapping("/hello")
public String hello(String name){
System.out.println(name);
return "/WEB-INF/jsp/index.jsp";
}
D. restful api上传文件
不太清楚你写这个借口的目的是什么,一般我们做上传都是前端通过控件上传后得到路径,然后调用一个方法将路径保存就可以了。你这个借口的目的是什么?
先调用接口获得路径是保存路径不一样的情况才这样做的。如果上传的路径是一样的就没有那个必要再去调用一次了
E. spring mvc restful能上传多大文件
SpringMVC本身对Restful支持非常好。它的@RequestMapping、@RequestParam、@PathVariable、@ResponseBody注解很好的支持了REST。18.2CreatingRESTfulservices1.@RequestMappingSpringusesthe@.类似于struts的action-mapping。可以指定POST或者GET。2.@PathVariableThe@.用于抽取URL中的信息作为参数。(注意,不包括请求字符串,那是@RequestParam做的事情。)@RequestMapping("/owners/{ownerId}",method=RequestMethod.GET)publicStringfindOwner(@PathVariableStringownerId,Modelmodel){//}如果变量名与pathVariable名不一致,那么需要指定:@RequestMapping("/owners/{ownerId}",method=RequestMethod.GET)publicStringfindOwner(@PathVariable("ownerId")StringtheOwner,Modelmodel){//implementationomitted}@,long,.3.@RequestParam官方文档居然没有对这个注解进行说明,估计是遗漏了(真不应该啊)。这个注解跟@PathVariable功能差不多,只是参数值的来源不一样而已。它的取值来源是请求参数(querystring或者post表单字段)。对了,因为它的来源可以是POST字段,所以它支持更丰富和复杂的类型信息。比如文件对象:@RequestMapping("/imageUpload")(@RequestParam("name")Stringname,@RequestParam("description")Stringdescription,@RequestParam("image")MultipartFileimage)throwsIOException{this.imageDatabase.storeImage(name,image.getInputStream(),(int)image.getSize(),description);return"redirect:imageList";}还可以设置defaultValue:@RequestMapping("/imageUpload")(@RequestParam(value="name",defaultValue="arganzheng")Stringname,@RequestParam("description")Stringdescription,@RequestParam("image")MultipartFileimage)throwsIOException{this.imageDatabase.storeImage(name,image.getInputStream(),(int)image.getSize(),description);return"redirect:imageList";}4.@RequestBody和@ResponseBody这两个注解其实用到了Spring的一个非常灵活的设计——HttpMessageConverter18.3.2HTTPMessageConversion与@RequestParam不同,@RequestBody和@ResponseBody是针对整个HTTP请求或者返回消息的。前者只是针对HTTP请求消息中的一个name=value键值对(名称很贴切)。HtppMessageConverter负责将HTTP请求消息(HTTPrequestmessage)转化为对象,或者将对象转化为HTTP响应体(HTTPresponsebody)。{//.booleansupports(Classclazz);//.ListgetSupportedMediaTypes();//,andreturnsit.Tread(Classclazz,HttpInputMessageinputMessage)throwsIOException,;//.voidwrite(Tt,)throwsIOException,;}SpringMVC对HttpMessageConverter有多种默认实现,基本上不需要自己再自定义--convertsformdatato/--convertto/fromajavax.xml.transform.-convertto/-convertto/fromJSONusingJackson'sObjectMapperetc然而对于RESTful应用,用的最多的当然是。但是不是默认的HttpMessageConverter:lementsHandlerAdapter,Ordered,BeanFactoryAware{(){//(false);//SeeSPR-=newStringHttpMessageConverter();stringHttpMessageConverter.setWriteAcceptCharset(false);this.messageConverters=newHttpMessageConverter[]{(),stringHttpMessageConverter,newSourceHttpMessageConverter(),()};}}如上:默认的HttpMessageConverter是ByteArrayHttpMessageConverter、stringHttpMessageConverter、SourceHttpMessageConverter和转换器。所以需要配置一下:text/plain;charset=GBK配置好了之后,就可以享受@Requestbody和@ResponseBody对JONS转换的便利之处了:@RequestMapping(value="api",method=RequestMethod.POST)@(@RequestBodyApiapi,@RequestParam(value="afterApiId",required=false)IntegerafterApiId){Integerid=apiMetadataService.addApi(api);returnid>0;}@RequestMapping(value="api/{apiId}",method=RequestMethod.GET)@ResponseBodypublicApigetApi(@PathVariable("apiId")intapiId){returnapiMetadataService.getApi(apiId,Version.primary);}一般情况下我们是不需要自定义HttpMessageConverter,不过对于Restful应用,有时候我们需要返回jsonp数据:packageme.arganzheng.study.springmvc.util;importjava.io.IOException;importjava.io.PrintStream;importorg.codehaus.jackson.map.ObjectMapper;importorg.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;importorg.springframework.http.HttpOutputMessage;importorg.springframework.http.converter.;importorg.springframework.http.converter.json.;importorg.springframework.web.context.request.RequestAttributes;importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;{(){ObjectMapperobjectMapper=newObjectMapper();objectMapper.setSerializationConfig(objectMapper.getSerializationConfig().withSerializationInclusion(Inclusion.NON_NULL));setObjectMapper(objectMapper);}@(Objecto,)throwsIOException,{StringjsonpCallback=null;RequestAttributesreqAttrs=RequestContextHolder.currentRequestAttributes();if(){jsonpCallback=((ServletRequestAttributes)reqAttrs).getRequest().getParameter("jsonpCallback");}if(jsonpCallback!=null){newPrintStream(outputMessage.getBody()).print(jsonpCallback+"(");}super.writeInternal(o,outputMessage);if(jsonpCallback!=null){newPrintStream(outputMessage.getBody()).println(");");}}}
F. java做的restful通过(API key或者token)认证方式的代码是怎样的最好能提供例子,坐等高手回答,急急急!
你提供一个n位的字符串,让客户调用的时候传递过去,让人的服务器验证是否你提供的。——当然这个字串是有算法的,不是随便写的。
G. 如何用java写restful接口
一个好的RESTfulAPI,应该具备以下特征:这个API应该是对浏览器友好的,能够很好地融入Web,而不是与Web格格不入。1.浏览器是最常见和最通用的REST客户端。好的RESTfulAPI应该能够使用浏览器+HTML完成所有的测试(不需要使用编程语言)。
H. 如何在Java客户端调用RESTful服务
如何在Java客户端调用RESTful服务
public static void main(String[] args) {
Store store = new Store();// 准备参数
// 首先创建一个webservice客户端,参数依次为:webservice的url, webservice的名称, webservice的方法, 参数列表, 返回类型, 泛型的类型(不需要泛型就传入null)
WebserviceClient client = new WebserviceClient(", "store", "find", new Object[] { store }, List.class, Store.class);
List<Store> list = client.execute();// 调用webservice
System.out.println("从服务器返回" + list.size() + "个商品");// 得到了服务端返回的数据
}
把里边链接和参数换掉