可用的框架有不少,我用的是jersey。
直接上代码,其实,如果你会web service 这个restful的就很好理解了,自己跑一遍就OK了
用到的类
User.java
package demo.helloworld; import javax.xml.bind.annotation.XmlRootElement; /**
* @author edi_kai
* @version 创建时间:2015-8-20 下午03:46:24
* 类说明
*/
@XmlRootElement(name="User")
public class User { private String userName;
private String sex;
private int age; public User(String userName, String sex, int age) {
super();
this.userName = userName;
this.sex = sex;
this.age = age;
} public User() {
super();
} public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
RestfulService.java
package demo.helloworld; import javax.ws.rs.Consumes;
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.MediaType; /**
* @包名 demo.RestfulService
* @文件名 RestfulService.java
* @作者 edi_kai
* @创建日期 2015年8月20日
* @版本 V 1.0
* @描述
*/
@Path("/service")
public class RestfulService{ final String XMLNS_NAMESPACE = "http://www.cnblogs.com/edi-kai/service";
final String ROOT_NODE = "root"; @GET
@Produces("application/json")
@Path("/json")
public User getJsonMessage() {
User user = new User("admin", "BeiJing", 25);
return user;
} @GET
@Produces(MediaType.APPLICATION_XML)
@Path("/xml")
public User getXmlMessage() {
User user = new User("admin", "BeiJing", 25);
return user;
} @POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/getUser")
public User getMessageByJson(User user) {
System.out.println(user.getUserName());
return user;
} }
web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>rsServlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class> <!-- 不加这个,格式转换会有问题,比如JSON/XML -->
<init-param>
<param-name>javax.ws.rs.core.Application</param-name>
<param-value>javax.ws.rs.core.Application</param-value>
</init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping>
<servlet-name>rsServlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> </web-app>
最后是调用的代码,我这里为了省事,直接在JSP里面用ajax调用的,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript"
src="<%=request.getContextPath()%>/js/jquery-1.9.1.js"></script>
<script type="text/javascript"
src="<%=request.getContextPath()%>/js/json2.js"></script>
</head>
<body>
This is my JSP page.
<br>
</body> <script type="text/javascript">
$(function(){
/*
alert(JSON.stringify(
{"productName":"Java编程思想(第4版)",
"isbn":"9787111213826",
"author":"[美]埃克尔",
"publishDate":1183270161125}
));
*/
var url = "rest/helloworld/getUser";
var url_1 = "http://10.169.217.198:5000/wa_cancel"; var param = JSON.stringify(
{"userName":"Java编程思想(第4版)",
"sex":"男",
"age":25}
);
var param_1 = JSON.stringify(
{'WithdrawID': 'APP2015062610000003',
'TranTime': '1438589070',
'Uid': '100163',
'Sign': '599ba17c1b882d0eb57c22572c12e006'}
);
$.ajax({
type : "POST",
url : url_1,
dataType : "json",
contentType : "application/json",
data : param_1,
success : function(data){
alert("以下是从服务器返回的User对象:\n\n" + JSON.stringify(data));
},
error : function(jqXHR, textStatus, errorThrown){
console.info('error: ' + textStatus+','+jqXHR+','+errorThrown);
}
});
});
</script>
</html>
可能会用到的jar包,我添加了这些,但可能有些是用不到的,注意要讲其中的asm-3.3.1.jar、jersey-bundle-1.9.1.jar、jettison-1.1.jar、jsr311-api-1.1.1.jar这四个jar包放到tomcat的lib目录下才可以
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAAEuCAIAAADHlPPZAAAXP0lEQVR4nO2dT4wk113H64CEDzlECnBCyERC4cIlxEM3EvaFg3MJUgQHcyDrGcoKEeIAiWQgx2R2d3bTvQdACLEIcQHZs+sZNy2Gmd01HIwsK9qQ3WU97kQKh9iJguOdnT/dPdNVLQ7VVf3+/N6rVz09VfXq9/3oHWbq1at61f3t6lfd9ekXRABwIqi6AwCUChIPeLFI4v/DzL179/b29pbeSwCWxYKJjyaTKJrEcRTH0XQaT6dxFE2m0/jdd9/d3d3d3dtdekcBWAqLJP6tt96aTM700E+n8dtvvz0cDnd2du7evbv0vgJwfhZJ/N27d8/OTsnQ7+7u7uzs7Ozs7O76f5rf77SDdme/6m6ApbJI4u/cuXN2Ov7KyvN/tvJzG6uf+MovPPtHn/rlL3/q09/8nS9Mp/GHH3zwvz/4QbmJ74VBQtgrXDurJ+qQ+CaySOJ3d3dPx6P997//l7/1u//8pc/+1a/9dueZlzrPvLTxzBe/9eKXkpP9zs7O0vtqYL/TnsW1F+rJza0NgnYYtk2vBtA0Fkn8zs7OeDR85ZUvf/jjn9x+9Q/feemf3nnx7955/m/+67kbV37x86UnXqAX2k7Kxtr9DhLPhkUS3+/3R8Phe+9//6tfe/U3fuVnfzUIsvLKCy8kY/p+v0+03O+0A3WEoS3rhUG705stDXvzUUnuCGPBwJsSLy4mep5U90KXnoHasEjie73e8OQkOcf/6T/+w+/9/cPP//V/P9+9/9kr7/78F/48jiZxHPV6VILCNBnZCIMIm5ChJOtJveVEvC+8PIrWWjY9X0z1fLZdvDd4xiKJ397eHh4fv7f/va9+7dVnf/3TwS99Lisv/P4fR9Ekiibb29tkW+qMrpwkxXMx+Xd2JaqeWnuh7XRrrnU4xxM9x1jISxZJ/K1bt06Ojr7xjW9++OOf/Mnrr3zx3t9+7t+vfebf1j/5r1//mbCdfGp569YttVlylZhETk1LEqcs0PbEW1hsXJOXeLrnSLyXLJL4zc3N48PDk6Ojb3W6z/7mJz/xmSArL/7B88lH9Zubm2ozIW/7nXY2qulIw+KocOLnH8YIHydmf9lr55tQTuZpW61H854j8X6ySOJv3rx5dHiYhP7k+Hh4cjw6ORkNh+PR6HQ8Pjsdn52d3rx5U2s3HxeInwdmYxRhQbFzvOGqUjgpG2uFymwNPfF0z5F4L1kk8Tdu3Dh6+vTo8Gka+iM59KOz0/GNGzeW3teyQaSbyCKJX19fPzw4yEJ/TIV+fX196X0tGXzl2kgWSfxfuLH0vpbHbKSFE3wDgRECeIHEA14g8YAXSDzgBRIPeAGzG/ACZjfgBcxuwIsSze7C32Ey+Za/F5Z8lLy/TC7R7EbiaayJN1nnkXR7G31LqaabCVVIfBHKMruZJ95unQueOnFTaS/MljB5FJ2ps9nN5Lmyj2oMD4KU8v1O23LOtteyo0SzO0eUjsRb5ZX700WnlGo6bygvbHc6uVa4slPT1nSPW2+o4Wqynz/x9oGRXMnbWC/R7M4RpXUNNW0g1hhM8HlDeYOCvEE+e/pOTVtTPG4xcabAuZvsxRMvuFi2sT455OFtrJdodttFadMzEyq/q6SZ4GpD0h7M3tllK1zfqXFrcu/FtwFpc+pJ381kF6uUWvP5W1i9E9JnY+pHqbgb6yWb3WZR2pD4oN2mTs+CCU5kVDfEDWNZp8TP/UAp8bnv+AVM9uLnePUw6IGP+ZKYr7FeotmdI0qLT1CvI47jxXdw2gSXxyHzcXZe4omdmram5ECKUy80fJriarI7J54ansl9pN11qZa3sV6i2Z0jSouL9Yd+/ltNmgkeRdIgwzTUtvwemd7QdOVKNjTlw91kN386GchdoZx0eQglD6/EVWCsR1FUqtnd8EfSH3g/EeWZ3by/6asRzJ+I8szuBn/g5Q0w1mGEAG4g8YAXSDzgBRIPeIHEA17A7Aa8gNkNeAGzG/CCt9nt79eP/va8anib3eXkBnZ2nYDZfaHAzq4dMLtLAHZ2jeBtdlu7pKqk6f3povWcf5O8uhsB2NlVwNvszulSmknZMlJzlf+Awc6uEbzN7hzHWd8d4f5pmrb+pgI7u0bwNrtzHOcoL/FaZ2hgZ9cI3mZ3Tpdmi4UxkXpq1TpDAju7RvA2u61dEl5JWZbUJFGdUXcgAju7cnib3TXskiP+9rxqWJvdNeySI/72vHK4mt3+Os7+9rwewAgBvEDiAS+QeMALJB7wAokHvIDZDXgBsxvwAmY34AVvs9t77POLXAD+f9nL2+z2HmviYZRTwOz2GuuMOjDKKWB2e81SZj/mZZTzNruTdXqzLYp331tmZJW8aafl+qHJK5Odo45TW7aUxPMyynmb3ZHw3Mydk4LedP5yxU0RX7mmsGG+74uCt9ktrWP6O9eblkJMLFdtJsoqp5Rw6oyunDx7mO+7KLzN7tzEO3nTDokndm4Nh9E0l499sXO8+gjwMsp5m925iTd70/Jo1r5cyk86wbc1HOR+Md/3MuBtduePaszedKj3w7TccpFneozph0g7duunkwLpiQNGOXOze0FMR9KcIzTi/yGyNrsXhW/iG/AkcjW7zwXLxDfFKIcRAniBxANeIPGAF/mJP5tE7/1o8p/fm+w8RkHxvuQn/sEPJ49/FB2N4yieoqD4XvITv7c/OZ1MzyZxVuxm9+7eHXFlFJRalfzE7zyeRPH0dBJnJdfs3tnbE9dHQalPcUr8JJIS72J27925V/mxoaDoxSnxZ9F0fBZnxdHsFpuMz+Lx424raF9/HKvLjWVwvR2svem+vuel8OODskhxTfzoLM6Ko9ktNhmdxaPH3VbQvvY4Vpcby+BaO1h70339EsubYRAY+va420rvsCIOdl6rNS/8+KAsUlwTPzyNs+JodotNFiqDjVawun3OjSy9DDZaQdAKV+m+9VeDdPl2GLS6D5XabMnjbisIt6o/HHbFKfGnk+nJaZwVR7NbbLJQmSX+3Nu5iGLo23YYtLoP5uu0Nx5btmCpRbmo4pT48WR6PI6z4mh2i02Ox/Hx/3RXgvD2/O8Zq9vZOv3VdOHK9cHxeHC1ldYm66/1j8fxg+vzW81vaw3lhe2r10Nhg7FSHlxvZ+vfXpttX+uG2up4HEt9E0uSePs68+5lXXV5fJKt9VeDQNgFSuHilPjR2fRoFGfF0ewWmxyN4qNH3ZUgvD2Kj0aDq2vd7yYLt8JgtrD/chCsXBsITQZXW8HLW8k67auPlI1kRW4obzBY66et0i3I5fZasHJtcLQVBq2kS3o3yJL2jTjGdPlWGATUOuJ+Czw+g6utIFCPHaVwcU384SjOiqPZLTY5HMWHj7orQbiZ/vuda/NT9eYoPtwKg1b3O1KTwZVW8PJaGAitDpMcB+0rj9IlasPBlVbw8layZrba4Eor+TtpLm5B3iDRDb2JuBetbKUOUat7ZU1sMi+ba0Gw1i/2+Fj2iFKkOCV+eDZ9Ooyz4mh2i02eDuOnD7srQbg5+yNY2RhIC5OoSU0Gl1tB0GqvBO3LD+VNJVXJcrXh4HIrWb9/ad4wW6iX/qUg3RTdDbIMLreCS1v2dfqXkkOTy+ZqEKz2ifXtj4/THlHyi1PiT06nB8M4K45mt9jkYBgfPOyuBOHrw/hgKwxa3fvD+GAY399oB8nCYf9SEFzaSlbuX94YHKTP8cHD7kpW9bB7ebZOWjvsXwqClY3BbC/zjc8Sn66c/S2V11eDlY3B/Y220ErpBtFK2Ht2aOr2ky3LtYPLLaGrStucx0feI8qixTXxT07irDia3WKTJyfxkwfd54LwtZP4yclgPf1Q+rnVMF2YrDB7H89Wu/RG0jw5E4evncSvZdeVq/1040mt2DZZ2F5/kPw9WG9lf8/La6tB0Orez7qUbFDthlLmnU+49EbSJNm+cGgbA+HA2+sP4idvqNL0+gOhNufxER8NlMWLU+KPx9OPT+KsOJrdYpOPT+KP02dUXY6Cx6fE4pr4nx7HWXE0u8UmPz2Ov321Hax0vy0vRMHjU3JxSvzRePrRcZwVR7NbbPLRcRwE4b/IS1Bm5fZMmsbjU0JxSvzhePp/RzEKSgNKfuLvvT/5+GT60XH1fUVBOX/JT/yjDyaPPowORtNDFBT/S37iT8+i7/5wsrdfvZOLgnL+gl/vALzAnN2AF5izG/ACc3YDXjCbs/sifg26Ab8wzQlmc3Zb+kBPuClgmhYPifcKzNmdYJ+oOpnmyzQFNvAJzNlN7tc4pzAS7zt1mbNbnVU3narLMAW2vmVlHUNbp9DaphMzjGr8nsaaFfWZszudX0+ecJGaAlvbrvu02g6Jp2dflQ+gyHF5MI01K2ozZ3cUaXNSmyYKdpne2tB2vpic5Nr8siK26XhcGAvVi9rM2R1FzonXN+s8rXbetMHWbOYl3ttprFlRnzm7Z4uFz/pMU2DLFJpW2xg/60TV6gHItf5PY82KuszZLUw1n6XFPAW2tl1la8a2pvjZJ6q2T4Ht/zTWrGjqnN0l7gyR9oqmztldXgzxlatfNHXO7lIS35RprFkBIwTwAokHvEDiAS+QeMALJB7wAmY34AXMbsALmN2AF3U2u5fCsr+Kmt8uZhJHygVf+Rakzmb3UqhT4k1ueCTdhEY/RPDKl0Sdze6lUJPE291w3QRzbwuKUWezeynUJPHWzkgph1d+sVRkdgs3pIsShWhAm7VA4gb2WSURFQfFW1IB251OqA0v5NvnicTrh0PimHgy2fDKl0MlZrf4DMvOnE3doFoJywynXAfFW5Ff5yJHsmlJBhTMlWyH5OGQ2MRF4YccFks8vHInqjC7VeFIVYmiKFvJeJ5N67K0ifkTz7YOwqvxpSjvIeuGknhjx/STvvn1IKzeCYuMauCVF6QKs9s2/CAWqtnW1pjZseYPQS488a4DBpf8LfprOfDK3ajC7FbHCdRzs9/pqHkkWyXJDEP6ai+yKt66QE4lXtqvGCvpXYXomKEzhBsuIP9aD7zy5VOJ2W25xpqvTvwWGXUxG0ljax2jHp5tTPjcj0y8fF3aoT6rMXRM6YaI5IaTn8bDK78YmmB2FxhWNA9EuiD+m928n3J85VoUv83uZLjBNO/wyhcCRgjgBRIPeIHEA14g8YAXSDzgBcxuwAuY3YAXMLsBL2pvdtfwS8Uadgk4U3uz+0LjZVGtLbVIvM/Ux+ym71i/MOy6NGTqxlIfs7vkxLvsiPdNag2lJma3YM612/O7wWW7ye56ywtJQVtnYS0VMrWv1MvsJs7xZH3aEUkFmatIpKBNcs7EQ6b2j3qa3VTiSddbCjMp0krynnbSP/c5HjK1b9TT7CYTP68yuN5iuCl5j+B8iYdM7SH1NLvpUQ3pelO/0LRo4iFTM6A+Zne6TPxBMvnKlXC9LVeuOYl3Va2JWsjUPtMEs7tsGnMgLPHf7C6dxhwIT/w2u8sGMrX/wAgBvEDiAS+QeMALJB7wAokHvIDZDXgBsxvwAmY34EXtze6SKb+TXjwsDaK2Znd2i5j8BSdpW9sF7ULYO7mYCW6vReLLpT5mt8h+py3cLylKf6ptXZqCfR4THJ54jaiP2W3AKDqJeGGC45bLWlCN2W0w5QgbWvOlFkq83b8Wl+ds6QISD0+8XKowu4mnXrOh0+feLdx5Ucv1r8m5vMlNXWDi4YmXQRVmt+5om7OizVzpknhC4s7zr9N/1U4uwwS318ITL5cqzG7hf8Nc8iLKuKb4Od7Jv9YTb9zWRSUenngpVGF2E462dqITh7HnvHI1+9fy+Ln4qMbRBLfXwhMvl2rM7twLRov5LYvc5EJix7R/rc/lbQzYOUxweOJ1gq3ZXZve1KYjTGBrdtclaDV7WJoPW7O7BomHJ14FMEIAL5B4wAskHvACiQe8QOIBL2B2A17A7Aa8gNkNeFGi2b1MqIl1IGUDB0o0u5dJ0cQbPHG1lmpO3dTmsEdQU+ppdpOI9wXQk6eZG+qeuLTZ+fxRanUv1OfhBD5Te7N7zsKJF9DbSTnOVTpwRveeEs1u41Tayvzd5EJxUu/Ovrwp9zvJiRdKL1R8Qeuv1cjbh5TtISWa3fRU2uT83bmTelObsiTe6IkThqzlUkCtgpTtISWa3eSkk+T83fmTelObypGy0wplmds5nroAgJTtJSWa3abE6xHLn9TbnngL2qalBfQm6LhHytsPpGw/KNHspicWJufvzp3Uu0jiSU9c/mv+UQ5VSw1mIGX7Solmt2kqbfIDb4vanV25Op/jDVeVege0WnV8le0IUravlGh2Nw9E2kPKM7ubB75y9ZHyzO5GASnbW2CEAF4g8YAXSDzgBRIPeIHEA17A7Aa8gNkNeAGzG/Cihma3Jl64g29BQR41NLuReHCB1NDsPkfiAcijhmY3Eg8ukPLMbnFyPdUFlW7LEhJP15J6eLY+VGtgo0yzO/U45joHKURniTfV6np4ClRrkEeZZndEzdatn4ulUQ1VS4lU87WhWgMbZZrdkZp4WohOE2+sdUg8VGtgoEyze5ZW8rdqhFF+mnhjLWm4QrUGTpRndgu/FZOFkBSihXE8XeuQeKjWwECzzG5EGuTRKLMbX7mCXJpidkO1Bm7ACAG8QOIBL5B4wAskHvACiQe8gNkNeAGzG/ACZjfgRQ3NbhHpHptGfb2E74crooZmt0gNEm+Zs1teh8qveTZwJL4iamh2i1SeeJc5u/c77XabyK99NnBQDTU0u0UqT7wIPWd3stQ626v6D6iQas3uXhi0Oz1heuGeomwriZ9PRCbPwaoNHZyVcJcxi7AjbR3LLJ32mWIhoVdEtWa38IwmuVVP6IodIk7ZTQoiqfPnqIQXOfNSk8zSMqJaRzaHhF4R1ZrdYgzIv02jmvRfenbvdI18JVw3zelrTXIcbppgdt7G8RwPCb1EKjW7l5J4/U2/sBKe5M04ejBcdgopDeS46gekJxgSekVUanYXTLw87jXP7l1ECe9I42a9y9Y5u7VDk2uts4FDQq+Ias3uguf4kLpwNVz2zYYmdiVcHBaR+bLP2S2vqCVe7Ig2Gzgk9IpoltntEYh0RTTK7PYIfOVaFU0xuz0CEnqlwAgBvEDiAS+QeMALJB7wAokHvIDZDXgBsxvwAmY34IUvZrfjyvgaMw/2X/b6YnY7rtyg5zLHzjI741IteVN/gx6l4vhidjuu3Jjn0m6U253x/U5bsSvBHF/MbseVG5N4EfskntabMJv6kJwDX8xu8k1ecbold1tIga5+5+7XUfkmt6wLUbqmTdnoRrSXvd0nlFfEtOYKnpjdxIlMMEyEJaq7TavfufslbWv9aIgOzJcYNW2yS0YKO+PRPMoGV5G1Ue6L2a0p2LRKrVlOtPqdu9/ZJuQzoHyxqHfAKG/LETV2iTjp0y+3Iud4+8uFoVHui9mdICjY7okn4pC3X9q2Nm+DXpKNv7XEuw0YbO8uFmfc3kv2RrknZjehYIt56HXUdEu/z6Gq37n7pW1r/Wj0DsijGvpFQ3ZJwW6U5znjmlULozzDF7ObUrBVb5p2t6nrs9z9kra1hi5u265cyYaGTeca5RZn3HhFCqM8imB2s6P5kc4BZjcv2H/lCrObDzDKoyiCEQK4gcQDXiDxgBdIPOAFEg94AbMb8AJmN+AFzG7AiyaZ3ZWCLzM9oUlmd5Gtmr57dLvHy2BaIPEe0CSz24XkrnDT/ZD5PrX1XkrgAU0yu91xuYFQ86kLtAX1pUlmt2Uh0Ze81JpebIa27I1pX/Da7KaVbYdELeJT57Rlb0z7gs9mt64J0fKrfsbPSbxRMLW0ZW9M+0KTzG53adqWP2vczW3ZG9O+0AyzW1S2FduaRD8hK/6zsq75/QHGtG80w+wmxxPG606RsCekNsentrZlb0z7AszuJYFIewLM7uWAr1x9AWb3uYEx7RUwQgAvkHjACyQe8AKJB7xA4gEvkHjACyQe8AKJB7xA4gEvkHjAi/8HHnSgZZi8qmUAAAAASUVORK5CYII=" alt="" />
最后附上jar包的下载地址jar.zip