废话不多说,直接上代码。
一、服务端
1、使用
连接MySQL数据库,具体配置如下:
在项目根目录下创建配置文件conf.mxl;代码如下:
2、配置mapper的方法,只要实现了数据库的增删查改功能;
select * from login where id=#{id}#
select * from login where name=#{name}#
useGeneratedKeys="true" keyProperty="id">
insert into login(name,password)
values(#{name},#{password})
update login set name=#{name},password=#{password} where id=#{id}
delete from login where id=#{id}
其中UserService.java是方便数据库查询而写的一个增删查改的一个接口
public User selectUserById(int id);//根据id查询用户信息
public List selectUsersByName(String userName);//根据用户名查询用户信息
public void addUser(User user);//插入用户
public void updateUser(User user);//更新用户
public void deleteUser(int id);//删除用户最后就是直接新建servlet,响应客户端,返回json就可以了,下面是Login的servlet:
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
private static SqlSessionFactory sqlSessionFactory;
static {
try {
// mybatis的配置文件
String resource = "conf.xml";
// 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Test2.class.getClassLoader().getResourceAsStream(
resource);
// 构建sqlSession的工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
Map map = new HashMap();
JSONObject jsonObject = new JSONObject();
String name = request.getParameter("name");
String password = request.getParameter("password").trim();
if (Login.getUserList(name, password)) {
map.put("message", "成功");
map.put("code", "100");
map.put("name", name);
map.put("password", password);
jsonObject.put("map", map);
out.write(jsonObject.toString());
} else {
map.put("message", "参数错误");
map.put("code", "101");
map.put("name", name);
map.put("password", password);
jsonObject.put("map", map);
out.write(jsonObject.toString());
}
}
@Override
public void destroy() {
super.destroy();
}
public static boolean getUserList(String userName, String password) {
SqlSession session = sqlSessionFactory.openSession();
try {
UserService userService = session.getMapper(UserService.class);
List users = userService.selectUsersByName(userName);
for (User user : users) {
if (user.getPassword().equals(password)) {
return true;
}
}
} finally {
session.close();
}
return false;
}
}
二、客户端就更简单了,
为了方便我直接使用volley请求的,
private void Login() {
String url = "http://192.168.56.1:8080/TestLogin/Login";
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener() {
@Override
public void onResponse(String response) {
Log.e("response", response);
JSONObject jsonObject;
try {
jsonObject = new JSONObject(response);
JSONObject jsonObject1 = jsonObject.getJSONObject("map");
String message = jsonObject1.getString("message");
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, null) {
@Override
protected Map getParams() throws AuthFailureError {
Map map = new HashMap<>();
map.put("name", name.getText().toString());
map.put("password", password.getText().toString().trim());
return map;
}
};
mQueue.add(request);
}我主要实现了注册和登陆这连个功能的,经本人测试,成功;
附上服务器代码:点击打开链接