gpt4 book ai didi

Java IE 提供旧的 HTTP Servlet session 对象

转载 作者:行者123 更新时间:2023-12-02 11:50:49 25 4
gpt4 key购买 nike

我的应用程序使用 IE 11。我在这里面临 session 问题。

在进行第一个事务时,在事务响应 jsp 页面中,我得到当前事务,不说 1000 [(TransactionDO) session.getAttribute("txnDetails");]。在同一个 jsp 中,我在 div 中执行了 ng-init="GetTxnResponse()",从该 js 函数获取交易编号为 1000。

然后我正在使用同一 session 执行第二个事务,而无需注销,在事务响应 jsp 页面中,我从 http session 中获取当前事务编号为 1001。在 ng-init="GetTxnResponse()"js 函数的同一 jsp 中,获取交易号为 1000 而不是 1001。

它仅出现在 IE 中。请帮忙解决。下面是我的代码供引用。

-- JSP 代码--

<fmt:setLocale value='en_US' />
<%
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
// HTTP 1.1.
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server

TransactionDO txnDO = (TransactionDO) session.getAttribute("txnDetails");
System.out.println("Txn no : "+txnDO.txnNo()); // Here i get 1001 second time

%>

<fmt:bundle basename="applicationresources">
<div ng-controller="txnController"
ng-init="GetTxnResponse()" >
---
---
</div>
</fmt:bundle>

-- JS 代码 --

    self.GetTxnResponse = function() {
if (txnStatus == '00') {
$http.get(CONTEXT_PATH + '/getResponseDetails').success(function(data) {
// Here i get 1000 from data second time
}
}

-- Java 代码 --

    @RequestMapping(value="/getResponseDetails", method=RequestMethod.GET)
public @ResponseBody TransactionDO getResponseDetails(HttpServletRequest httpRequest){
TransactionDO txnDO = null;
txnDO = (TransactionDO) httpRequest.getSession().getAttribute("txnDetails");
return txnDO;
}

最佳答案

使页面无状态。这就是扎实的修行。它还允许在生产站点上进行缓存。

<div ng-controller="txnController"
ng-init="GetTxnResponse(${txnDetails.txnNo})" >

self.GetTxnResponse = function(txnNo) {
if (txnStatus == '00') {
$http.get(CONTEXT_PATH + '/getResponseDetails/' + txnNo).success(function(data) {
// Here i get 1000 from data second time

@RequestMapping(value="/getResponseDetails/{txnNo}", method=RequestMethod.GET)
public @ResponseBody TransactionDO getResponseDetails(HttpServletRequest httpRequest,
@PathVariable long txnNo) {
...
}

您可能需要对页面进行比所示代码更多的调整。

进一步解释一下:用户可以打开同一页面的两个选项卡,然后进行操作。你猜怎么着?

关于Java IE 提供旧的 HTTP Servlet session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47884777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com