要使用json,我们先在项目添加依赖:

   <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.28</version>
    </dependency>

封装一个处理http请求获得json参数的工具类:

public class HttpGetJson {
    /**
     * 获取json数据
     * @param request
     * @return
     */

    public static JSONObject getJson(HttpServletRequest request){
        String result = "";
        BufferedReader in = null;
        try {
            in= new BufferedReader(new InputStreamReader(
                    request.getInputStream(),"utf-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return (JSONObject) JSONObject.parse(result);
    }
}

添加了json依赖后,在servlet的doGet或者dopost方法中获取request的json数据:

 JSONObject data= HttpGetJson.getJson(request);
        if (data!=null){
            //业务处理,例如:System.out.println("number--->"+data.get("number"));
            //利用get就能从json取出对应的键值对.
        }

在处理完业务之后,如果需要返回json:

  JSONObject res=new JSONObject();//即将返回前端数据
  res.put("code",200);
  response.setCharacterEncoding("utf-8");
  response.setContentType("application/json");
  response.getWriter().write(String.valueOf(res));

这样前端就可以接受到我们servlet返回的json了。

dopost代码的示例:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("用户登录------------------------------------------>");
        User user=null;
        PrintWriter out = null;
        int flag=500;
        JSONObject res=new JSONObject();//返回前端数据
        //获取前端json数据
        JSONObject data= HttpGetJson.getJson(request);
        if (data!=null){
            UserService userService=new UserServiceImpl();
            user=userService.login(String.valueOf(data.get("number"))
            ,String.valueOf(data.get("pwd")));
            if(user!=null){
                flag=200;
            }
        }
       // res.put("user",user);
        res.put("code",flag);
        System.out.println("用户登录------------------------------------------>");
        System.out.println();
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json");
        response.getWriter().write(String.valueOf(res));
    }

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐