android如何向servlet传两个String类型数据再接收该servlet传回的数据完成登录功能完整代码
时间: 2024-03-26 14:38:01 浏览: 11
以下是一个简单的Android应用程序示例,该应用程序向Servlet传递两个字符串类型的数据,然后接收Servlet返回的数据以完成登录功能。
Android端代码(MainActivity.java):
```java
public class MainActivity extends AppCompatActivity {
private EditText mUsernameEditText;
private EditText mPasswordEditText;
private Button mLoginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUsernameEditText = findViewById(R.id.username_edit_text);
mPasswordEditText = findViewById(R.id.password_edit_text);
mLoginButton = findViewById(R.id.login_button);
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = mUsernameEditText.getText().toString();
String password = mPasswordEditText.getText().toString();
// 开启一个异步任务向Servlet传递数据
new LoginTask().execute(username, password);
}
});
}
// 定义一个异步任务用于向Servlet传递数据并接收返回数据
private class LoginTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String username = params[0];
String password = params[1];
String result = "";
try {
// 创建一个URL对象
URL url = new URL("http://your_servlet_url");
// 创建一个HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
// 构造请求参数
String data = "username=" + URLEncoder.encode(username, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8");
// 设置请求参数
OutputStream outputStream = connection.getOutputStream();
outputStream.write(data.getBytes());
outputStream.flush();
outputStream.close();
// 读取Servlet返回的数据
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line;
while ((line = bufferedReader.readLine()) != null) {
result += line;
}
bufferedReader.close();
inputStream.close();
// 断开连接
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result) {
// 处理Servlet返回的数据
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
}
}
```
Servlet端代码:
```java
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 读取请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
// 处理登录逻辑
String result = "";
if (username.equals("admin") && password.equals("123456")) {
result = "登录成功";
} else {
result = "登录失败";
}
// 设置响应编码
response.setContentType("text/plain;charset=UTF-8");
// 将结果返回给客户端
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
}
}
```
注意替换Android端代码中的"http://your_servlet_url"为您自己的Servlet的URL。在Servlet端代码中,您可以根据实际情况修改登录逻辑以及返回结果。