Android Studio 实现实现学生信息的查询 -源代码 三(Servlet + 连接MySql数据库) (JSON通信)
发布日期:2021-06-29 15:04:23
浏览次数:2
分类:技术文章
本文共 13930 字,大约阅读时间需要 46 分钟。
一、在数据库当中创建学生信息表
SQL语句:/*Navicat MySQL Data TransferSource Server : localhost_3306Source Server Version : 50562Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50562File Encoding : 65001Date: 2021-05-17 16:14:29*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `student`-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `address` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;-- ------------------------------ Records of student-- ----------------------------INSERT INTO `student` VALUES ('1', 'andy', '21', '北京');INSERT INTO `student` VALUES ('2', 'aaa', '22', '上海');INSERT INTO `student` VALUES ('3', 'asdc', '34', '大连');INSERT INTO `student` VALUES ('4', '张三', '20', '北京');-- ------------------------------ Table structure for `users`-- ----------------------------DROP TABLE IF EXISTS `users`;CREATE TABLE `users` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `age` int(255) NOT NULL, `phone` longblob NOT NULL, PRIMARY KEY (`uid`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;-- ------------------------------ Records of users-- ----------------------------INSERT INTO `users` VALUES ('2', '123', 'HBV环保局', '123', '33', 0x3133333333333333333333);INSERT INTO `users` VALUES ('3', '1233', '反复的', '1233', '12', 0x3132333333333333333333);INSERT INTO `users` VALUES ('4', '1244', '第三代', '1244', '12', 0x3133333333333333333333);INSERT INTO `users` VALUES ('5', '1255', 'SAS', '1255', '33', 0x3133333333333333333333);INSERT INTO `users` VALUES ('6', '122', '但是ADS', '122', '12', 0x3132323232323232323232);INSERT INTO `users` VALUES ('7', 'admin123', 'admin', '123', '45', 0x3132323232323232323232);INSERT INTO `users` VALUES ('8', 'admin123', 'admin', '123', '45', 0x3132323232323232323232);INSERT INTO `users` VALUES ('9', 'admin123', 'admin', '123', '45', 0x3132323232323232323232);INSERT INTO `users` VALUES ('10', 'admin1232', 'admin', '123', '45', 0x3132323232323232323232);INSERT INTO `users` VALUES ('11', 'admin222', '222', '2222', '222', 0x3232323232323232323232);INSERT INTO `users` VALUES ('12', 'admin123', '123', '1212', '22', 0x32313231323232323232);INSERT INTO `users` VALUES ('13', 'admin', 'admin', '2121', '33', 0x3333333333333333333333);INSERT INTO `users` VALUES ('14', '123121212', '12321212', '123', '12', 0x3132333333333333333333);
二、Android端代码
1、引入JSON相关的驱动包
切换工程目录
添加jar 切换回Android工程2、创建Student的实体类
package com.example.application01.entity;public class Student { private int id; private String name; private int age; private String address; public Student() { } public Student(int id, String name, int age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
3、创建跳转显示学生信息的页面
点击Finish完善页面信息布局
4、修改MainActivity当中的登录成功方法,设置其跳转到上述创建的页面当中
全部代码package com.example.application01;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.example.application01.dao.UserDao;import com.example.application01.utils.PostUtil;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void reg(View view){ startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); } public void login(View view){ EditText EditTextname = (EditText)findViewById(R.id.name); EditText EditTextpassword = (EditText)findViewById(R.id.password); new Thread(){ @Override public void run() { String data=""; try { data = "name="+ URLEncoder.encode(EditTextname.getText().toString(), "UTF-8")+ "&password="+ URLEncoder.encode(EditTextpassword.getText().toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String request = PostUtil.Post("LoginServlet",data); int msg = 0; if(request.equals("成功")){ msg = 1; } hand1.sendEmptyMessage(msg); } }.start(); } final Handler hand1 = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 1) { //Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_LONG).show(); startActivity(new Intent(getApplicationContext(),Student_List.class)); } else { Toast.makeText(getApplicationContext(),"登录失败",Toast.LENGTH_LONG).show(); } } };}
5、创建一个XML页面用于显示ListView内部的东西
student_list.xml
5、创建StudentAdapter
package com.example.application01;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.application01.entity.Student;import java.util.ArrayList;public class StudentAdapter extends BaseAdapter { ArrayListstudatalist = new ArrayList<>(); private Context mContext; public StudentAdapter(ArrayList sData, Context mContext) { this.sData = sData; this.mContext = mContext; } @Override public int getCount() { return sData.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(mContext).inflate(R.layout.student_list,null); TextView txt_id = (TextView) convertView.findViewById(R.id.id); TextView txt_name = (TextView) convertView.findViewById(R.id.name); TextView txt_age = (TextView) convertView.findViewById(R.id.age); TextView txt_address = (TextView) convertView.findViewById(R.id.address); txt_id.setText(sData.get(position).getId()+""); txt_name.setText(sData.get(position).getName()); txt_age.setText(sData.get(position).getAge()+""); txt_address.setText(sData.get(position).getAddress()); return convertView; }}
6、在Student_List当中实现点击搜索,并显示对应是学生列表
(1)修改activity_student_list.xnl当中的按钮
添加onClick
(2)在Student_List当中完善对应的方法
package com.example.application01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.EditText;import android.widget.ListView;import android.widget.Toast;import com.example.application01.entity.Student;import com.example.application01.utils.PostUtil;import org.json.JSONArray;import org.json.JSONObject;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.ArrayList;public class Student_List extends AppCompatActivity { EditText editTextname = null; ArrayListstudatalist = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_student__list); editTextname = findViewById(R.id.stuname); } public void findALLStudent(View view){ new Thread() { public void run() { if(studatalist != null){ studatalist.clear(); } String data=""; try { data = "name="+ URLEncoder.encode(editTextname.getText().toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String stuJson= PostUtil.Post("studentServlet",data); try { JSONArray jsonArray = new JSONArray(stuJson); for(int i = 0;i < jsonArray.length();i++){ JSONObject jsonObject = (JSONObject) jsonArray.get(i); Student student = new Student(); student.setId(jsonObject.getInt("id")); student.setName(jsonObject.getString("name")); student.setAge(jsonObject.getInt("age")); student.setAddress(jsonObject.getString("address")); studatalist.add(student); } } catch (org.json.JSONException e) { e.printStackTrace(); } /* */ hand.sendEmptyMessage(1); } }.start(); } Handler hand=new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == 1) { ListView stuList = (ListView) findViewById(R.id.stulist); StudentAdapter adapter = new StudentAdapter( studatalist, Student_List.this); stuList.setAdapter(adapter); //startActivity(new Intent( getApplicationContext(), StuInfoActivity.class ) ); } else { Toast.makeText(getApplicationContext(),"查询错误",Toast.LENGTH_LONG).show(); } } };}
三、Web端代码
1、创建Student实体类直接Android的复制即可
package entity;public class Student { private int id; private String name; private int age; private String address; public Student() { } public Student(int id, String name, int age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
2、创建对应的StudentDao查询
package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import entity.Student;public class StudentDao { public ArrayListgetStuByName(String name) { ArrayList stuList=new ArrayList (); String sql="select * from student where name like '%"+name+"%'"; Connection con=JDBCUtils.getConn(); try { PreparedStatement pst=con.prepareStatement(sql); ResultSet rs=pst.executeQuery(); while(rs.next()) { Student stu=new Student(); stu.setId(rs.getInt(1)); stu.setName(rs.getString(2)); stu.setAge(rs.getInt(3)); stu.setAddress(rs.getString(4)); stuList.add(stu); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return stuList; } }
3、在web工程当中引入JSON相关的jar
4、创建StudentServlet
package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONArray;import dao.StudentDao;import dao.UserDao;import entity.Student;public class StudentServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取请求名字 String name=request.getParameter("name"); //调用dao层 StudentDao studentDAO=new StudentDao(); ArrayListstuList=studentDAO.getStuByName(name); response.setContentType("application/x-json"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); JSONArray jsonArray = JSONArray.fromObject(stuList); out.print(jsonArray); out.flush(); out.close(); }}
四、运行测试
先启动web端代码
运行Android端代码转载地址:https://code100.blog.csdn.net/article/details/116937277 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月26日 07时07分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Centos6 搭建lnmp环境
2019-04-29
Hbase优化:使用压缩snappy,lz4
2019-04-29
maven 安装第三方jar包到本地仓库
2019-04-29
hbase数据结构模型
2019-04-29
Shell编程:return 返回脚本调用的状态码
2019-04-29
Hbase Shell 调用java代码:通过比较器,强过滤查询
2019-04-29
Linux防删除,恢复删除
2019-04-29
linux: shell脚本日常功夫
2019-04-29
linux脚本: 批量管理主机
2019-04-29
scala集合类型,函数
2019-04-29
spark: rdd的应用(scala api)
2019-04-29
spark: rdd的应用(java api)
2019-04-29
yarn: 资源调度机制
2019-04-29
spark的shell脚本分析
2019-04-29
推荐算法: 基于用户的协同过滤算法
2019-04-29
推荐算法:基于物品的协同过滤算法
2019-04-29
docker系列3:docker搭建CDH集群[单机单节点]
2019-04-29
ubuntu 16:使用系统自带的中文输入法
2019-04-29
k8s单机版[ microk8s ]
2019-04-29
docker系列6 :k8s集群[ 解压安装 ]
2019-04-29