我有一个java/jsp web应用程序,其中search_list.jsp页面上我正在将结果设置在会话对象中 -
<%
Object resultdata = req.getSession().getAttribute("search_result");
if(resultdata == null)
{
resultdata = (SearchResult)getSearchResult();
request.getSession().setAttribute("search_result", resultdata);
}
%>
从Web浏览器中查看另一个页面并卷土重来到search_list.jsp.jsp从会话中检索结果对象的工作正常,但是相同的方案始终返回> resultdata null in android本机WebView。以下是Android Native App的WebView码。
public class HomeActivity implements OnClickListener {
public WebView mWebView;
public String sessionCookie = null;
protected void onCreate(Bundle savedInstanceState) {
mWebView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setLoadsImagesAutomatically(true);
mWebView.loadUrl(appPrefer.getAppURL());
mWebView.setWebViewClient(new WebViewClient());
}
public void saveSession()
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
if(mWebView!=null)
{
sessionCookie = cookieManager.getCookie(getCurrentURLLoad());
}
}
private void addSession(String url)
{
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
if (sessionCookie != null) {
cookieManager.setCookie(url, sessionCookie);
CookieSyncManager.getInstance().sync();
}
}
这是本机的单击按钮(这是要回去结果的快捷方式),我正在加载search_list.jsp以再次加载显示结果。但是在Web级别,我们已经搜索并显示结果并查看profile.jsp页面。因此,请单击"本机列表"(url is search_list.jsp),我添加会话如下:
public void onClick(View v) {
if(v.getId().== R.id.listview)
{
saveSession();
mWebView.loadUrl(HOST_URL + SEARCH_LIST );
addSession();
}
}
我的问题是保存/通过所有其他会话cookie值,但值将值设置为请求。Sessess.session.tributenot top up up the> null,在url在JSP级别上单击JSP级别resultdata的unl更改后始终为null。p> 我尝试了答案中提及的方法,还尝试了-https://gist.github.com/arpit/610754 Way,我始终看到我所有的cookies正确值que ..)..但是httprequest session中设置的属性不存在..我认为它的cookie的一部分是httprequets属性(httpservletrequest-> httpsession-> httpsession-> setAttribute()),我的结论不是在Android WebView或Android WebView或Android WebView出现httpclient侧。请有人让我知道是正确的,或者有一种读取HTTP请求会话属性的方法? 一段时间后调试并更好地理解我的问题,我发现了以下内容: 1)如果在request.getSession()。setAttribute()中设置对象/值,该对象/setAttribute()保存在服务器端,并且不携带http req/res,以便无法访问它们在本地一侧。 2),但是每个服务器板条板jsessionId是获取每个命中或唯一命中的数据的关键。 所以当我保存所有cookie和通过(也有jsessionid cookie)时,为什么它仍然无法在服务器端获得正确的数据? 因此,我的目的是:[不确定这是一个常见问题] 每次在本机侧用户刷新或使用URL启动WebView(一种按钮单击我只是在WebView上重新添加URL,请启动新活动并关闭最后一个活动)。这总是创建服务器端的新jsessionId ..
因此,最终我必须在URL中添加标头/参数,以指示服务器重新加载,并且会话是新的,因此可以进行相应处理,并且Donot显示未找到结果的错误。