要使用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));
}