客户端
程序,界面,方法分开。MVC模式
HttpClientMethod
HttpClientManager
mainJFrame
HttpClientManager
HttpClientManager负责管理连接,但是这里没有和HttpClientMethod分开
package com.http.json;
public class HttpClientManager {
private static HttpClientManager manager;
public static synchronized HttpClientManager newInstance(){
if(manager==null){
manager=new HttpClientManager();
}
return manager;
}
}
HttpClientMethod
/** HttpClientMethod*/
package com.http.json;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class HttpClientMethod {
private static HttpClientMethod method;
public static synchronized HttpClientMethod newInstance(){
if(method==null){
method=new HttpClientMethod();
}
return method;
}
/**注册*/
public String Register(String username,String password){
String urlString = "http://localhost:8080/MyServiceTest/MyTestServerlet";
// 创建HttpClientBuilder
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setConnectionTimeToLive(3000, TimeUnit.MICROSECONDS);
// 生成client的builder
HttpClient client = builder.build();
HttpPost post = new HttpPost(urlString);// 设置为get方法
//json
JSONObject obj = new JSONObject();
obj.put("type", "register");// 和注册唯一区别
JSONObject data = new JSONObject();
data.put("username", username);
data.put("password", password);
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
data.put("data", "" + time);
JSONArray array = new JSONArray();
array.add(data);
obj.put("array", array);
NameValuePair pair1 = new BasicNameValuePair("json", obj.toString());
ArrayList<NameValuePair> params = new ArrayList<>();
params.add(pair1);
try {
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
HttpResponse response = client.execute(post);
int code = response.getStatusLine().getStatusCode();
if (code == HttpURLConnection.HTTP_OK) {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public String Login(String username,String password){
String urlString = "http://localhost:8080/MyServiceTest/MyTestServerlet";
// 创建HttpClientBuilder
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setConnectionTimeToLive(3000, TimeUnit.MICROSECONDS);
// 生成client的builder
HttpClient client = builder.build();
HttpPost post = new HttpPost(urlString);// 设置为get方法
//json
JSONObject obj = new JSONObject();
obj.put("type", "login");
JSONObject data = new JSONObject();
data.put("username", username);
data.put("password", password);
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
data.put("data", "" + time);
JSONArray array = new JSONArray();
array.add(data);
obj.put("array", array);
NameValuePair pair1 = new BasicNameValuePair("json", obj.toString());
ArrayList<NameValuePair> params = new ArrayList<>();
params.add(pair1);
try {
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
HttpResponse response = client.execute(post);
int code = response.getStatusLine().getStatusCode();
if (code == HttpURLConnection.HTTP_OK) {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public void select(){
String urlString = "http://localhost:8080/MyServiceTest/MyTestServerlet";
// 创建HttpClientBuilder
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setConnectionTimeToLive(3000, TimeUnit.MICROSECONDS);
// 生成client的builder
HttpClient client = builder.build();
HttpPost post = new HttpPost(urlString);// 设置为get方法
//json
JSONObject obj = new JSONObject();
obj.put("type", "select");// 和注册唯一区别
JSONObject data = new JSONObject();
Calendar calendar = Calendar.getInstance();
long time = calendar.getTimeInMillis();
data.put("data", "" + time);
JSONArray array = new JSONArray();
array.add(data);
obj.put("array", array);
NameValuePair pair1 = new BasicNameValuePair("json", obj.toString());
ArrayList<NameValuePair> params = new ArrayList<>();
params.add(pair1);
try {
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
post.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
HttpResponse response = client.execute(post);
int code = response.getStatusLine().getStatusCode();
if (code == HttpURLConnection.HTTP_OK) {
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
mainJFrame
JButton btnNewButton = new JButton("注册");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
HttpClientMethod.newInstance().Register(textFieldUserName.getText(), textFieldPassword.getText());
}
});
**************************************************
JButton btnNewButton_1 = new JButton("登录");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
HttpClientMethod.newInstance().Login(textFieldUserName.getText(), textFieldPassword.getText());
}
});
**********************************************
JButton btnNewButton_2 = new JButton("查看所有");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
HttpClientMethod.newInstance().select();
}
});
服务器端
1MyServerlet
2SQLManager
3SQLOperate
package com.serverlet.test;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
/**
* Servlet implementation class MyTestServerlet
*/
@WebServlet("/MyTestServerlet")
public class MyServerlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MyServerlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String json = request.getParameter("json");
System.out.println(json);
JSONObject object = JSONObject.fromObject(json);
String type = object.getString("type");
String username = object.getJSONArray("array").getJSONObject(0).getString("username");
String password = object.getJSONArray("array").getJSONObject(0).getString("password");
System.out.println(username);
System.out.println(password);
String back = "";
if (type.equals("register")) {
String username = object.getJSONArray("array").getJSONObject(0).getString("username");
String password = object.getJSONArray("array").getJSONObject(0).getString("password");
// 注册
back = SQLOperate.newInstance().Register(username, password);
response.setHeader("content-type", "text/HTML;charset=UTF-8");
response.getWriter().append(back);
} else if (type.equals("login")) {
String username = object.getJSONArray("array").getJSONObject(0).getString("username");
String password = object.getJSONArray("array").getJSONObject(0).getString("password");
// 登录
back = SQLOperate.newInstance().Login(username, password);
response.setHeader("content-type", "text/HTML;charset=UTF-8");
response.getWriter().append(back);
} else if (type.equals("select")) {
//查询
back = SQLOperate.newInstance().Select();
response.setHeader("content-type", "text/HTML;charset=UTF-8");
response.getWriter().append(back);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
package com.serverlet.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author单例设计模式
* 主要完成数据库的连接
*
*/
public class SQLManager {
private Connection conn;
public Connection getConn() {
return conn;
}
private static SQLManager manager;
public static synchronized SQLManager newInstance() {
if (manager == null) {
manager = new SQLManager();
}
return manager;
}
private SQLManager() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/clazz";
String user = "root";
String password = "123456";
try {
Class.forName(driver);// ��������
// �����ݿ⽨������
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.serverlet.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class SQLOperate {
public static final int SUCESS = 0;
public static final int ERRO = 1;
private static SQLOperate operate;
public static synchronized SQLOperate newInstance() {
if (operate == null) {
operate = new SQLOperate();
}
return operate;
}
/**
*
* 登录方法
*
*/
public String Login(String username, String password) {
JSONObject obj = new JSONObject();
Connection conn = SQLManager.newInstance().getConn();
try {
PreparedStatement state = conn.prepareStatement("select *from user where userName=?and password=?");
state.setString(1, username);
state.setString(2, password);
ResultSet set = state.executeQuery();
set.last();
if (set.getRow() == 0) {
obj.put("code", 1);
obj.put("message", "请先注册");
} else {
obj.put("code", 0);
obj.put("message", "登陆成功");
}
} catch (SQLException e1) {
obj.put("code", 1);
obj.put("message", "登陆失败");
e1.printStackTrace();
}
return obj.toString();
}
/**
*
* 注册方法
*
*/
public String Register(String username, String password) {
JSONObject obj = new JSONObject();
Connection conn = SQLManager.newInstance().getConn();
// 查询
String sql = "select * from user where userName='" + username + "'";
try {
PreparedStatement state = conn.prepareStatement(sql);
ResultSet set = state.executeQuery();
set.last();// 游标移动到最后一行
int num = set.getRow();
if (num == 0) {
String register = "insert into user(userName,password)values('" + username + "','" + password + "') ";
state.execute(register);
obj.put("code", 0);
obj.put("message", "注册成功");
return obj.toString();
} else if (num == 1) {
obj.put("code", 0);
obj.put("message", "用户名已存在");
return obj.toString();
}
} catch (SQLException e) {
obj.put("code", 1);
obj.put("message", "服务器异常");
e.printStackTrace();
}
return obj.toString();
}
/**
* 查询方法
*/
public String Select() {
JSONObject obj = new JSONObject();
Connection conn = SQLManager.newInstance().getConn();
String sql = "select * from user ";
try {
PreparedStatement state = conn.prepareStatement(sql);
ResultSet set = state.executeQuery(sql);
JSONArray array = new JSONArray();
JSONObject item = new JSONObject();
while (!set.isAfterLast()) {
item.put("username", set.getString("userName"));
item.put("password", set.getString("password"));
set.next();
array.add(item);
}
obj.put("data", array);
obj.put("code", 0);
obj.put("message", "查询成功");
} catch (SQLException e) {
obj.put("code", 1);
obj.put("message", "查询失败");
e.printStackTrace();
}
return obj.toString();
}
}