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

来源:互联网 发布:js toggle() 编辑:程序博客网 时间:2024/06/05 16:24

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

一、服务端



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();}@Overridepublic void init() throws ServletException {// TODO Auto-generated method stubsuper.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());}}@Overridepublic 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);    }
我主要实现了注册和登陆这连个功能的,经本人测试,成功;

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

1 0
原创粉丝点击