后台开发

后台开发:
作为app 提供数据,业务管理。
1.创建工程springBoot
1.1下载开发IntellijIdE:百度;
1.2配置环境:jdk maven
1.3创建project :选择springIntiazer ;官网:创建工程;
2.创建工程结构
1.entriy:输出表
2.controller:做请求
3.service:做业务
4.common:放置通用的一些东西
5.dao
3.测试接口工具
postman:
4.Android 客户端
1.创建http通信工具类

package com.imau.studentcms; 
import com.alibaba.fastjson.JSON; 
import com.google.gson.Gson; 
import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.InputStream; 
import java.io.InputStreamReader;
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.HashMap; 
public class MyHttpUtil { 
private static final int TIME_OUT=5000; 
private static URL url; 
private static HttpURLConnection connection; 
private static InputStream inputStream; public static void doGet(final String urlStr,final HttpCallbackListener listener){
 new Thread(new Runnable() { 
 @Override 
 public void run() {
  try {
  StringBuffer data=new StringBuffer(); 
  String line; 
  //1.构建请求地址 
  url=new URL(urlStr); 
  //2.建立连接 
  connection= (HttpURLConnection) url.openConnection(); 
  //3.设置请求信息 
  connection.setConnectTimeout(TIME_OUT); 
  connection.setRequestMethod("GET"); 
  //4.判断请求连接状态 
  if(connection.getResponseCode()==200) 
  { 
  //5.处理响应内容 
  inputStream=connection.getInputStream(); 
  InputStreamReader isr=new 
  InputStreamReader(inputStream,"utf-8"); 
  BufferedReader reader=new BufferedReader(isr); 
  while((line=reader.readLine())!=null) {
   data.append(line); 
   }
   //6.数据返回:写一个接口回调接口,消息通知 
   if(listener!=null){
    listener.onFinsh(data.toString()); 
    }


} 
}catch (Exception e){ 
e.printStackTrace(); 
}finally {
 if(connection!=null){ 
 connection.disconnect(); 
 } 
 } 
 } 
 }).start(); 
 }
 public static void doPost(final String urlStr,final HashMap<String, Object> params, final HttpCallbackListener listener){
  new Thread(new Runnable() {
   @Override 
   public void run() { 
   try {
   StringBuffer data=new StringBuffer(); 
   //1.参数转换json 
   String strEntity = JSON.toJSONString(params); 
   String line; 
   //1.构建请求地址 
   url=new URL(urlStr); 
   //2.建立连接 
   connection= (HttpURLConnection) url.openConnection(); 
   //3.设置请求信息 
   connection.setConnectTimeout(TIME_OUT); 
   connection.setRequestMethod("POST"); 
   connection.setRequestProperty("Content-Type", "application/json");
   //使用的是json请求类型 
   connection.setRequestProperty("Content-Length", strEntity.length()+""); 
   connection.setDoInput(true); 
   connection.setDoOutput(true); 
   //将参数写入到后台 
connection.getOutputStream().write(strEntity.getBytes()); 
//4.判断请求连接状态 
if(connection.getResponseCode()==200) 
{
 
 //5.处理响应内容 
 inputStream=connection.getInputStream(); 
 InputStreamReader isr=new InputStreamReader(inputStream,"utf-8");


BufferedReader reader=new BufferedReader(isr); 
while((line=reader.readLine())!=null) 
{ 
data.append(line); 
}
//6.数据返回:写一个接口回调接口,消息通知 
if(listener!=null){
 listener.onFinsh(data.toString()); 
 } 
 } 
 }catch (Exception e){ 
 e.printStackTrace();
  }finally { 
  if(connection!=null){
   connection.disconnect(); 
   } 
   } 
   } 
   }).start(); 
   }
   public interface HttpCallbackListener{ 
   //写一个成功回调方法 
   public void onFinsh(String response); 
   //失败回调方法 
   } 
   }


2.两个Activity
登录activity
学生管理主界面

package com.imau.studentcms; 
import androidx.annotation.NonNull; 
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.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.JSONArray; 
import com.alibaba.fastjson.JSONObject; 
import com.google.gson.JsonArray;
import com.google.gson.JsonObject; 
import java.util.HashMap; 
public class MainActivity extends AppCompatActivity { 
private EditText uname; 
private EditText upass; 
private Handler handler=new Handler(){ 
@Override 
public void handleMessage(@NonNull Message msg) { 
super.handleMessage(msg); 
if((Integer) msg.obj==10000){ 
Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); 
}else{
Toast.makeText(MainActivity.this,"用户名密码错误,重新输 入",Toast.LENGTH_LONG).show(); 
} 
} 
};
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
uname=findViewById(R.id.name); 
upass=findViewById(R.id.pass); 
}
//登录按钮事件方法 
public void login(View view){ 
//1.获取输入用户名密码 
String name=uname.getText().toString(); 
String pass=upass.getText().toString(); 
//2.验证输入.... 
if("".equals(name)||name==null){
 Toast.makeText(MainActivity.this,"请输入用户 名",Toast.LENGTH_LONG).show();
  uname.setFocusable(true); 
  }else if("".equals(pass)||pass==null){
Toast.makeText(MainActivity.this,"请输入密 码",Toast.LENGTH_LONG).show();
 upass.setFocusable(true); 
 }else{
 //3.请求后台:用户名 密码查询用户名 
 HashMap<String,Object> params=new HashMap<>(); 
 params.put("uname",name); 
 params.put("upass",pass); 
 //访问地址:本地的电脑:localhost 10.0.2.2 
MyHttpUtil.doPost("http://10.0.2.2:8008/user/login", params,new MyHttpUtil.HttpCallbackListener() { 
@Override 
public void onFinsh(String response) { 
System.out.println(response); 
//4.解析后台数据:
 //普通json串解析; 
 //定义一个服务后台一致的实体类;对象解析 
 JSONObject obj =JSON.parseObject(response); 
 int code= obj.getInteger("code"); 
 //发送消息 
 Message message=new Message(); 
 //判断 
 if(code==10000){ 
 message.what=1; 
 message.obj=10000; 
 }else{
 message.what=1; 
 message.obj=10001; 
 }
 handler.sendMessage(message); 
 } 
 }); 
     } 
   } 
 }
 package com.imau.studentcms;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
 import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.imau.Adapter.StudentAdapter;
import com.imau.Dialog.MyDialog;
import com.imau.entitry.Student;
import com.imau.util.MyHandler;
import com.imau.util.MyHttpUtil;
import java.util.ArrayList;
import java.util.List;
public class Main2Activity extends AppCompatActivity 
{
private ListView listView;
private StudentAdapter adapter;
private List<Student> stus=new ArrayList<>();
private ImageView add;
private int pageNo=0;
private Handler handler=new Handler(){
@Override
    public void handleMessage(@NonNull Message msg) {
    super.handleMessage(msg);
    JSONArray data= (JSONArray) msg.obj;
    //清空集合
        stus.clear();
    //遍历数组
        for (int i=0;i<data.size();++i){
            Student student= data.getObject(i,Student.class);
    //存放到stus集合中
  stus.add(student);
        }
    if(msg.what==10){
    //加载数据
    adapter.addAll(stus);
            adapter.notifyDataSetChanged();
        }else{
        init();
        }
        }
        };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    initStus();
    }
 //初始化学生列表信息
 private void initStus(){
 MyHttpUtil.doGet("http://10.0.2.2:8008/student/page/"+pageNo+"/10",new MyHttpUtil.HttpCallbackListener(){
 @Override
 public void onFinsh(String response) {
 System.out.println(response);
 //解析后台服务json数据
 JSONObject obj = JSON.parseObject(response);
            int code= obj.getInteger("code");
  // 判断成功
if(code==10000){
    //解析json数组
                JSONArray data = obj.getJSONArray("data");
     Message message=new Message();
                message.obj=data;
                handler.sendMessage(message);
                }
}
});
}
private void init(){
 add=findViewById(R.id.add);
   add.setOnClickListener(new MyListener());
   listView=findViewById(R.id.lv);               
 adapter=new StudentAdapter(Main2Activity.this,R.layout.stu_layout,stus);
 listView.setAdapter(adapter);
 //分页动态加载事件
 listView.setOnScrollListener(new MyListener());
 }
 class MyListener implements View.OnClickListener, AbsListView.OnScrollListener {
 @Override
 public void onClick(View v) {
 MyDialog dialog=null;
 //1.创建对话框
 MyDialog.Builder builder=new MyDialog.Builder(Main2Activity.this ,null);
 builder.setPositiveButton("确定", new MyDialog.OnClickListener() {
 @Override
public void onClick(Dialog dialog,Student student) {
MyHttpUtil.doPost("http://10.0.2.2:8008/student/save" , student,new MyHttpUtil.HttpCallbackListener() {
@Override
public void onFinsh(String response) {
System.out.println(response);
//解析后台服务json数据
JSONObject obj = JSON.parseObject(response);
int code= obj.getInteger("code");
// 判断成功
if(code==10000){
   }
  }
});
Toast.makeText(Main2Activity.this,"添加成功!",Toast.LENGTH_LONG).show();
dialog.cancel();
}
});
dialog=builder.create();
dialog.show();
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState==0){
pageNo++;
MyHttpUtil.doGet("http://10.0.2.2:8008/student/page/"+pageNo+"/10",new MyHttpUtil.HttpCallbackListener(){
@Override
public void onFinsh(String response) {
//解析后台服务json数据
JSONObject obj = JSON.parseObject(response);
int code= obj.getInteger("code");
// 判断成功
if(code==10000){
//解析json数组
JSONArray data = obj.getJSONArray("data");
Message message=new Message();
message.what=10;
message.obj=data;
handler.sendMessage(message);
          }
         }
       });
       }
       }
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    }
  }       
   
package com.imau.util;
import android.os.Handler;
import android.os.Message;
import androidx.annotation.NonNull;
import com.imau.studentcms.MainActivity;
public class MyHandler extends Handler {
public static Object data;
private static MyHandler handler;
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what==RequestCode.LOGINI){
data=msg.obj;
  }
}
private MyHandler(){
}
public static  MyHandler getInstance(){
if(handler==null){
handler=new MyHandler();
    }
    return handler;
 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值