使用MySQL和Servlet编写Android接口样例
16lz
2021-01-26
废话不多说,直接上代码。
一、服务端
1、使用连接MySQL数据库,具体配置如下:
在项目根目录下创建配置文件conf.mxl;代码如下:
<?xml version="1.0" encoding="UTF-8"?>
2、配置mapper的方法,只要实现了数据库的增删查改功能; <?xml version="1.0" encoding="UTF-8" ?> 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();}@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 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());}}@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 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); }
我主要实现了注册和登陆这连个功能的,经本人测试,成功; 附上服务器代码:点击打开链接
更多相关文章
- Develop--Training(七)Getting Started--支持不同的设备
- 【Android】Handler应用(二):从服务器端加载JSON数据的优化
- 安卓通过recyclerview进行全表增删改查
- Android(安卓)学习笔记1
- Android(安卓)Studio 环境搭建、配置和基本使用
- FileProvider的使用
- Appium环境搭建教程
- Android(安卓)studio 如何引用aar
- Android(安卓)任务模式注意点