From eeae874ded96deb115a858526630eee34f581815 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 7 Nov 2015 01:09:13 +0800 Subject: [PATCH] make all response return as json format --- src/love/sola/netsupport/api/GetUser.java | 30 +++++++++--- src/love/sola/netsupport/api/Response.java | 29 ++++++++++++ src/love/sola/netsupport/enums/ISPType.java | 2 +- .../sola/netsupport/enums/ResponseCode.java | 47 +++++++++++++++++++ src/love/sola/netsupport/sql/SQLQuery.java | 29 +++++++++++- .../wechat/handler/HandlerList.java | 18 +++++++ 6 files changed, 146 insertions(+), 9 deletions(-) create mode 100644 src/love/sola/netsupport/api/Response.java create mode 100644 src/love/sola/netsupport/enums/ResponseCode.java diff --git a/src/love/sola/netsupport/api/GetUser.java b/src/love/sola/netsupport/api/GetUser.java index c2f745d..43f8cbe 100644 --- a/src/love/sola/netsupport/api/GetUser.java +++ b/src/love/sola/netsupport/api/GetUser.java @@ -1,6 +1,8 @@ package love.sola.netsupport.api; import com.google.gson.Gson; +import love.sola.netsupport.enums.ResponseCode; +import love.sola.netsupport.pojo.User; import love.sola.netsupport.sql.SQLQuery; import javax.servlet.ServletConfig; @@ -21,9 +23,12 @@ import java.io.PrintWriter; @WebServlet(name = "GetUser",urlPatterns = "/api/getuser",loadOnStartup = 1) public class GetUser extends HttpServlet { + private Gson gson = null; + @Override public void init(ServletConfig config) throws ServletException { super.init(config); + gson = new Gson(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -33,15 +38,28 @@ public class GetUser extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); + response.addHeader("Content-type", "text/json;charset=utf-8"); PrintWriter out = response.getWriter(); + String id = request.getParameter("id"); String name = request.getParameter("name"); - if (name == null) { - response.addHeader("Content-type", "text/plain;charset=utf-8"); - out.println("Username required."); + if ((id == null || id.isEmpty()) && (name == null || name.isEmpty())) { + out.println(gson.toJson(new Response(ResponseCode.PARAMETER_REQUIRED))); + } else if (id != null) { + try { + User u = SQLQuery.getUserById(Integer.parseInt(id)); + if (u == null) + out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND))); + else + out.println(gson.toJson(new Response(ResponseCode.OK, u))); + } catch (NumberFormatException e) { + out.println(gson.toJson(new Response(ResponseCode.ILLEGAL_PARAMETER))); + } } else { - response.addHeader("Content-type", "text/json;charset=utf-8"); - Gson gson = new Gson(); - out.println(gson.toJson(SQLQuery.getUserFromName(name))); + User u = SQLQuery.getUserByName(name); + if (u == null) + out.println(gson.toJson(new Response(ResponseCode.USER_NOT_FOUND))); + else + out.println(gson.toJson(new Response(ResponseCode.OK, u))); } out.close(); } diff --git a/src/love/sola/netsupport/api/Response.java b/src/love/sola/netsupport/api/Response.java new file mode 100644 index 0000000..958fde1 --- /dev/null +++ b/src/love/sola/netsupport/api/Response.java @@ -0,0 +1,29 @@ +package love.sola.netsupport.api; + +import lombok.AllArgsConstructor; +import love.sola.netsupport.enums.ResponseCode; + +/** + * *********************************************** + * Created by Sola on 2015/11/5. + * Don't modify this source without my agreement + * *********************************************** + */ +@AllArgsConstructor +public class Response { + + public int code; + public String info; + public Object result; + + public Response(ResponseCode code) { + this(code, null); + } + + public Response(ResponseCode code, Object result) { + this.code = code.id; + this.info = code.info; + this.result = result; + } + +} diff --git a/src/love/sola/netsupport/enums/ISPType.java b/src/love/sola/netsupport/enums/ISPType.java index bf64ea5..21d4e0d 100644 --- a/src/love/sola/netsupport/enums/ISPType.java +++ b/src/love/sola/netsupport/enums/ISPType.java @@ -11,7 +11,6 @@ import java.util.Map; */ public enum ISPType { - TELECOM("Telecom", 1), UNICOM("Unicom", 2), CHINAMOBILE("ChinaMobile", 3),; @@ -53,4 +52,5 @@ public enum ISPType { public String toString() { return name; } + } diff --git a/src/love/sola/netsupport/enums/ResponseCode.java b/src/love/sola/netsupport/enums/ResponseCode.java new file mode 100644 index 0000000..fa69530 --- /dev/null +++ b/src/love/sola/netsupport/enums/ResponseCode.java @@ -0,0 +1,47 @@ +package love.sola.netsupport.enums; + +import java.util.HashMap; +import java.util.Map; + +/** + * *********************************************** + * Created by Sola on 2015/11/6. + * Don't modify this source without my agreement + * *********************************************** + */ +public enum ResponseCode { + + OK(0, "OK"), + PARAMETER_REQUIRED(-1, "Parameter Required"), + ILLEGAL_PARAMETER(-2, "Illegal parameter"), + USER_NOT_FOUND(-11, "User not found"), + ; + + private static final Map ID_MAP = new HashMap<>(); + + static { + for (ResponseCode type : values()) { + if (type.id > 0) { + ID_MAP.put(type.id, type); + } + } + } + + public final String info; + public final int id; + + ResponseCode(int id, String info) { + this.info = info; + this.id = id; + } + + public static ResponseCode fromId(int id) { + return ID_MAP.get(id); + } + + @Override + public String toString() { + return info; + } + +} diff --git a/src/love/sola/netsupport/sql/SQLQuery.java b/src/love/sola/netsupport/sql/SQLQuery.java index daea6d2..aef4fb9 100644 --- a/src/love/sola/netsupport/sql/SQLQuery.java +++ b/src/love/sola/netsupport/sql/SQLQuery.java @@ -37,7 +37,11 @@ public class SQLQuery { } } - public static User getUserFromName(String name) { + public static void free(Connection conn) { + if (conn != null) try { conn.close(); } catch (SQLException e) { } + } + + public static User getUserByName(String name) { Connection conn = null; try { conn = ds.getConnection(); @@ -54,10 +58,31 @@ public class SQLQuery { } } catch (SQLException e) { } finally { - if (conn != null) try { conn.close(); } catch (SQLException e) { } + free(conn); } return null; } + public static User getUserById(int id) { + Connection conn = null; + try { + conn = ds.getConnection(); + PreparedStatement ps = conn.prepareStatement("SELECT * FROM user_info WHERE id=?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + return new User(rs.getInt(COLUMN_ID), + rs.getString(COLUMN_NAME), + rs.getLong(COLUMN_STUDENT_ID), + rs.getString(COLUMN_NET_ACCOUNT), + ISPType.fromId(rs.getInt(COLUMN_ISP)), + rs.getString(COLUMN_WECHAT)); + } + } catch (SQLException e) { + } finally { + free(conn); + } + return null; + } } diff --git a/src/love/sola/netsupport/wechat/handler/HandlerList.java b/src/love/sola/netsupport/wechat/handler/HandlerList.java index eb07711..feae960 100644 --- a/src/love/sola/netsupport/wechat/handler/HandlerList.java +++ b/src/love/sola/netsupport/wechat/handler/HandlerList.java @@ -1,5 +1,11 @@ package love.sola.netsupport.wechat.handler; +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; + +import java.util.HashMap; +import java.util.Map; + /** * *********************************************** * Created by Sola on 2015/11/5. @@ -7,4 +13,16 @@ package love.sola.netsupport.wechat.handler; * *********************************************** */ public class HandlerList { + + public static Map> handlers = new HashMap<>(); + + static { + handlers.put("Register", RegisterHandler.class); + } + + public void init(WxMpMessageRouter router) { + + } + + }