使用MySQL和Servlet编写Android接口样例

废话不多说,直接上代码。

一、服务端



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);
    }
我主要实现了注册和登陆这连个功能的,经本人测试,成功;

附上服务器代码:点击打开链接

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值