标签: httpsession

测量HttpSession对象的大小

除了以编程方式测量存储在会话中的每种数据类型(每个对象组成)的大小之外,是否有一种简洁的方法来测量它?

java tomcat httpsession

13
推荐指数
2
解决办法
1万
查看次数

Java HttpSession

是否在Java servlet中创建了HttpSession

HttpSession s = request.getSession();
Run Code Online (Sandbox Code Playgroud)

在我的代码中我没有写那个,但是当我使用时if (request.getSession(false) == null) ...,它不起作用.为什么?

java httpsession

13
推荐指数
2
解决办法
3万
查看次数

Websocket - httpSession返回null

我想在websocket handshake\session与HttpSession对象之间建立连接.

我使用了以下握手修改:

public class GetHttpSessionConfigurator extends ServerEndpointConfig.Configurator
{
@Override
public void modifyHandshake(ServerEndpointConfig config, 
                            HandshakeRequest request, 
                            HandshakeResponse response)
{
    HttpSession httpSession = (HttpSession)request.getHttpSession();
    config.getUserProperties().put(HttpSession.class.getName(),httpSession);
}
}
Run Code Online (Sandbox Code Playgroud)

正如本文所述: 在Web Socket @ServerEndpoint中从HttpServletRequest访问HttpSession

现在,由于某些原因在握手时,(HttpSession)request.getHttpSession()一直返回null.

这是我的客户端代码:

<!DOCTYPE html>
<html>
<head>
<title>Testing websockets</title>
</head>
<body>
<div>
    <input type="submit" value="Start" onclick="start()" />
</div>
<div id="messages"></div>
<script type="text/javascript">
    var webSocket = 
        new WebSocket('ws://localhost:8080/com-byteslounge-websockets/websocket');

    webSocket.onerror = function(event) {
        onError(event)
    };

    webSocket.onopen = function(event) {
        onOpen(event)
    };

    webSocket.onmessage = function(event) {
        onMessage(event)
    };

    function onMessage(event) {
        document.getElementById('messages').innerHTML 
            += '<br …
Run Code Online (Sandbox Code Playgroud)

session tomcat httpsession websocket

13
推荐指数
2
解决办法
6708
查看次数

Tomcat,从HTTPS迁移到HTTP时保持会话

我有一个在Tomcat 6.0.29上运行的Java应用程序,前面有Apache 2.2.3.登录页面使用HTTPS,而大多数页面使用HTTP.

如果用户尝试访问受登录保护的页面(HTTP),则会将其重定向到登录页面(HTTPS),登录,然后重定向回原始请求的页面.这很好用,因为JSESSIONID cookie设置为非安全,并用于HTTP和HTTPS.

但是,如果用户在登录页面(HTTPS)启动,则JSESSIONID cookie设置为Secure,因此在重定向到HTTP下的页面时,登录后会话不可用,强制新会话并再次重定向到登录页面.这次它可以工作,因为这次JSESSIONID cookie被设置为非安全.

如何避免用户首次登录登录页面时必须登录两次?

java https apache2 tomcat6 httpsession

11
推荐指数
1
解决办法
1万
查看次数

Spring会话范围的bean作为原型bean中的依赖项?

我曾多次阅读关于这个主题的春季文档,但有些事情对我来说仍然不清楚.文件说明:

如果要将(例如)HTTP请求作用域bean注入另一个bean,则必须注入AOP代理来代替作用域bean.也就是说,您需要注入一个代理对象,该对象公开与范围对象相同的公共接口,但也可以从相关范围(例如,HTTP请求)检索真实的目标对象,并将方法调用委托给真实对象.

配置示例如下:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session">
     <aop:scoped-proxy/>
</bean>

<bean id="userManager" class="com.foo.UserManager">
     <property name="userPreferences" ref="userPreferences"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

这里,userManager bean的范围是singleton.所以,我想知道这个代理事物是否适用于单例范围的bean,也就是说,如果你想将web-scoped bean注入单例bean,或者它也适用于原型bean?例如,如果userManager的范围是原型?

我问这个是因为我看到一些代码在不使用aop-proxy的情况下将会话范围的bean注入到原型中,但我不确定这是否正确...特别是那些在某些web-app中的DAO bean,scoped作为会话,它们被注入到原型范围的控制器中,用于多用户环境.这是正确的方法吗?一般来说,应该如何在Web应用程序环境中使用DAO/Service bean?

任何想法将不胜感激.

spring scope dao javabeans httpsession

11
推荐指数
1
解决办法
8463
查看次数

spring security - 有没有办法在我的应用程序中获取会话注册表(没有明确定制concurrentFilter)

我指的是这个帖子,在Rob Winch(Spring Security Lead)的第二篇文章中,他提到我们可以访问sessionRegisty:

<session-management>
  <concurrency-control session-registry-alias="sessionRegistry"/>
</session-management>
Run Code Online (Sandbox Code Playgroud)

因此,我注册HttpSessionEventPublisher过滤器web.xml并在我的<http>部分中指定上述设置.我添加这个:

<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />
Run Code Online (Sandbox Code Playgroud)

在我的课堂上,我注入了一个sessionRegistry实例,如下所示:

@Autowired
private SessionRegistry sessionRegistry
Run Code Online (Sandbox Code Playgroud)

这就是我试图找出用户的会话的方法:

List<SessionInformation> userSessions = sessionRegistry.getAllSessions(username,false);
        for (SessionInformation userSession : userSessions){
            userSession.expireNow();
        }
Run Code Online (Sandbox Code Playgroud)

主体是用户的用户名.调试时,sessionRegistry变量principalssessionids变量为空.我在这里做错了什么,或者是krams博客提到的步骤,这是唯一的方法吗?

java session spring spring-security httpsession

11
推荐指数
1
解决办法
2万
查看次数

使用session.invalidate的JSF注销不会清除当前的用户名?

在我的JSF应用程序中,我得到了这样的当前登录用户的名字......

public String getLoggedInUsername() {
  return FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
}
Run Code Online (Sandbox Code Playgroud)

...我检查用户是否像这样登录...

public boolean isSignedIn() {
  return (getLoggedInUsername() != null);
}
Run Code Online (Sandbox Code Playgroud)

......当用户退出时,我这样做......

public String doLogout() {
  FacesContext facesContext = FacesContext.getCurrentInstance();
  HttpSession httpSession = (HttpSession)facesContext.getExternalContext().getSession(false);
  httpSession.invalidate();
  return "main";
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在doLogout()之后,getLoggedInUsername()仍然返回登录用户的名称.我应该做些什么来确保getRemoteUser()在注销后返回null?

或者,是否有更好的方法来获取isSignedIn()而不仅仅是检查用户名?

谢谢!抢

jsf httpsession

9
推荐指数
1
解决办法
3万
查看次数

Jetty http会话始终为null(Embedded Container,ServletHolder)

我正在尝试实现一个简单的servlet,它在嵌入式jetty(7.3.0 v20110203)容器中使用HTTP会话.要启动jetty,我使用以下代码:

Server server = new Server(12043);
ServletContextHandler handler = new
            ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/");
server.setHandler(handler);
ServletHolder holder = new ServletHolder(new BaseServlet());
handler.addServlet(holder, "/*");
server.start();
server.join();
Run Code Online (Sandbox Code Playgroud)

servlet获取会话

HttpSession session = request.getSession(true);
Run Code Online (Sandbox Code Playgroud)

并在其中存储一些数据.在下一个请求时,它会使用以下代码获取会话:

HttpSession session = request.getSession(false);
Run Code Online (Sandbox Code Playgroud)

会话始终为空.

我没有在互联网上找到有关此特定问题的任何信息.我还尝试过设置SessionManager或SessionIdManager,但这似乎没有改变任何东西.我怀疑我在这里遗漏了一些关于SessionManager或SessionIdManager或SessionHandler的内容,但这只是一个疯狂的猜测.

servlets jetty embedded-jetty httpsession

9
推荐指数
1
解决办法
7882
查看次数

JavaScript可以读取HTTP会话对象吗?

是否可以从JavaScript中读取像httpRequest.getSession("attr_name")这样的动态变量的值?

javascript httpsession

8
推荐指数
1
解决办法
2万
查看次数

如何从 Spring Boot 中的公共类获取会话?

我想从普通班级获得会话。使用@Autowired没有效果。

public class TMessageHandlerFactory implements MessageHandlerFactory {

    @Autowired
    private HttpSession session;

    @Override
    public void data(InputStream data) {
        int userId = (int)session.getAtrribute("key"); //session null
        ....        //do sth
    }
}
Run Code Online (Sandbox Code Playgroud)

构造函数也不起作用

@Component
public class SMTPRunner implements ApplicationRunner {

    @Autowired
    private UserService userService;    // userService can access

    @Autowired
    private HttpSession session;        // session can't access

    @Override
    public void run(ApplicationArguments applicationArguments) throws Exception {
        TMessageHandlerFactory myFactory = new TMessageHandlerFactory(session);
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过用SpringBeanFactory,也没用。

@Component
public class SpringBeanFactoryUtil implements ApplicationContextAware { …
Run Code Online (Sandbox Code Playgroud)

session spring spring-mvc httpsession spring-boot

8
推荐指数
1
解决办法
9977
查看次数