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);
}
});