使用jersey实现应用服务器和图片服务器分离
restful: put 向指定的目录上传附加文件
delete 删除指定的资源
post
get
1> 创建一个新的apache-tomcat(img),修改端口号
2> 创建一个动态web工程(shopimg)发布到上面的tomcat上,作为图片服务器
1)WebContent下创建文件夹upload用于存放图片,创建index.jsp图片服务器初始页面
2)修改tomcat配置文件web.xml(开启restful机制)
server --> 对应tomcat --> web.xml
这里,readonly参数默认为true,相当于不允许delete和put操作
如果不配置,http会报403错误,为了rest服务,应该设置为false
3> 服务器搭建好,创建客户端进行测试(模拟应用服务器)
1)创建一个java工程,创建一个文件夹lib,导入jersey相关jar包(3个)
commons-io-1.3.2.jar
jersey-client-1.8.jar
jersey-core-1.8.jar
2)ClientTest.java:
restful: put 向指定的目录上传附加文件
delete 删除指定的资源
post
get
1> 创建一个新的apache-tomcat(img),修改端口号
2> 创建一个动态web工程(shopimg)发布到上面的tomcat上,作为图片服务器
1)WebContent下创建文件夹upload用于存放图片,创建index.jsp图片服务器初始页面
2)修改tomcat配置文件web.xml(开启restful机制)
server --> 对应tomcat --> web.xml
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
这里,readonly参数默认为true,相当于不允许delete和put操作
如果不配置,http会报403错误,为了rest服务,应该设置为false
3> 服务器搭建好,创建客户端进行测试(模拟应用服务器)
1)创建一个java工程,创建一个文件夹lib,导入jersey相关jar包(3个)
commons-io-1.3.2.jar
jersey-client-1.8.jar
jersey-core-1.8.jar
2)ClientTest.java:
package com.zy;
import java.io.File;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import org.apache.commons.io.FileUtils;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
public class ClientTest {
public static void main(String[] args) throws Exception {
// 图片名称生成策略
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String format = df.format(new Date());
// 防止同一时间上传图片,不能用时间作为区分
// 用随机数
Random r = new Random();
for (int i = 0; i < 3; i++) {
// 产生100以内的随机数
format += r.nextInt(100);
}
// 图片保存数据库路径
String path = "upload/" + format + ".jpg";
// 另外一台服务器地址
String url = "http://127.0.0.1:8898/shopimg/" + path;
// 实例化jersey
Client c = new Client();
// 设置请求路径
WebResource wr = c.resource(url);
// 找到图片地址,引入(路径加转义字符"\")
byte[] buf = FileUtils.readFileToByteArray(new File("C:\\Users\\Administrator\\Desktop\\1321668307_2.jpg"));
wr.put(String.class, buf);
System.out.println("发送成功!");
}
}