android客户端登录&注册的实现
MainActivity多线程的实现:
package com.example.loginconnect; import java.lang.ref.WeakReference; import java.net.SocketTimeoutException; import org.apache.http.conn.ConnectTimeoutException; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.loginconnect.service.ServiceRulesException; import com.example.loginconnect.service.UserService; import com.example.loginconnect.service.UserServiceImpl; public class MainActivity extends ActionBarActivity { private EditText username1; private EditText password1; private UserService userService = new UserServiceImpl(); private static final int FLAG_LOGIN_SUCCESS = 1; private static final String MSG_LOGIN_ERROR = "登录出错。"; private static final String MSG_LOGIN_SUCCESS = "登录成功。"; public static final String MSG_LOGIN_FAILED = "用户名或密码错误。"; public static final String MSG_SERVER_ERROR = "请求服务器错误。"; public static final String MSG_SERVER_TIMEOUT = "请求服务器超时。"; public static final String MSG_RESPONCE_TIMEOUT = "服务器响应超时。"; private static ProgressDialog dialog; public static String loginName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button login = (Button) findViewById(R.id.login); Button resign = (Button) findViewById(R.id.resign); username1 = (EditText) findViewById(R.id.username); password1 = (EditText) findViewById(R.id.password); login.setOnClickListener(new OnClickListener() { public void onClick(View v) { loginName = username1.getText().toString(); final String loginPassword = password1.getText().toString(); // Toast.makeText(v.getContext(), "用户名:"+username, // Toast.LENGTH_LONG).show(); // Toast.makeText(v.getContext(), "密码:"+password, // Toast.LENGTH_LONG).show(); /** * loading... */ if (dialog == null) { dialog = new ProgressDialog(MainActivity.this); } dialog.setTitle("请等待"); dialog.setMessage("登录中..."); dialog.setCancelable(false); dialog.show(); /** * 子线程 */ Thread thread = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { userService.userLogin(loginName, loginPassword); handler.sendEmptyMessage(FLAG_LOGIN_SUCCESS); } catch (ConnectTimeoutException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_SERVER_TIMEOUT); msg.setData(data); handler.sendMessage(msg); } catch (SocketTimeoutException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_RESPONCE_TIMEOUT); msg.setData(data); handler.sendMessage(msg); } catch (ServiceRulesException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", e.getMessage()); msg.setData(data); handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_LOGIN_ERROR); msg.setData(data); handler.sendMessage(msg); } } }); thread.start(); } }); resign.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ResignActivity.class); startActivity(intent); finish(); } }); } private void showTip(String str) { Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); if (str == MSG_LOGIN_SUCCESS) { Intent intent = new Intent(MainActivity.this, success.class); startActivity(intent); finish(); } } private static class IHandler extends Handler { private final WeakReference<ActionBarActivity> mActivity; public IHandler(MainActivity activity) { mActivity = new WeakReference<ActionBarActivity>(activity); } @Override public void handleMessage(Message msg) { if (dialog != null) { dialog.dismiss(); } int flag = msg.what; switch (flag) { case 0: String errorMsg = (String) msg.getData().getSerializable( "ErrorMsg"); ((MainActivity) mActivity.get()).showTip(errorMsg); break; case FLAG_LOGIN_SUCCESS: ((MainActivity) mActivity.get()).showTip(MSG_LOGIN_SUCCESS); break; default: break; } } } private IHandler handler = new IHandler(this); public String setUserName(String username) { username = loginName; return username; } }
UserService 接口:
package com.example.loginconnect.service; import org.json.JSONObject; public interface UserService { public void userLogin(String loginName, String loginPassword) throws Exception; public void userResign(String loginName, String loginPassword,String surePassword, String realName, String cellphone1, String cellphone2, String cellphone3) throws Exception; public JSONObject selectUser(String loginName, String realname, String cellphone1, String cellphone2, String cellphone3) throws Exception; }
UserServiceImpl 继承自UserService ,实现与服务器交互:
package com.example.loginconnect.service; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.json.JSONObject; import android.content.Context; import android.util.Log; import android.widget.Toast; import com.example.loginconnect.MainActivity; import com.example.loginconnect.ResignActivity; import com.example.loginconnect.success; import com.google.gson.Gson; public class UserServiceImpl implements UserService { private static final String TAG = "UserServiceImpl"; // MainActivity person=new MainActivity(); @Override public void userLogin(String loginName, String loginPassword) throws Exception { Log.d(TAG, loginName); Log.d(TAG, loginPassword); // Thread.sleep(3000); // 创建http对象 HttpClient client = new DefaultHttpClient(); /** * post/json传值 */ // String uri = // "http://10.138.108.131:8080/Test_MyService/login.action?username=" // + loginName + "&password=" + loginPassword; // HttpGet get = new HttpGet(uri); // 响应 // HttpResponse response = client.execute(get); String uri = "http://192.168.1.106:8080/MyService/login.action"; HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpPost post = new HttpPost(uri); List<NameValuePair> pair = new ArrayList<NameValuePair>(); try { JSONObject obj = new JSONObject(); obj.put("username", loginName); obj.put("password", loginPassword); // JSONObject json = new JSONObject(); // Gson gson = new Gson(); // String str = gson.toJson(obj); pair.add(new BasicNameValuePair("json", obj.toString())); post.setEntity(new UrlEncodedFormEntity(pair, HTTP.UTF_8)); post.setParams(httpParams); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // String result = EntityUtils.toString(response.getEntity(), // "UTF-8"); // System.out.println(result); String responseStr = EntityUtils.toString(response.getEntity()); JSONObject json = new JSONObject(responseStr).getJSONObject("json"); String result = json.getString("result"); Log.d(TAG, result); if (result.equals("success")) { // return true; } else { // return false; throw new ServiceRulesException(MainActivity.MSG_LOGIN_FAILED); } } else { throw new ServiceRulesException(MainActivity.MSG_SERVER_ERROR); } // int statusCode = response.getStatusLine().getStatusCode(); // if (statusCode != HttpStatus.SC_OK) { // throw new ServiceRulesException(MainActivity.MSG_SERVER_ERROR); // } // String result = EntityUtils.toString(response.getEntity(), "UTF-8"); // // if (result.equals("success")) { // // } else { // throw new ServiceRulesException(MainActivity.MSG_LOGIN_FAILED); // } } @Override public void userResign(String loginName, String loginPassword, String surePassword, String realName, String cellphone1, String cellphone2, String cellphone3) throws Exception { // if(loginPassword==surePassword){ // }else{ // throw new ServiceRulesException(ResignActivity.MSG_RESIGN_FAILED2); // } // Thread.sleep(3000); // 创建http对象 /** * GET 传值 */ // String uri = // "http://10.138.106.30:8080/MyService/regist.action?username=" // + loginName // + "&password=" // + loginPassword // + "&realName=" // + realName // + "&cellphone1=" // + cellphone1 // + "&cellphone2=" // + cellphone2 + "&cellphone3=" + cellphone3; // http://10.138.108.131:8080/Test_MyService/login.action String uri = "http://192.168.1.106:8080/MyService/regist.action"; HttpClient client = new DefaultHttpClient(); HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpPost post = new HttpPost(uri); List<NameValuePair> pair = new ArrayList<NameValuePair>(); try { JSONObject obj = new JSONObject(); obj.put("username", loginName); obj.put("password", loginPassword); obj.put("realname", realName); obj.put("cellphone1", cellphone1); obj.put("cellphone2", cellphone2); obj.put("cellphone3", cellphone3); // Gson gson = new Gson(); // String str = gson.toJson(obj); pair.add(new BasicNameValuePair("json", obj.toString())); post.setEntity(new UrlEncodedFormEntity(pair, HTTP.UTF_8)); post.setParams(httpParams); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String responseStr = EntityUtils.toString(response.getEntity()); JSONObject json = new JSONObject(responseStr).getJSONObject("json"); String result = json.getString("result"); if (result.equals("success")) { } else { throw new ServiceRulesException( ResignActivity.MSG_RESIGN_FAILED); } } // 响应 // HttpResponse response = client.execute(get); // int statusCode = response.getStatusLine().getStatusCode(); // if (statusCode != HttpStatus.SC_OK) { // throw new ServiceRulesException(ResignActivity.MSG_SERVER_ERROR); // } // String result = EntityUtils.toString(response.getEntity(), "UTF-8"); // // if (result.equals("success")) { // // } else { // throw new ServiceRulesException(ResignActivity.MSG_RESIGN_FAILED); // } } public JSONObject selectUser(String loginName, String realname, String cellphone1, String cellphone2, String cellphone3) throws Exception { String userName = "tom"; // userName = person.setUserName(userName); // Thread.sleep(3000); // 创建http对象 HttpClient client = new DefaultHttpClient(); String uri = "http://192.168.1.106:8080/MyService/select.action"; HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 5000); HttpConnectionParams.setSoTimeout(httpParams, 5000); HttpPost post = new HttpPost(uri); List<NameValuePair> pair = new ArrayList<NameValuePair>(); try { JSONObject obj = new JSONObject(); obj.put("username", userName); pair.add(new BasicNameValuePair("json", obj.toString())); post.setEntity(new UrlEncodedFormEntity(pair, HTTP.UTF_8)); post.setParams(httpParams); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { String responseStr = EntityUtils.toString(response.getEntity()); JSONObject json1 = new JSONObject(responseStr) .getJSONObject("json"); JSONObject object = json1.getJSONObject("user"); return object; } else { throw new ServiceRulesException(success.MSG_SERVER_ERROR); } } }
ResignActivity 类实现注册的功能:
package com.example.loginconnect; import java.lang.ref.WeakReference; import java.net.SocketTimeoutException; import org.apache.http.conn.ConnectTimeoutException; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.loginconnect.service.ServiceRulesException; import com.example.loginconnect.service.UserService; import com.example.loginconnect.service.UserServiceImpl; public class ResignActivity extends ActionBarActivity { private EditText account; private EditText password; private EditText sure_password; private EditText realname; private EditText phone1; private EditText phone2; private EditText phone3; private static ProgressDialog dialog; private UserService userService = new UserServiceImpl(); private static final int FLAG_RESIGN_SUCCESS = 1; private static final String MSG_RESIGN_ERROR = "注册出错。"; private static final String MSG_RESIGN_SUCCESS = "注册成功。"; public static final String MSG_RESIGN_FAILED = "输入出现错误。"; public static final String MSG_RESIGN_FAILED2 = "密码输入错误。"; public static final String MSG_SERVER_ERROR = "请求服务器错误。"; public static final String MSG_SERVER_TIMEOUT = "请求服务器超时。"; public static final String MSG_RESPONCE_TIMEOUT = "服务器响应超时。"; @Override protected void onCreate(Bundle savedInsanceState) { super.onCreate(savedInsanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.resign); account = (EditText) findViewById(R.id.account); password = (EditText) findViewById(R.id.password); sure_password = (EditText) findViewById(R.id.sure_password); realname = (EditText) findViewById(R.id.name); phone1 = (EditText) findViewById(R.id.phone1); phone2 = (EditText) findViewById(R.id.phone2); phone3 = (EditText) findViewById(R.id.phone3); Button register = (Button) findViewById(R.id.register); register.setOnClickListener(new OnClickListener() { public void onClick(View v) { final String loginName = account.getText().toString(); final String loginPassword = password.getText().toString(); final String surePassword = sure_password.getText().toString(); final String realName = realname.getText().toString(); final String cellphone1 = phone1.getText().toString(); final String cellphone2 = phone2.getText().toString(); final String cellphone3 = phone3.getText().toString(); /** * loading... */ if (dialog == null) { dialog = new ProgressDialog(ResignActivity.this); } dialog.setTitle("请等待"); dialog.setMessage("注册中..."); dialog.setCancelable(false); dialog.show(); /** * 子线程 */ Thread thread = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { userService.userResign(loginName, loginPassword, surePassword, realName, cellphone1, cellphone2, cellphone3); handler.sendEmptyMessage(FLAG_RESIGN_SUCCESS); } catch (ConnectTimeoutException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_SERVER_TIMEOUT); msg.setData(data); handler.sendMessage(msg); } catch (SocketTimeoutException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_RESPONCE_TIMEOUT); msg.setData(data); handler.sendMessage(msg); }catch (ServiceRulesException e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", e.getMessage()); msg.setData(data); handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable("ErrorMsg", MSG_RESIGN_ERROR); msg.setData(data); handler.sendMessage(msg); } } }); thread.start(); } }); } private void showTip(String str) { Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); if (str == MSG_RESIGN_SUCCESS) { Intent intent = new Intent(ResignActivity.this, MainActivity.class); startActivity(intent); finish(); } } private static class IHandler extends Handler { private final WeakReference<ActionBarActivity> mActivity; public IHandler(ResignActivity activity) { mActivity = new WeakReference<ActionBarActivity>(activity); } @Override public void handleMessage(Message msg) { if (dialog != null) { dialog.dismiss(); } int flag = msg.what; switch (flag) { case 0: String errorMsg = (String) msg.getData().getSerializable( "ErrorMsg"); ((ResignActivity) mActivity.get()).showTip(errorMsg); break; case FLAG_RESIGN_SUCCESS: ((ResignActivity) mActivity.get()).showTip(MSG_RESIGN_SUCCESS); break; default: break; } } } private IHandler handler = new IHandler(this); }
ServiceRulesException 异常类:
package com.example.loginconnect.service; public class ServiceRulesException extends Exception { /** * 抛异常 */ private static final long serialVersionUID = -4213152538874245667L; public ServiceRulesException(String message){ super(message); } }
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/screen" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:background="@drawable/background_login"> <LinearLayout android:id="@+id/loginPanel" android:layout_width="400dp" android:layout_height="300dp" android:layout_centerHorizontal="true" android:layout_marginTop="50dp" android:background="@drawable/background_login_div" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="为您的出行提供保障" android:layout_marginTop="15dp" android:textSize="25dp"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:text="请先登录" /> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="15dp" android:singleLine="true" android:background="@drawable/qq_edit_login" android:hint="请输入您的用户名" android:ems="10" > <requestFocus /> </EditText> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:layout_marginTop="15dp" android:singleLine="true" android:password="true" android:background="@drawable/qq_edit_login" android:hint="请输入您的密码" android:ems="10" /> <Button android:id="@+id/login" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="18dp" android:text="登陆" android:background="@drawable/background_button_div"/> </LinearLayout> <Button android:id="@+id/resign" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_alignRight="@+id/loginPanel" android:layout_below="@+id/loginPanel" android:layout_marginTop="18dp" android:background="@drawable/background_button_div" android:text="快速注册" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/resign" android:layout_alignBottom="@+id/resign" android:layout_toLeftOf="@+id/resign" android:text="没有账号?请先注册" /> </RelativeLayout>
服务器端:
package com.login; import java.io.IOException; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.json.JSONException; import org.json.JSONObject; import com.dao.JdbcConnect; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport implements ServletRequestAware, ServletResponseAware { private static final long serialVersionUID = 1L; HttpServletRequest request; HttpServletResponse response; private String username; private String password; private String realname; private String cellphone1; private String cellphone2; private String cellphone3; public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setServletResponse(HttpServletResponse response) { this.response = response; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void insert() throws SQLException, IOException, ClassNotFoundException { this.response.setContentType("text/html;charset=utf-8"); this.response.setCharacterEncoding("UTF-8"); String key = this.request.getParameter("json").toString(); System.out.println(key); try { JSONObject obj = new JSONObject(key); username = obj.getString("username"); password = obj.getString("password"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 测试 // System.out.println(username + " " + password); JdbcConnect.getConnection(); String sql = "select * from userinfo where username='" + username + "' and password ='" + password + "'"; ResultSet rS = JdbcConnect.executeQuery(sql); // 测试 System.out.println(username + " " + password); try { JSONObject obj2 = new JSONObject(); JSONObject result = new JSONObject(); // PrintWriter out = response.getWriter(); if (rS.next()) { obj2.put("result", "success"); result.put("json", obj2); response.getWriter().write(result.toString()); // out.print("success"); System.out.println(result); } else { obj2.put("result", "failed"); result.put("json", obj2); response.getWriter().write(result.toString()); // out.print("failed"); System.out.println(result); } // if (out != null) { // out.close(); // } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void regist() throws SQLException, IOException, ClassNotFoundException { JdbcConnect.getConnection(); this.response.setContentType("text/html;charset=utf-8"); this.response.setCharacterEncoding("UTF-8"); this.request.setCharacterEncoding("UTF-8"); String key = this.request.getParameter("json").toString(); System.out.println(key); try { JSONObject obj = new JSONObject(key); username = obj.getString("username"); password = obj.getString("password"); realname = obj.getString("realname"); cellphone1 = obj.getString("cellphone1"); cellphone2 = obj.getString("cellphone2"); cellphone3 = obj.getString("cellphone3"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } // username = this.request.getParameter("username"); // password = this.request.getParameter("password"); // realname = this.request.getParameter("realname"); // cellphone1 = this.request.getParameter("cellphone1"); // cellphone2 = this.request.getParameter("cellphone2"); // cellphone3 = this.request.getParameter("cellphone3"); if (username == null && password == null && realname == null && cellphone1 == null) { throw new IOException(); } System.out.println(username + " " + password); String sql = "insert into userinfo(username,password,realname,cellphone1,cellphone2,cellphone3) values('" + username + "','" + password + "','" + realname + "','" + cellphone1 + "','" + cellphone2 + "','" + cellphone3 + "')"; int flag = JdbcConnect.executeUpdate(sql); JSONObject obj2 = new JSONObject(); JSONObject result = new JSONObject(); // PrintWriter out = response.getWriter(); try { if (flag > -1) { obj2.put("result", "success"); result.put("json", obj2); response.getWriter().write(result.toString()); System.out.println(result); } else { obj2.put("result", "failed"); result.put("json", obj2); response.getWriter().write(result.toString()); System.out.println(result); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } // if (out != null) { // out.close(); // } } public void selectUser() throws SQLException, IOException, ClassNotFoundException { this.response.setContentType("text/html;charset=utf-8"); this.response.setCharacterEncoding("UTF-8"); String key = this.request.getParameter("json").toString(); try { JSONObject obj3 = new JSONObject(key); username = obj3.getString("username"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } ResultSet rs = null; String sql = "select * from userinfo where username='" + username + "'"; try { JdbcConnect.getConnection(); rs = JdbcConnect.executeQuery(sql); if (rs.next()) { JSONObject user = new JSONObject(); user.put("username", rs.getString("username")); user.put("realname", rs.getString("realname")); user.put("cellphone1", rs.getString("cellphone1")); user.put("cellphone2", rs.getString("cellphone2")); user.put("cellphone3", rs.getString("cellphone3")); JSONObject tem = new JSONObject(); JSONObject temp = new JSONObject(); tem.put("user", user); temp.put("json", tem); response.getWriter().write(temp.toString()); System.out.println(user); System.out.println(temp); } else { } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
心有猛虎,细嗅蔷薇 转载请注明:https://www.cnblogs.com/ygh1229/