1,此次文章讲述如何利用Serlvet服务端接口,给客户端ajax获取;
2,Serlvet实现服务器json数据并显示;
3,一个user类文件,一个主message类文件,一个web配置文件;
4,利用的是eclipse开发者工具
5,jar相关文件和ora.json文件网上有,可以找找,配置到web文件上以及iib文件下
一:利用Serlvet实现服务器json接口数据,简单的实现规则以及原理方法,因为做了很多android和h5之类的功能,网络获取json,读取显示,和蓝牙+wifi的android实现,只要是网络数据信息,因此离不开接口,所以,最近也看了网上很多相关资料,结合了自己所学所得,和前辈们的知识体结构,坚决的想自己独立开发出一套服务器接口;
二:Serlvet接口也并不是特别的复杂,也是最简单易上手的web服务器接口制作。相对ssm而言,应该大家都知道,stringmvc+string+mysql。复杂度需要先了解Serlvet知识,长话短说,我们先来看看类文件代码:
1,user/kapian类
public class kapian { //头像路进 public String imgurl; public String getImgurl() { return imgurl; } public void setImgurl(String imgurl) { this.imgurl = imgurl; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMoney() { return money; } public void setMoney(String money) { this.money = money; } public String getStyle() { return style; } public void setStyle(String style) { this.style = style; } public String getNum() { return num; } public void setNum(String num) { this.num = num; } public String getRevenue() { return revenue; } public void setRevenue(String revenue) { this.revenue = revenue; } public String getId() { return id; } public void setId(String id) { this.id = id; } //名字 public String name; //金额 public String money; //交易风格 public String style; //订阅人数 public String num; //收益率 public String revenue; //标记 public String id; public kapian(String imgurl,String name,String money,String style,String num,String revenue,String id){ this.imgurl=imgurl; this.name=name; this.money=money; this.style=style; this.num=num; this.revenue=revenue; this.id=id; } }
以上实现了user数据接口类,set以及get获取名称信息:
2,sever/message类文件
import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.json.JSONObject;
import org.json.JSONArray; import java.util.ArrayList;
import bean.kapian;
import java.util.List; public class message extends HttpServlet { /** * Constructor of the object. */ public message() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setContentType("text/html;charset=utf-8"); List<kapian> li = new ArrayList<kapian>(); li.add(new kapian("1.jpg","周大","2345323","三三","10234323","200%","周")); li.add(new kapian("1.jpg","唐网","123143","尔尔","1234234","190%","唐")); li.add(new kapian("1.jpg","宋解开","2345323","丰富","10234323","200%","宋")); li.add(new kapian("1.jpg","元武","2345323","Lilith","10234323","200%","元")); li.add(new kapian("1.jpg","明研","2345323","倪策三","234235","2000%","明")); try{ JSONArray json = new JSONArray(); for(kapian a :li){ JSONObject obj = new JSONObject(); obj.put("imgurl",a.getImgurl()); obj.put("name",a.getName()); obj.put("money",a.getMoney()); obj.put("style",a.getStyle()); obj.put("num",a.getNum()); obj.put("revenue",a.getRevenue()); obj.put("id",a.getId()); json.put(obj); } JSONObject js =new JSONObject(); response.getWriter().print(json.toString()); } catch(Exception e){ e.printStackTrace(); } } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here }
}
以上实现了接口信息类,这样就可以直接访问服务器地址,可以读取到相关的json数据了;
3,Filter/HeaderFilter类
import java.io.IOException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse; public class HeaderFilter implements Filter
{ public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) resp; response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错 response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间 response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1. response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0"); chain.doFilter(request, resp); } public void init(FilterConfig filterConfig) {} public void destroy() {}
}
4,web配置文件信息;
<filter> <filter-name>HeaderFilter</filter-name> <filter-class>Filter.HeaderFilter</filter-class><!--你过滤器的包 --> </filter> <filter-mapping> <filter-name>HeaderFilter</filter-name> <url-pattern>/*</url-pattern><!-- 你开放的接口前缀 --> </filter-mapping>
具体的详细代码都在这里了,可以利用外网ip地址访问到json数据,以及客户端ajax跨域请求获取到json,读取值,如果觉得哪里不懂可以评论,希望对各位有所帮助,谢谢!
5,客户端app利用跨域ajax请求获取数据:
$.ajax({ url:'http://119.23.225.64/.../message', method:'get', dataType:'json', success:function(data){ $.each(data,function(i,term){ alert(term.name); }); }, error:function(XMLHttpRequest,textStatus,errorThrown){ alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });