jersey作为图片服务器

jersey 是基于Java的一个轻量级RESTful风格的Web Services框架。

jersey原本以为是一个web容器和tomcat一类,看后发现不是,他是webservice的的一个框架(远程调用的框架),jersey来发送图片到另一个服务器,他要做的就是通过java代码来把图片发送到另一个服务器(底层使用webservice);其他能实现发送图片到另一个服务器技术,还有ftp(依赖common-net包),但是我觉得比较复杂,没有jersey方便。我们的图片服务器可以使用nginx。也可以使用tomcat(对于静态资源性能没有nginx高),还要注意的是使用tomcat需要配置tomcat的写功能,默认是关闭的,我们需要在tomcat的web.xml中配置init-param如下代码:

<servlet>
<servlet-name>default</servlet-name>        
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
		<init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>


我们使用了jersey上传图片到另一台服务器上,而没有使用ftp,需要依赖jersey-client-1.18.1.jar,jersey-core-1.18.1.jar,commons-io-1.3.2.jar三个包,代码如下:

//上传图片
	@RequestMapping(value = "/upload/uploadPic.do")
	public void uploadPic(@RequestParam(required = false) MultipartFile pic,HttpServletResponse response){
		//扩展名
		String ext = FilenameUtils.getExtension(pic.getOriginalFilename());
		
		//图片名称生成策略
		DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		//图片名称一部分
		String format = df.format(new Date());
		
		//随机三位数
		Random r = new Random();
		// n 1000   0-999   99
		for(int i=0 ; i<3 ;i++){
			format += r.nextInt(10);
		}
		
		//实例化一个Jersey
		Client client = new Client();
		//保存数据库
		String path = "upload/" + format + "." + ext;
		
		//另一台服务器的请求路径是?
		String url = Constants.IMAGE_URL  + path;
		//设置请求路径
		WebResource resource = client.resource(url);
		
		//发送开始  POST  GET   PUT
		try {
			resource.put(String.class, pic.getBytes());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//返回二个路径
        //springmvc异步返回json数据(可以使用@responsebody注解),如果没有返回值即void就不能使用注解了,可以使用专门用来拼接字符串JSONObject(底层是map)
		JSONObject jo = new JSONObject();
		jo.put("url", url);
		jo.put("path",path);
		
		ResponseUtils.renderJson(response, jo.toString());
	}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值