废话不多说,直接上代码。
一、服务端
1、使用连接MySQL数据库,具体配置如下:
在项目根目录下创建配置文件conf.mxl;代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdemo" />
<property name="username" value="root" />
<property name="password" value="yizeng" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件-->
<mapper resource="com/zy/mapping/userMapper.xml" />
</mappers>
</configuration>
2、配置mapper的方法,只要实现了数据库的增删查改功能;
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.test.UserService">
<!-- id和parameterType分别与UserService接口中的addUser方法的名字和参数类型必须一致。 -->
<!-- 根据id查询得到一个user对象 -->
<select id="selectUserById" parameterType="int" resultType="com.zy.bean.User">
select * from login where id=#{id}#
</select>
<select id="selectUsersByName" parameterType="string" resultType="com.zy.bean.User">
select * from login where name=#{name}#
</select>
<!--执行增加操作的SQL语句。
useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;
keyProperty="id"指定把获取到的主键值注入到User的id属性-->
<insert id="addUser" parameterType="com.zy.bean.User"
useGeneratedKeys="true" keyProperty="id">
insert into login(name,password)
values(#{name},#{password})
</insert>
<update id="updateUser" parameterType="com.zy.bean.User" >
update login set name=#{name},password=#{password} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from login where id=#{id}
</delete>
</mapper>
其中UserService.java是方便数据库查询而写的一个增删查改的一个接口
public User selectUserById(int id);//根据id查询用户信息
public List<User> 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<String, String> map = new HashMap<String, String>();
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<User> 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<String>() {
@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<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<>();
map.put("name", name.getText().toString());
map.put("password", password.getText().toString().trim());
return map;
}
};
mQueue.add(request);
}
我主要实现了注册和登陆这连个功能的,经本人测试,成功;
附上服务器代码:点击打开链接