我正在JSP中开发一个Web应用程序。对于同一个项目,我正在开发一款Android应用。 Web应用程序使用Apache Tomcat和MySQL。现在我想制作与同一MySQL数据库接口的Android应用程序的注册表和登录表。但是如何?
我找到了很多教程,但都使用PHP脚本。我使用Eclipse进行Web开发,使用Android Studio进行Android应用。
答案 0 :(得分:0)
这将涉及至少4个步骤
创建一个代表您数据的POJO。
public class LoginData implements Serializable{
public String loginName;
public String loginPassword;
//all other attributes that you need to send over HTTP
}
创建简单的HTTP客户端(使用Java API,Apache HTTP客户端或其他一些库)。我的例子是使用Apache
//您只需要一个客户端,因此请将其设为静态
public static DefaultHttpClient getHttpClient(int timeout) {
DefaultHttpClient client = null;
SchemeRegistry Current_Scheme = new SchemeRegistry();
Current_Scheme.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
HttpParams Current_Params = new BasicHttpParams();
//set initial params
HttpConnectionParams.setConnectionTimeout(Current_Params, timeout);
HttpConnectionParams.setSoTimeout(Current_Params, timeout);
ThreadSafeClientConnManager Current_Manager = new ThreadSafeClientConnManager(Current_Params, Current_Scheme);
client = new DefaultHttpClient(Current_Manager, Current_Params);
return client;
}
为了发送你的POJO,你应该先将它序列化(第一个参数是Object,这样它就可以接受任何类型,而不仅仅是LoginData) //数据将以这种方式格式化为application / x-www-form(BTW,Web应用程序默认使用此方式)
HttpEntity serializePOJO(Object o,String encoding)
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
Map<String, Object> maps=objectMapper.convertValue(o, Map.class);
Set<String> keys=maps.keySet();
Iterator<String> itr=keys.iterator();
while(itr.hasNext()){
String key=itr.next();
Object value=maps.get(key);
if(value!=null){
postParams.add(new BasicNameValuePair(key, value.toString()));
}
}
UrlEncodedFormEntity data=null;
try {
data = new UrlEncodedFormEntity(postParams,encoding);//e.g.UTF-8
} catch (UnsupportedEncodingException e) {
throw e;
}
return data;
}
发出HTTP请求
public void checkLogin(LoginData data)throws Exception
{
String url = "localhost:8080/myApp/login";
HttpPost request=null;
try{
request=new HttpPost(url);
request.setEntity(serializePOJO(data));
HttpResponse response=getHttpClient(10000).execute(hg);
if(response.getStatusLine().getStatusCode()!=200){
//handle exception
}
}finally{
if(request!=null){
request.releaseConnection();
}
}
}
您可以将objectMapper初始化为
objectMapper=new ObjectMapper();
objectMapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
您的servlet应该连接到数据库并执行所有处理,而不是JSP页面。