Tomcat__实现简单的登陆功能

服务器端

     1)新建一个Dynamic Web Project ,在其中新建一个Servlet   继承HttpServlet


      2)代码如下:

/**
 * Servlet implementation class UserServlet
 */
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String userName=request.getParameter("userName");
		String passWord=request.getParameter("passWord");
		//在服务器端解决中文乱码问题  这个未弄懂
//		userName=NewString.getNewString(userName);
//		passWord=NewString.getNewString(passWord); 
		System.out.println("账号:"+userName);
		System.out.println("密码:"+passWord);		}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
		}
}

  手机端

MainActivity.java

public class MainActivity extends Activity {
	private EditText user_name, user_password;
	private Button button_login;;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		user_name = (EditText) findViewById(R.id.user_name);
		user_password = (EditText) findViewById(R.id.user_password);
		button_login = (Button) findViewById(R.id.button_login);

		button_login.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				new LoginAsync().execute();
			}
		});
	}
	class Login_Click implements OnClickListener{
		@Override
		public void onClick(View v) {
			new LoginAsync().execute();
		}		
	}

	class LoginAsync extends AsyncTask<Void, Void, Boolean> {
		@Override
		protected Boolean doInBackground(Void... params) {
			// 取得用户输入的账号和密码
			String name = user_name.getText().toString();
			String pass = user_password.getText().toString();
			boolean result = UserService.check(name, pass);
			return result;
		}

		@Override
		protected void onPostExecute(Boolean resultBoolean) {
			super.onPostExecute(resultBoolean);
			//下面涉及到UI方面  千万不要放在doInBackground 就是这样折腾了半天
			if (resultBoolean) {
				Toast.makeText(getApplicationContext(), "success", 1).show();
			} else {
				Toast.makeText(getApplicationContext(), "fail", 1).show();
			}
		}
	}

	public static class UserService {
		/**
		 * 验证用户登录是否合法 返回值:请求是否成功
		 */
		public static boolean check(String name, String pass) {
			String path = "http://10.0.2.2:8080/ServerForLogin/UserServlet";
			// 将用户名和密码放入HashMap中
			Map<String, String> params = new HashMap<String, String>();
			params.put("userName", name);
			params.put("passWord", pass);
			try {
				return sendGETRequest(path, params, "UTF-8");
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return false;
		}

		private static boolean sendGETRequest(String path,
				Map<String, String> params, String encode)
				throws MalformedURLException, IOException {
			StringBuilder url = new StringBuilder(path);
			url.append("?");
			for (Map.Entry<String, String> entry : params.entrySet()) {
				url.append(entry.getKey()).append("=");
				url.append(URLEncoder.encode(entry.getValue(), encode));//和中文乱码有关  未弄懂
				url.append("&");
			}
			// 删掉最后一个&
			url.deleteCharAt(url.length() - 1);
			HttpURLConnection conn = (HttpURLConnection) new URL(url.toString())
					.openConnection();
			conn.setConnectTimeout(5000);
			conn.setRequestMethod("GET");
			if (conn.getResponseCode() == 200) {
				return true;
			}
			return false;
		}
	}
}

acitivyt_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用 户 名 : " />

        <EditText
            android:id="@+id/user_name"
            android:layout_width="100dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=" 密    碼 : " />

        <EditText
            android:id="@+id/user_password"
            android:layout_width="100dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" 登  陸  "
        android:id="@+id/button_login"
        android:layout_gravity="center"  />
</LinearLayout>

             小记:

   1)记得在AndroidManifest.xml中 增加<uses-permission android:name="android.permission.INTERNET" />

   2)测试前 先打开Tomcat  看看能否用浏览器打开服务器端的Servlet文件

   3)URL 请求格式为:    http://域名/?key1=value1&key2=value2   ?隔开域名与传给服务器的参数    &隔开各个参数   =连接参数的key和value

       服务器端 用request.getParameter("key")获取参数的vlaue

截图:

                                           


参考自博文:http://blog.csdn.net/lissdy/article/details/8114364

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值