package com.jqmobile.core.server.servlet2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jqmobile.core.http2.HttpSerializableObject; import com.jqmobile.core.http2.HttpUtils; import com.jqmobile.core.server.Application; import com.jqmobile.core.server.servlet.test.AddToDo; import com.jqmobile.core.server.session.Session; import com.jqmobile.core.utils.json.JSONConvertor2; import com.jqmobile.core.utils.json.JSONObject; /** * <p>core http servlet</p> * <p>满足久其移动通讯协议 * <p>Copyright: 版权所有 (c) 2002 - 2015<br> * Company: 久其</p> * * @author modi * @version 2014年3月17日 */ public class CoreHttpServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 797248197068645542L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { handler(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { handler(req, resp); } private void handler(HttpServletRequest request, HttpServletResponse resp) throws IOException { // request.setCharacterEncoding(HttpUtils.CHARSET); resp.setCharacterEncoding(HttpUtils.CHARSET); // StringBuilder sResult = new StringBuilder(); InputStream httpInput = null; BufferedReader httpReader = null; // 读取数据 httpInput = request.getInputStream(); httpReader = new BufferedReader(new InputStreamReader(httpInput, HttpUtils.CHARSET)); String line = null; while ((line = httpReader.readLine()) != null) { if (sResult.length() > 0) { sResult.append("\n"); } sResult.append(line); } try{ JSONObject jRequestData = new JSONObject(sResult.toString()); HttpSerializableObject obj = (HttpSerializableObject) JSONConvertor2.unAutoSerializable(jRequestData, HttpSerializableObject.class); if(null != obj.getSession()){ Session.vali(obj.getSession(), request); } HttpSerializableObject ret = invoke(request, obj); output(resp, ret); }catch(Throwable e){ //请求格式错误 e.printStackTrace(); return; } } protected HttpSerializableObject invoke(HttpServletRequest request, HttpSerializableObject obj) { return HttpServiceUtil.invoke(obj, request); } private void output(final HttpServletResponse response, HttpSerializableObject ret) throws IOException { String text = JSONConvertor2.serializable(ret).toString();//new JSONObject(ret).toString(); response.setContentType(HttpUtils.HTTP_CONNTENT_TYPE + "; charset=" + HttpUtils.CHARSET); response.setCharacterEncoding(HttpUtils.CHARSET); response.getOutputStream().write( text.toString().getBytes(HttpUtils.CHARSET)); response.getOutputStream().flush(); } @Override public void init() throws ServletException { super.init(); Application app = Application.getApplication(); app.initSystem2(); app.initService(); AddToDo.get(); } }