这是一个实现在客户端登陆的例子 代码来源http://www.oschina.net/code/snippet_203635_8869
内容包含:HttpURLConnection
,Alertdialog对话框,mvc设计,url传递参数
服务器端代码:
package com.edu.qufu.dinner.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;
public class LoginServlet extends HttpServlet{
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,
IOException{
String username = request.getParameter("username");//从request中获得名字we“username”的数据
String password = request.getParameter("password");//从request中获取名字为“password”的数据
System.out.println(username+":"+password);
response.setContentType("text/html"); //设置响应数据的属性,类型
response.setCharacterEncoding("utf-8"); //设置响应数据的属性,编码方式
PrintWriter out = response.getWriter(); //http://www.cnblogs.com/xiaoqv/archive/2012/05/14/2500725.html
String msg = null;
if(username != null && username.equals("antkingwei") && password != null && password.equals("123")){
//<span style="color:#FF0000;">为什么要判断username与password为空?只判断username是antkingwei,password是123不就行了吗?</span>
msg="登录成功";
}
else {
msg = "登录失败";
}
out.print(msg); //http://www.cnblogs.com/xiaoqv/archive/2012/05/14/2500725.html 向客户端或浏览器写msg
out.flush();
out.close();
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
doGet(request,response);
}
}
我这菜鸟了解一下servlet,看一些文件的结构
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FoodServlet</servlet-name>
<servlet-class>com.edu.qufu.dinner.servlet.FoodServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FoodServlet</servlet-name>
<url-pattern>/FoodServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.edu.qufu.dinner.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
android客户端代码
package com.android.antking.http.url.connection;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class LoginActivity extends Activity {
//声明用到的组件
private Button login,cancel;
private EditText userName,userPassword;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//事例画所有控件
login = (Button)this.findViewById(R.id.yes);
cancel = (Button)this.findViewById(R.id.no);
userName = (EditText)this.findViewById(R.id.username);
userPassword = (EditText)this.findViewById(R.id.userpassword);
//给按钮添加监听事件
//----------------------------------------------------------------------------------------------
login.setOnClickListener(onClickListenr);//要注册监听器
cancel.setOnClickListener(onClickListenr);
}
/**
* 按钮监听类,处理按钮事件
*/
private View.OnClickListener onClickListenr = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.yes){
String nameString = userName.getText().toString();
String password = userPassword.getText().toString();
login(nameString,password);
}
if(v.getId()==R.id.no){
LoginActivity.this.finish();
}
}
};
//---------------------------------------------------------------------------------------------------------------
/**
* 自定义一个消息提示窗口
* @param msg
*/
private void showDialog(String msg){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(msg).setCancelable(false).setPositiveButton("确定", //对话框内容msg,没有取消按钮,有确定按钮,确定按钮文字为“确定”
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// TODO Auto-generated method stub
}
});
AlertDialog alert = builder.create(); //这里才是创建一个对话框对象
alert.show();
}
private void login(String username,String password){
//要访问的HttpServlet
String urlStr="http://192.168.1.100:8080/DinnerClick/LoginServlet?"; //<span style="color:#FF0000;">Url中路径与数据的结构?如何解析路径中的数据?</span>
//要传递的数据
String query = "username="+username+"&password="+password;
urlStr+=query;
try{
URL url =new URL(urlStr);
//获得连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
if(true){
//获得输入流
InputStream in = conn.getInputStream(); //从服务器端得到数据
//创建一个缓冲字节数
byte[] buffer = new byte[in.available()];
//在输入流中读取数据并存放到缓冲字节数组中
in.read(buffer);
//将字节转换成字符串
String msg = new String(buffer);
showDialog(msg); //数据库中的msg
in.close();//关闭数据流
}
else{
//否则就关闭连接
conn.disconnect();
showDialog("连接失败");
}
}catch(Exception e){
showDialog(e.getMessage());
}
}
}
看到这里也许也可以对mvc模式有一点了解
客户端发送请求(一个特定的路经或者jsp)————》servlet中有该jsp对应的方法————》调用对应的方法