首先加入响应编码格式
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
接收前端json数据
InputStreamReader insr = new InputStreamReader(request.getInputStream(),"utf-8");
String result = "";
int respInt = insr.read();
while(respInt!=-1) {
result +=(char)respInt;
respInt = insr.read();
}
JSONObject json = JSONObject.parseObject(result);
提取json数据中的值
// 获取json数据直接用json.getString
int page = json.getInteger("page");
String userName = json.getString("userName");
String gender = json.getString("gender");
String phone = json.getString("phone");
将json数据中出了键 =(*)如:键 = id的键值对外,其他的放进数组
//fastjson解析方法
for (Map.Entry<String, Object> entry : json.entrySet()) {
if(entry.getKey().equals("qm")){
}else {
// key不是qm的 key和value放进数组
arr.add(entry.getKey()+":"+entry.getValue());
}
}
数据库Util操作工具类
package service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC工具类 (通常将方法设置为静态方法,不然还要通过new 一个对象来调用方法,不优雅,类加载时即加载)
* 1.获取连接fangf
* 2.关闭释放jdbx使用的资源
* */
public class jdbcUtil {
private static Connection conn;
private static PreparedStatement ps;
/**1.
* 获取jdbc连接的方法getconnection (通过JDBCUtil.getConnection()来获取一个JDBC的连接)
* ip 为数据库所在的远程服务器的ip地址
* port 为数据库访问的端口
* mysqldatabase 要连接的数据库名称
* */
// public static Connection getConnection(String ip,String mysqldatabase){
public static Connection getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("驱动加载好了");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ss?useSSL=false","root","li19961102");
System.out.println("数据库连接好了");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return conn;
}
/**2.
* 关闭,释放资源的方法close (若不存在使用下列资源,传递参数为null即可,通过JDBCUtil.close()关闭资源)
* rs 为结果集,通过JDBC查到的结果集,使用后需关闭释放资源
* stmt 为开启的sql语句
* connection 为jdbc的连接
* */
public static void close(ResultSet rs, Statement stmt, Connection connection){
//栈式关闭(最先连接,最后关闭连接)
try{
//关闭结果集
if(rs!=null) rs.close();
}catch (SQLException e){
e.printStackTrace();
}
try{
//关闭sql语句
if(ps!=null) ps.close();
if(stmt!=null) stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
try{
//关闭连接
if(connection!=null) connection.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
使用这个操作工具类
加载驱动,创建连接
Connection conn = new jdbcUtil().getConnection();
关闭流
finally {
new jdbcUtil().close(rs,ps,conn);
}
*** JDBC插入数据返回生成的主键ID***
ps = conn.prepareStatement("insert into shop (shop_name,create_time,address) value (?,?,?)",RETURN_GENERATED_KEYS);
ps.setString(1,shopName);
ps.setString(2,createDate);
ps.setString(3,address);
ps.executeUpdate();
// JDBC插入数据返回生成的主键ID
rs = ps.getGeneratedKeys();//获得主键的自增Id
if (rs.next()){
shopId = rs.getInt(1);//Id在结果集中的第一位
}
模糊查询
ps = conn.prepareStatement("select count(*) as count from user where user_name like ? and gender like ? and phone like ?");
ps.setString(1,"%"+userName+"%");
ps.setString(2,"%"+gender+"%");
ps.setString(3,"%"+phone+"%");
rs_count = ps.executeQuery();
分页查询,一页10条记录
// count 只需要一次 (page-1)*10 做分页
ps1 = conn.prepareStatement("select * from user where user_name like ? and gender like ? and phone like ? order by user_id desc limit "+(page-1)*10 + ",10");
ps1.setString(1,"%"+userName+"%");
ps1.setString(2,"%"+gender+"%");
ps1.setString(3,"%"+phone+"%");
rs_user = ps1.executeQuery();
将查询的信息以{“msg”:“成功/失败”,“code”:0,“data”:[“XX”:“xx”,“XX”:“xx”…]}格式传输
List<