精华内容
下载资源
问答
  • Servlet解析JSON数据和发送JSON数据

    万次阅读 2017-03-16 13:11:12
    package com.qst.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException;...import javax.servlet.http.HttpServletRe
    package com.jcuckoo.util;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import javax.servlet.http.HttpServletRequest;
    import net.sf.json.JSONObject;
    
    public class JsonReader {
    	public static JSONObject receivePost(HttpServletRequest request) throws IOException, UnsupportedEncodingException {
    
    		// 读取请求内容
    		BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
    		String line = null;
    		StringBuilder sb = new StringBuilder();
    		while ((line = br.readLine()) != null) {
    			sb.append(line);
    		}
    		//将json字符串转换为json对象
    		JSONObject json=JSONObject.fromObject(sb.toString());
    		return json;
    	}
    }
    


    package com.jcuckoo.servlet;
    
    import java.io.IOException;
    import java.io.Writer;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.jcuckoo.pojos.User;
    import com.jcuckoo.service.UserService;
    import com.jcuckoo.util.JsonReader;
    import net.sf.json.JSONObject;
    @WebServlet("/LoginUserServlet")
    public class LoginUserServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	public LoginUserServlet() {
    		super();
    	}
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// response.setContentType("text/html");
    		// 设置字符编码为UTF-8, 这样支持汉字显示
    		// response.setCharacterEncoding("UTF-8");
    
    		response.setContentType("text/html;charset=utf-8");
    
    		/** 设置响应头允许ajax跨域访问 **/
    		response.setHeader("Access-Control-Allow-Origin", "*");
    		/* 星号表示所有的异域请求都可以接受, */
    		response.setHeader("Access-Control-Allow-Methods", "GET,POST");
    
    		Writer out = response.getWriter();
    
    
    		JSONObject json=JsonReader.receivePost(request);
    		System.out.println(json);
    		
    		UserService userService=new UserService();
    		
    		//将建json对象转换为java对象
    		User loginUser = (User)JSONObject.toBean(json,User.class);
    		User user = userService.LoginUser(loginUser);
    		JSONObject jsonObject=new JSONObject() ;
    		if(user!=null){
    			//将java对象转换为json对象
    			jsonObject.put("user", JSONObject.fromObject(user));
    			jsonObject.put("message", "用户登录成功!");
    		}else{
    
    			jsonObject.put("message", "用户登录失败!");
    		}
    		out.write(jsonObject.toString());
    		out.flush();
    	}
    }
    

    <%@ page language="java" contentType="text/html; charset=utf-8"%>
    <!DOCTYPE html >
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Servlet-jCuckoo</title>
    <script type="text/javascript" src="js/jquery-3.1.1.min.js"></script>
    </head>
    <body>
    	<form >
    		用户名:<input type="text" id="userName"/><br/>
    		密码:<input type="password" id="userPwd"/><br/>
    		<input type="button" value="登录" id="sender"> 
    	</form>
    	<div id="messageDiv"></div>
    	
    	<script>
    	$('#sender').click(function(){
    		var userName=document.getElementById('userName').value;
    		var userPwd=document.getElementById('userPwd').value;
    		var user={userName:userName,userPwd:userPwd};
    		var url="LoginUserServlet";
    		
    		$.post(url, JSON.stringify(user), function(data) {
    			  console.log(data);
                 $("#messageDiv").html(data);
                 var json=JSON.parse(data);
                 alert(json.message);
             }); 
    		 /* $.ajax({
    			type:'post',
    			url:url,
    			dataType:"json",			
    			data:JSON.stringify(user),
    			success: function (data) {
    				var user=data.user;
    				 $("#messageDiv").html(JSON.stringify(user));
    	             alert(data.message);
    	        },
    	        error: function (data) {
    	             alert(data.message);
    	             $("#messageDiv").html("");
    	        }
    		});  */
    		
    	});
    	</script>
    </body>
    </html>


    展开全文
  • servlet 接收json数据并响应

    千次阅读 2018-07-28 11:11:16
    客户端发送json数据servlet服务端 /*HttpClient.java*/ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io....

    客户端发送json数据给servlet服务端

    /*HttpClient.java*/
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import net.sf.json.JSONObject;
    public class HttpClient {
    	public HttpClient(){
    	}
        public static String doPost(String httpUrl, String param) {
            HttpURLConnection connection = null;
            InputStream is = null;
            OutputStream os = null;
            BufferedReader br = null;
            String result = null;
            try {
                URL url = new URL(httpUrl);
                // 通过远程url连接对象打开连接
                connection = (HttpURLConnection) url.openConnection();
                // 设置连接请求方式
                connection.setRequestMethod("POST");
                // 设置连接主机服务器超时时间:15000毫秒
                connection.setConnectTimeout(15000);
                // 设置读取主机服务器返回数据超时时间:60000毫秒
                connection.setReadTimeout(60000);
                // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
                connection.setDoOutput(true);
                // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
                connection.setDoInput(true);
                // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
                connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
                // 通过连接对象获取一个输出流
                os = connection.getOutputStream();
                // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
                os.write(param.getBytes());
                // 通过连接对象获取一个输入流,向远程读取
                if (connection.getResponseCode() == 200) {
    
                    is = connection.getInputStream();
                    // 对输入流对象进行包装:charset根据工作项目组的要求来设置
                    br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    
                    StringBuffer sbf = new StringBuffer();
                    String temp = null;
                    // 循环遍历一行一行读取数据
                    while ((temp = br.readLine()) != null) {
                        sbf.append(temp);
                        sbf.append("\r\n");
                    }
                    result = sbf.toString();
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                // 关闭资源
                if (null != br) {
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != os) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != is) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                // 断开与远程地址url的连接
                connection.disconnect();
            }
            return result;
        }
        public static String test(String url){
        	String result=null;
        	JSONObject json = new JSONObject();
        	json.put("comm", "comm");
        	json.put("stu", "stu");
        	System.out.println("请求的json数据:\n"+json.toString());
        	result=HttpClient.doPost(url, json.toString());
    		System.out.println("响应返回的json数据:\n"+result);
            return result;
        } 
    }
    
    
    
    

    服务端接收请求并相应回去

    /*HttpServer.java*/
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import data.ResponseData;
    import data.Student;
    import net.sf.json.JSONObject;
    import service.Service;
    import service.ServiceImpl;
    @WebServlet("/HttpServer")
    public class HttpServer extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        public HttpServer() {
            super();
        }
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		response.setHeader("content-type","text/html;charset=UTF-8");
    		response.setHeader("Access-Control-Allow-Origin", "*");
    		/* 星号表示所有的异域请求都可以接受, */
    		response.setHeader("Access-Control-Allow-Methods", "GET,POST");
    		PrintWriter out=response.getWriter();
    		// 读取请求内容
    		BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"utf-8"));
    		String line = null;
    		StringBuilder sb = new StringBuilder();
    		while ((line = br.readLine()) != null) {
    			sb.append(line);
    		}
    		//将json字符串转换为json对象
    		JSONObject json=JSONObject.fromObject(sb.toString());
    		//将数据转化为java对象,注:之前客户端是封装了两个数据(stu,comm),所以处理时
            //需要对其转换
    		Student stu=(Student) JSONObject.toBean((JSONObject) json.get("stu"), Student.class);
    		System.out.println(stu.toString());
    		Comm comm=(Comm) JSONObject.toBean((JSONObject) json.get("comm"), Comm.class);
    		
    		//数据处理,数据库连接方面,用来响应消息
    		Service service=new ServiceImpl();
    		ResponseData responseData=service.getStuInfo(stu);
    		//ResponseData responseData=Data.getStuInfo(stu);
    		
    	    JSONObject newJson=new JSONObject();
    	    newJson.put("comm", json.get("comm"));
    	    newJson.put("data", responseData);
    	    out.write(newJson.toString());
    	    System.out.println(newJson.toString());
    	}
    }
    
    
    
    

    展开全文
  • Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
  • Java Servlet编写JSON数据接口,简单实用的方式
  • 前后端对接后端部分。post方式接受前端传递的json数据,在postman亲测可用,未完待续!如有错误尽请指正!

    关与作者更多博客请访问云里云外开源社区

    一、postman使用post方式接受json数据

    先在Headers设置请求头。Content-Type —— application/json
    在这里插入图片描述在Body使用raw方式添加json字符串。如果还有其他需要也可以在Params添加数据

    在这里插入图片描述

    二、后台接受json数据的两种方式(未完待续)

    第一种

    BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String body = IOUtils.read(reader);
            out.write(body);
    

    在这段代码doPost方法中,用到了IO流来获取post提交的body,这样我们就获取了客户端提交的参数。
    需要注意的是:获取body参数,需要在request.getParameter()方法之前调用(如果有需要取QueryString参数的话)
    另外,这里使用了dubbo-2.5.3.jar的IOUtils.read(reader)方法来读取post body的内容。
    百度网盘下载
    https://pan.baidu.com/s/1zOknknDQQJBVejTmRvcdeQ

    第二种

    BufferedReader br = request.getReader();
            String str = "";
            String listString = "";
            while ((str = br.readLine()) != null) {
                listString += str;
            }
            out.println(listString );
    

    具体哪种效果更好,我也正在测试。仅供参考!

    展开全文
  • 我正在尝试读取jQuery发送的数据,因此可以在servlet中使用它jQuery的var test = [{pv: 1000, bv: 2000, mp: 3000, cp: 5000},{pv: 2500, bv: 3500, mp: 2000, cp: 4444}];$.ajax({type: 'post',url: 'ma...

    我是java的新手,我为这个问题苦苦挣扎了2天,最后决定在这里提问。

    我正在尝试读取jQuery发送的数据,因此可以在servlet中使用它

    jQuery的

    var test = [

    {pv: 1000, bv: 2000, mp: 3000, cp: 5000},

    {pv: 2500, bv: 3500, mp: 2000, cp: 4444}

    ];

    $.ajax({

    type: 'post',

    url: 'masterpaket',

    dataType: 'JSON',

    data: 'loadProds=1&'+test, //NB: request.getParameter("loadProds") only return 1, i need to read value of var test

    success: function(data) {

    },

    error: function(data) {

    alert('fail');

    }

    });

    Servlet

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

    if (request.getParameter("loadProds") != null) {

    //how do i can get the value of pv, bv, mp ,cp

    }

    }

    我非常感谢您可以提供的任何帮助。

    展开全文
  • 安卓连接服务器发送JSON数据,可以使用HttpURLConnection 传输JSON数据 //网络地址,一定要带上http:// public static String url = "http://127.0.0.1:8080/WebPoject/servlet/TestServlet.do" ; ...
  • JSON是web传输中主流的数据传输格式,从其格式来看,格式相当的简洁,层次也相当分明。这样的话会利于我们构建与解析JSON,下面举例说明如何在前台如何利用ajax去传输json,并且在后台servlet去解析json。如有错误,...
  • 一、Spring JDBC 读取数据库示例 Spring JDBC 示例 想要理解带有 jdbc 模板类的 Spring JDBC 框架的相关概念,让我们编写一个简单的示例,来实现下述 Student 表的所有 CRUD 操作。 CREATE TABLE Student ( ...
  • 新建一个servlet,使用doPost()方法,在其中手动写一个json字符串,并将传输文件类型设置为json,传输字符编码设置为utf-8,将浏览器解析方式设置为utf-8 protected void doPost ( HttpServletRequest ...
  • servlet读取post数据

    千次阅读 2013-09-11 18:06:17
    解决不使用 request.getParameter("key");...可直接读取post过来的xml、json、String ..... 方法一:   ServletInputStream sis = null; String data = null; // 取HTTP请求流 sis = request.getIn
  • 如何将servlet读取数据转化为JSON

    千次阅读 2015-10-01 21:54:35
    首先在JDBC的DAO中读取数据要是 List>类型 public static List> selectProvince() { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT * FROM city ...
  • android 与servlet json数据交互

    千次阅读 2015-10-12 09:16:30
    android 与servlet json数据交互 2012年09月01日 ⁄ 综合⁄ 共 3536字 ⁄ 字号 小 中 大 ⁄ 评论关闭 android客户 package com.comingx.xzz; import org.apache.http.HttpResponse; import org....
  • Java EE form表单发送JsonServlet接收Json并发送Json 1.需要的jar包 commons-beanutils-1.8.3.jar commons-collections-3.2.1-1.0.0.jar commons-lang-2.5.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,431
精华内容 10,972
关键字:

servlet读取json数据