一、服务器端实现
(1)创建动态服务器项目
个部分代码如下:
package com.lc.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionUtil { /** * 打开连接 * * @return */ public static Connection open() { // 1.url // 2.driver // 3.username // 4.password // 配置文件xml 属性文件Properties String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/wiressorder?useUnicode=true&characterEncoding=gbk"; String username = "xuuu"; String password = "1234567890"; try { Class.forName(driver); return DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return null; } /** * 关闭连接 * * @param conn */ public static void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
package com.lc.dao; /* * 对应数据库中的user表 * * Entity Class或者是JavaBean---UserTabl ORM */ public class User { private String username; private String password; private int id; /* * 无参的构造方法 */ public User() { super(); } /* * 有参的构造方法 */ public User(String username, String password, int id) { super(); this.username = username; this.password = password; this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
package com.lc.dao; /* * UserDao接口 * * 定义于User有关的方法 */ public interface UserDao { // 实现用户登录 public User login(String username, String password); }
package com.lc.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /* * 用于实现UserDao中定义的方法 * * 接口的实现类 */ public class UserDaoImpl implements UserDao { @Override public User login(String username, String password) { Connection connection = ConnectionUtil.open(); String sql = "select id,username,password from UserTbl where username=? and password=?"; try { // 预查寻 PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { int id = rs.getInt(1); // 获得一个用户的id User user = new User(); // 设置数据 user.setId(id); user.setUsername(username); user.setPassword(password); return user; } } catch (SQLException e) { e.printStackTrace(); }finally{ ConnectionUtil.close(connection); } return null; } }
package com.lc.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.lc.dao.User; import com.lc.dao.UserDao; import com.lc.dao.UserDaoImpl; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); // 都执行dopost } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf8"); // 设置编码方式 PrintWriter out = response.getWriter(); // 获得登录的请求信息 String username = request.getParameter("username"); String password = request.getParameter("password"); // 打印出来测试:http://localhost:8080/WiressOrderServer/LoginServlet?username=tom&password=123 // System.out.println("username:" + username + "password:" + password); UserDao userDao = new UserDaoImpl(); User user = userDao.login(username, password); if (user != null) { System.out.println("username:" + user.getUsername() + "password:"+ user.getPassword()); out.println("username:" + user.getUsername() + "password:"+ user.getPassword()); } else { System.out.println("没有你所要的用户,登录失败!"); out.println("没有你所要的用户,登录失败!"); } out.flush(); out.close(); } }
二、客户端实现
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login_password" /> <EditText android:id="@+id/ed_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/tv_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login_username" /> <EditText android:id="@+id/ed_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" > <requestFocus /> </EditText> </LinearLayout> <Button android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login_loginbutton" /> </LinearLayout>
package com.xuliugen.wiressorderclient; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; public class HttpUtil { public static String doPost(String url, List<NameValuePair> list) { HttpPost post = new HttpPost(url); HttpEntity entity = null; if (list != null) { try { entity = new UrlEncodedFormEntity(list, "gbk"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } post.setEntity(entity); } HttpClient client = new DefaultHttpClient(); try { HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { String result = EntityUtils.toString(response.getEntity()); // save SharedPre... result = new String(result.getBytes("iso-8859-1"), "gbk"); System.out.println(result); return result; } } catch (IOException e) { e.printStackTrace(); } return null; } }
package com.xuliugen.wiressorderclient; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity { private EditText usernameEditText, passwordEditText; private Button login_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); usernameEditText = (EditText) this.findViewById(R.id.ed_username); passwordEditText = (EditText) this.findViewById(R.id.ed_password); login_button = (Button) this.findViewById(R.id.login_button); login_button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String url = "http://172.23.252.89:8080/WiressOrderServer/LoginServlet"; // 执行异步任务 new MyTask().execute(url); } }); } String doLogin(String url) { String username = usernameEditText.getText().toString(); String password = passwordEditText.getText().toString(); // 1.apache client List<NameValuePair> list = new ArrayList<NameValuePair>(); NameValuePair p1 = new BasicNameValuePair("username", username); NameValuePair p2 = new BasicNameValuePair("password", password); list.add(p1); list.add(p2); String msg = HttpUtil.doPost(url, list); return msg; } // 多线程的使用:hander、Asynctask class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { String url = params[0]; String result = doLogin(url); return result; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); // 1.保存信息 Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT) .show(); } } }
时间: 2024-08-08 17:16:24