1.请问一下大家,在移动互联网的开发中,手机端发送一个请求到后台服务器,后台处理好以后返回手机,这个请求是通过http协议发送的吗?
2.还有就是我们通常所说的session、cookie中的session(或者说是javaEE中后台操作的session)是http协议特有的吗?就是说其他协议还有session吗?还是只能是http协议才有session?
3.假如:(1)手机发送请求是通过http协议,(2)session是http请求就能够创建的,那么是不是手机端发生的请求在后台也会产生session,也就是说我们可以用session进行会话跟踪sessionhttp协议移动互联网java
2.还有就是我们通常所说的session、cookie中的session(或者说是javaEE中后台操作的session)是http协议特有的吗?就是说其他协议还有session吗?还是只能是http协议才有session?
3.假如:(1)手机发送请求是通过http协议,(2)session是http请求就能够创建的,那么是不是手机端发生的请求在后台也会产生session,也就是说我们可以用session进行会话跟踪sessionhttp协议移动互联网java
数据都是通过访问servlet读取服务器上的数据的.
是有session的 一定时间不访问服务器session还会被清掉.
具体写了些什么东西你自己看看
我原先做.net的 java看起来很吃力 你自己看看吧
package cn.zj.sunda.util;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;import cn.zj.sunda.R;import android.content.Context;
import android.util.Log;
import android.widget.Toast;public class ConnUtil {
private DefaultHttpClient hc = null;
private Context context;
// session
public static String server="http://192.168.1.5:8080/SWS";
public static String JSESSIONID = null; /**
* 以POST方式提交表单
*
* @param url
* 服务器路径
* @param param
* 参数键值对
* @return 响应结果
* @throws Exception
*/
public String Login(Map<String, Object> param, Context context) {
HttpPost post = new HttpPost(server + "/servlet/LoginServlet");
if (param != null && param.size() > 0) {
List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>(param.size());
Set<String> keys = param.keySet();
for (Object o : keys) {
String key = (String) o;
nameValuePairs.add(new BasicNameValuePair(key, String.valueOf(param.get(key))));
}
if (null != JSESSIONID) {
post.setHeader("Cookie", "JSESSIONID=" + JSESSIONID);
}
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
HttpResponse response;
StringBuffer sb = new StringBuffer();
try {
response = hc.execute(post); /** 返回状态 **/
int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(instream));
String tempLine;
while ((tempLine = br.readLine()) != null) {
sb.append(tempLine);
}
}
// 获取服务端的session
CookieStore mCookieStore = hc.getCookieStore();
List<Cookie> cookies = mCookieStore.getCookies();
for (int i = 0; i < cookies.size(); i++) {
Log.i("session", cookies.get(i).toString());
// 这里是读取Cookie['JSPSESSID']的值存在静态变量中,保证每次都是同一个值
if ("JSESSIONID".equals(cookies.get(i).getName())) {
JSESSIONID = cookies.get(i).getValue();
break;
}
}
} else {
// str = "" + statusCode;// 请求失败返回代码
Toast.makeText(context, "连接失败,请查检网络", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
post.abort();
return sb.toString();
}
/**
* 发送服务器请求
* **/
public String Post(String url, List<BasicNameValuePair> params) { HttpPost post = new HttpPost(server + url);
if (null != JSESSIONID) {
post.setHeader("Cookie", "JSESSIONID=" + JSESSIONID);
}
try {
post.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse response;
StringBuffer sb = new StringBuffer();
try {
response = hc.execute(post); /** 返回状态 **/
int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(instream));
String tempLine;
while ((tempLine = br.readLine()) != null) {
sb.append(tempLine);
}
}
// 获取服务端的session
CookieStore mCookieStore = hc.getCookieStore();
List<Cookie> cookies = mCookieStore.getCookies();
for (int i = 0; i < cookies.size(); i++) {
Log.i("session", cookies.get(i).toString());
// 这里是读取Cookie['JSPSESSID']的值存在静态变量中,保证每次都是同一个值
if ("JSESSIONID".equals(cookies.get(i).getName())) {
JSESSIONID = cookies.get(i).getValue();
break;
}
}
} else {
if (context != null) {
Toast.makeText(context, "连接失败,请查检网络", Toast.LENGTH_SHORT).show();
}
}
post.abort();
// System.out.println(sb.toString());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString(); } /**
* @return the context
*/
public Context getContext() {
return context;
} /**
* @param context
* the context to set
*/
public void setContext(Context context) {
this.context = context;
}
}
1、一般用的都是http的,也有https或者其他的。
2、不是特有的,https那些也有的,这个不用纠结吧,知道http有就行。
3、先有会话再有请求,request里可以拿到对应的session,session可以进行会话跟踪。