环境:JDK1.8;jetty9.2;jersey1.18
这里jersey-bundle单独下的1.19 要用到com.sun.jersey.api.core.PackagesResourceConfig这个类
在jersey2.x变动较大,暂时没搞懂;
建立java project:
还有一个问题:web.xml和jetty.xml的如何配置jetty。
JEntry为server类:
package com.ben.jersey;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import com.sun.jersey.spi.container.servlet.ServletContainer;
public class JEntry {
public static void main(String [] args){
try{
Server server =new Server(8088); //1.建立server,设置端口
ServletHolder sh = new ServletHolder(ServletContainer.class); //2.servlet
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", //3.请求处理资源
"com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages","com.ben.res");
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); //4.上下文
//项目入口、若改为"/",则为http://8080/加resource路径,而不是http://8080/jettyDemo/+resource
context.setContextPath("/jettyDemo");
//在项目入口下,添加servlet的路径,此处即处理/jettyDemo/下的resource
context.addServlet(sh, "/*"); //5.上下文添加servlet
server.setHandler(context); //6.server添加上下文
//join的作用是当前线程阻塞,当server执行完毕后启动阻塞进程
//当application较重的时侯用join,保证启动成功,这里没有也可以
server.start();
server.join();
}catch (Exception e){
}
}
}
res包为资源类:
1。获取路径
package com.ben.res;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriInfo;
@Path ("hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello( ){
return "hello wang";
}
//打印头部和路径
@Path("meihao")
@GET
@Produces("text/plain")
public String getRequestContex(
@Context HttpServletRequest request,@Context HttpHeaders httpHeaders,
@Context UriInfo uriInfo ){
StringBuilder str = new StringBuilder();
System.out.println("****** HTTP request mehod and uriinfo ******");
str.append(request.getMethod() +" YI ");
str.append(uriInfo.getPath()+" ER "+uriInfo.getBaseUri()+" SAN "
+uriInfo.getRequestUri()+" si "+uriInfo.getPath( false)+"五"+uriInfo.getAbsolutePath());
System.out.println(str.toString());
System.out.println("****** HTTP cookie and headers ******");
Map cookie = httpHeaders.getCookies();
System.out.println(cookie.toString()+"COOKIEEND");
MultivaluedMap headers = httpHeaders.getRequestHeaders();
Iterator iterator = headers.keySet().iterator();
while(iterator.hasNext()){
String headName = iterator.next();
System.out.println(headName + ":-----" + headers.get(headName) );
}
System.out.println(uriInfo.getPathParameters().getFirst("name") );
return str.toString();
}
}
package com.ben.res;
import javax.print.attribute.standard.Media;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import com.ben.user.Lover;
@Path("lover")
public class LoverRs {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getLover(@DefaultValue("1") @QueryParam("lag") String lag){
if(lag.equals("1")){
Lover lover = new Lover();
lover.setName("meihao");
lover.setAge(25);
lover.setLoverId("01");
return Response.ok(lover).build();
}else{
System.out.println(lag+"=lag");
return Response.status(Status.NOT_FOUND).build();
}
}
}
package com.ben.res;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.ben.user.Lover;
@Path("jsonRs")
public class JsonRs {
@Path("onejson")
@GET
@Produces(MediaType.APPLICATION_JSON)
// 返回一个json.不能把用户类Lover直接放入JSONObject类,必须严格按照(key,value)严格添加
public Response getJsonrs(@DefaultValue("1") @QueryParam("lag") String lag){
if(lag.equals("1")){
Lover lover = new Lover();
lover.setName("meihao");
lover.setAge(25);
lover.setLoverId("03");
JSONObject jsonData = new JSONObject();
//1.基本方式
// try {
// jsonData.put("name","meihao");
// jsonData.put("age","24");
// jsonData.put("loverId","02");
// return Response.ok(jsonData).build(); 浏览器结果为一个json对象名称
// return Response.ok(jsonData).build();
// } catch (JSONException e) {//
// e.printStackTrace();
// }
// }else{
// Response.status(Status.NOT_FOUND).build();
// }
//2.在Lover中转换返回一个json
try {
//这种方法是不行的,直接放入一个lover对象不能得到想要的格式、必须按字符串放入
// jsonData.put(lover.getLoverId(),lover);
// return Response.ok(jsonData).build(); 浏览器结果为一个json对象名称
// jsonData= lover.to
jsonData = lover.toJson();
return Response.ok(jsonData).build();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Response.status(Status.NOT_FOUND).build();
}else{
return Response.status(Status.NOT_FOUND).build();
}
}
//返回多个json,以1:json1,2:json2的格式.是用到了2个JSON,没有嵌套
@Path("2Json")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get2Json(){
JSONObject json = new JSONObject();
for(int i=1;i<=2;i++){
Lover lover =new Lover();
lover.setAge(26);
lover.setName("meihao");
lover.setLoverId("00"+i);
try {
json.put(lover.getLoverId(),lover.toJson());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(json!=null){
return Response.ok(json).build();
}
return null;
}
//返回多个json,以lover:美好,count:3,data:{count:3,lovers:3个json}的格式.属于1个JSON,下data元素嵌套3个json
@Path("moreJson")
@GET
@Produces("application/json;charset=UTF-8")
public Response getMoreJson(){
try{
List list =new ArrayList();
for(int i=1;i<=3;i++){
Lover lover =new Lover();
lover.setAge(26);
lover.setName("meihao");
lover.setLoverId("00"+i);
list.add(lover);
}
JSONArray jsonArray = new JSONArray ();
for(Lover lover:list){
jsonArray.put(lover.toJson());
}
JSONObject JsonData = new JSONObject();
JsonData.put("count",list.size());
JsonData.put("lovers",jsonArray);
JSONObject json = new JSONObject();
json.put("lover","美好");
json.put("count",list.size());
json.put("data", JsonData);
if(json!=null){
return Response.ok(json).build();
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}