软件工程
第一个android项目
`
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Ddemo2"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
package com.example.ddemo2;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.textfield.TextInputEditText;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private TextInputEditText etCourseName;
private AutoCompleteTextView actvTeacher;
private TextInputEditText etLocation;
private Button btnSave;
private OkHttpClient client = new OkHttpClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化视图
etCourseName = findViewById(R.id.et_course_name);
actvTeacher = findViewById(R.id.actv_teacher);
etLocation = findViewById(R.id.et_location);
btnSave = findViewById(R.id.btn_save);
// 配置教师下拉菜单
String[] teachers = {"王建民", "刘丹", "杨子光", "张云霞", "武永亮", "刘立嘉", "高飞", "孙静", "黄荣峰"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(
this,
R.layout.dropdown_item,
teachers
);
actvTeacher.setAdapter(adapter);
// 保存按钮点击事件
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveCourse();
}
});
}
private void saveCourse() {
String courseName = etCourseName.getText().toString().trim();
String teacher = actvTeacher.getText().toString().trim();
String location = etLocation.getText().toString().trim();
if (courseName.isEmpty() || teacher.isEmpty() || location.isEmpty()) {
Toast.makeText(this, "请填写所有字段", Toast.LENGTH_SHORT).show();
return;
}
// 创建请求体
RequestBody formBody = new FormBody.Builder()
.add("classname", courseName)
.add("teacher", teacher)
.add("spot", location)
.build();
// 创建请求
Request request = new Request.Builder()
.url("http://192.168.170.105:8080/class2_war_exploded/addservlet") // 替换为你的服务器 URL
.post(formBody)
.build();
System.out.println("Sending request to: " + request.url());
// 发送请求
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "请求失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
System.out.println("Request failed: " + e.getMessage());
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
final String responseData = response.body().string();
System.out.println("Response successful: " + responseData);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
clearForm();
}
});
} else {
System.out.println("Request failed with code: " + response.code());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "请求失败: " + response.code(), Toast.LENGTH_SHORT).show();
}
});
}
}
});
}
private void clearForm() {
etCourseName.getText().clear();
actvTeacher.getText().clear();
etLocation.getText().clear();
}
}
`
``

浙公网安备 33010602011771号