如何从 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 } } 构造函数也不起作用 @Component public class SMTPRunner implements ApplicationRunner { @Autowired private UserService userService;
18 2024-04-22
编程技术问答社区
Websocket-httpSession 返回 null
我想在websocket握手\ 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.
18 2024-04-22
编程技术问答社区
部署中丢失:在某些 Tomcat 配置中,session.getAttribute() 返回 NULL
我正在遇到几个问题,这些问题是我第一次看不见的.这个故事很简单,但是我想解决方案是一些真正的配置/部署问题/不一致的背后. 我已经定义了一个JSP和两个servlet. JSP将某些内容放入会话中,servlet应该获取数据并操纵数据.主要症状是,在看到Chrome和Firefox中的JSP时,Servlet看不到会话数据.有趣的是,使用Eclipse内部浏览器以及使用Internet Explorer(在Win7上工作)时,JSP/Servlet确实共享数据. . 这里有一些很长的描述,以及有关本地配置的一些信息(以及后续症状)(而且我相信存在问题):我已经在C:\ labs \ eclipse和Eclipse和Eclipse下安装了Eclipse(Helios) c:\ labs \ tomcat下的打开包装的tomcat(7.0.12).我还安装了启动tomcat的sysdeo插件. 首先,当我使用sysdeo eclipse插件按钮启动tomcat时,然后尝试
12 2024-04-22
编程技术问答社区
禁用 Servlet HttpSession cookies
在Web应用程序中,用户登录时,使用HttpSession s = request.getSession(true);创建a HttpSession 这将在浏览器上创建一个用jsessionid的cookie. 但是,如果在浏览器上禁用cookie,我该如何进行登录? 解决方案 如果cookie被禁用.您应该使用URL重写机制进行会话跟踪. 代码示例: 其他解决方案 登录的主要目的是识别用户.用户的基本信息存储在cookie中,该信息基本上是包含jsessionId的文本文件.这是我们想要的jsessionid,而不是饼干本身.因此,我们可以握住jsessionId并将其与URL融合,我们仍然能够访问Httpsession对象中的内容.
32 2024-04-22
编程技术问答社区
如何在会话中设置值?
如果我要进行空话,我需要设置一些值才能播放动作类.因此,这是方法 public SearchFilters getFilters() { return (SearchFilters) getSession().get("Filters"); } 我想检查会话,如果是null,那么我需要在这里设置一些值. public SearchFilters getFilters() { if(getSession().get("Filters").equals(null)){ ---- //How to set the values and return ? } return (SearchFilters) getSession().get("Filters"); } 解决方案 使用代码: public SearchFilters getFilters() { if(getSession().get("Filters") == null){ //How to se
32 2024-04-22
编程技术问答社区
OWIN中间件可以使用http会话吗?
我有一点代码,我为ASP.NET和Signalr重复了,我决定将其重写为Owin中间件以删除此重复. 运行它后,我注意到HttpContext.Current.Session是无效的,我在中间件的IOwinContext上没有看到任何会话对象. 是否可以从OWIN访问HTTP会话? 解决方案 是的,但这是一个黑客.它也无法使用SignalR,因为SignalR必须在会话之前运行以防止长会话锁. . 这样做以启用任何请求的会话: public static class AspNetSessionExtensions { public static IAppBuilder RequireAspNetSession(this IAppBuilder app) { app.Use((context, next) => { // Depending on the handler the req
14 2024-04-11
编程技术问答社区
从httpsession中检索浏览器的locale?
是否可以从httpsession对象(javax.servlet.http.httpsession)中得出首选语言? 可以从ServletRequest那里获得它,但我没有. 感谢您的任何想法. sven 解决方案 用户的首选语言环境可作为请求标头("接受语言")提供.用户的浏览器会根据其首选项自动填充它. 然后,您可以将此信息存储在用户的会话中,并在适当的情况下检索. 其他解决方案 AS 只是从请求(首选)获取它,或将其作为会话的属性存储. 其他解决方案 通常,我们无法从httpsession获得相关的httprequest对象.但是有解决方法. 您可以创建一个过滤器,在过滤器中,拥有所有内容,httpsession,httprequest等.然后创建一个线程列表变量来存储httprequest对象.或只是存储您需要的一些请求属性. 您的方法应该能够获得螺纹锁定的值. httprequest,语言设置或您之前存储的任何内容. 不知道这是否回答了
10 2024-04-03
编程技术问答社区
Spring MVC的自动连接HttpSession何时会被创建?
使用自动httpsession的问题: logincontroller调用loginService通过httpservletrequest作为参数. 我在其他几个注释的类中自动自动httpsession(但不是在loginservice中): @Autowired private HttpSession httpSession; 在loginservice类中,如果我尝试通过调用request.getSession(false)来获得会话,则在某些情况下会收到null. 如果我尝试通过调用request.getSession(true)来获得会话,我最终将使用两个httpsession对象(一个在这里,另一个通过自动发动机). 如果我在LoginServic类中自动使用Httpsession并从那里使用会话,那么我也将以两个httpsession对象结尾. 何时创建何时创建自动化的httpsession?处理这种情况的最佳方法是什么? 谢谢
22 2024-03-21
编程技术问答社区
Spring MVC:HttpSession的自动连接是如何进行的?
我想知道httpsession的自动化如何工作. 如果我们声明如下: @Autowired private HttpSession httpSession; 何时在Spring Workflow中,上面声明的Httpsession变量将使用request.getSession(true)? 初始化 解决方案 我不明白您为什么要自动httpsession,但这是自动化的工作方式. 要自动使用一个类,您需要使用注释(@controller,@service, @repository,@component)将其指定为bean,或者通过在config class中声明@bean.定义bean spring autowires或在弹簧上下文初始化时构造对象(在WebApp的服务器启动期间,您可以明确初始化弹簧上下文,以防console/standalone应用程序). ). ,由于只能从httpservletrequest对象中获取httpsession,因此
22 2024-03-21
编程技术问答社区
如何在Struts 2中检查用户是否已经登录
我无法使用struts2. 如果我成功登录,如果我再次单击登录的URL,它再次要求登录. 我希望它被登录 unill them the tum the the the the the the the the the the the thc the the thc 解决方案 会话已经在Struts2中进行管理. 如果您想将某些对象像用户这样的对象送入会话,则可以使用身份验证拦截器,例如 this . P> 它检查用户是否在会话中并让操作调用,否则返回login结果. 用户可能希望在不同的帐户下登录几次,因此您不应限制他/她这样做. 在JSP中,您可以使用#session上下文变量的if标记中的用户进行检查.
12 2024-03-20
编程技术问答社区
带有会话属性的mvc控制器测试
我正在尝试测试具有此签名的方法: @Autowired HttpSession http_Session; @RequestMapping(method=RequestMethod.GET, value="/search/findByName") public @ResponseBody List search(@RequestParam(value="name", required=true) String name){ Integer user_id = http_Session.getAttribute("userinfo"); } USERINFO是一类,其中包含有关用户的信息,并在用户登录时设置会话范围.但是当我尝试测试时: @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = { "classpath:/M
30 2024-03-19
编程技术问答社区
在最初的接收线程之外访问HttpSession
我正在使用Spring3.当控制器获得请求时,它将控件传递给Method someMethod()在Service Bean中用@Async注释,然后返回.当我在someMethod() httpsession对象中访问时,我会收到此异常 java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outs
14 2024-03-18
编程技术问答社区
在当前HTTPContext中生成一个新的ASP.NET会话
由于对管道中的某些产品的穿透性测试而导致的,当时看起来"简单"的问题是一个艰难的问题. 并不是说当然应该,我的意思是为什么 为当前HTTPContext 生成全新的会话是如此困难?奇怪!无论如何 - 我写了一个厚脸皮的小公用事业课,以"做到": (对代码格式/突出显示/Visual Basic I 必须做错事的道歉) Imports System.Web Imports System.Web.SessionState Public Class SwitchSession Public Shared Sub SetNewSession(ByVal context As HttpContext) ' This value will hold the ID managers action to creating a response cookie Dim cookieAdded As Boolean ' We us
8 2024-03-07
编程技术问答社区
在JSP中把一个JavaBean放入HttpSession中
我试图对调查执行"简单"应用程序.如果您有一些选项(复选框),然后在其他页面中显示结果(票). 我有这个课程,可以一直保持结果(我想使用httpsession更新此类).我正在使用班级hashmap,但我更改了,我认为这没关系: package beans; import java.util.ArrayList; import java.util.List; public class SurveyBean { private List keys; private List values; public SurveyBean() { keys = new ArrayList(); //keys: {"Cat", "Dog", "Other animal"} values = new ArrayList(); //Values: {"12","5","4"
12 2024-03-04
编程技术问答社区
Servlet JApplet。浏览器:HttpSession
这听起来像是一个简单的问题,但我找不到好的信息. 我正在编写一个小japplet,该japplet将向服务器servlet发送一些信息 我希望能够跟踪谁是谁,所以我想建立一个记录和会话系统. 我找到了一些有关httpsession的信息,但我永远找不到一个信息: 我必须在小程序中创建一个会话对象,还是有一个自动系统,当我在applet side上做类似的事情时会创建httpsession HttpURLConnection con = (HttpURLConnection) u.openConnection (); con.setDoInput(true); con.setRequestMethod("GET"); con.connect(); 解决方案 您需要在Servlet中跟踪服务器的会话. ,从java applet,您需要在请求时将cookie维护在标题中. 也请参见
10 2024-03-02
编程技术问答社区
Tomcat,从HTTPS转到HTTP时保留会话
我在Tomcat 6.0.29上有一个Java应用程序,前面有Apache 2.2.3. 登录页面使用https,而大多数页面都使用http. 如果用户试图访问受登录保护的页面(HTTP),则将他重定向到登录页面(HTTPS),登录,然后重定向回到最初请求的页面. 这很棒,因为JSessionId cookie被视为非安全,并用于HTTP和HTTPS. . 但是,如果用户从登录页面(HTTPS)开始,则将jsessionId cookie设置为安全,因此,在登录后登录后,将在http下的页面上登录后可用再次.这次它可以工作,因为这次jsessionId cookie被视为非安全. 首先登录登录页面时,我如何避免将用户登录两次? 解决方案 (更新:为了清楚起见)从登录http get/post开始使用https,然后在session中使用https,然后在会话中使用https. 仅在没有登录的用户中使用http. 有一个原因是cookie不允许跨协议边界
16 2024-02-28
编程技术问答社区
为什么getSession()没有在短时间内的后续请求中返回相同的会话?
我正在发送$.getJSON(http get)请求两次(带有不同的数据),一个接一个(假设我们有request1和request2).我可以在FF和Chrome的开发人员工具中看到我的标题相同. 在服务器端,我尝试获得会话: HttpSession session = request.getSession(); boolean isSessionNew = session.isNew(); String sessionId = session.getId(); String cookieFromRequestHeader = request.getHeader("cookie"); 如果我为我收到的两个请求打印了这些变量, request1: issessesnew:true Cookiefromrequestheader:jsessionId = FD0D502635EEB67E3D36203E26CBB59A session.getID():9212B1
8 2024-01-14
编程技术问答社区
在检票员应用程序中使用哪种方法进行注销?
检票口org.apache.wicket.authroles.authentication.AuthenticatedWebSession有2种方法:signOut和invalidate. Javac说signOut标记使用not logged in而invalidate做相同的操作(例如呼叫signOut),但是 从持续存在的地方删除登录数据 首先要调用登录操作signOut.但是对于安全原因会话必须在用户登录或登录后立即无效.因此,从这一点开始invalidate. 那么要注销什么?另外,当需要调用signOut以及invalidate>? 时 解决方案 如果您只想注销,请使用AuthenticatiCatedWebsession#签名(). authenticatedWebsession使用内部布尔标志"签名"来注意(true)是否已签署了用户,或者从未签过任何身体或已登录用户. WebSession#Invalidate()负责从检票员会话注册
8 2023-12-03
编程技术问答社区
WebSocket聊天消息不会延长httpsession
我有Java Spring应用程序,可以通过Websocket提供聊天端点.用户使用API​​调用和会话的用户登录已超时10分钟. 为了开始聊天,我必须连接到WebSocket端点.它确实连接了,没问题,但事实是:从客户端发送的每个聊天消息都不会延长httpsession,所以10分钟后,它会出来. 如何通过连接到延长httpsession的Websocket发出聊天消息?其他话说:如何在通过WebSocket发送的每条消息上重置Httpsestes超时计时器到10分钟? 使用反射方法我从WebSocket会话中获得HTTPSESSIONT,然后调用SetMaxinActiveInterval()方法以重置会话超时计时器,但是它不起作用,即使我在中间发送了许多消息,也会在10分钟后暂停. @OnMessage public void onMessage(Session session, String message) { HttpSession httpSes
10 2023-12-02
编程技术问答社区
如何将CDI会话豆从HTTP会话传播到WebSocket会话?
在发布此问题之前,我对这个问题进行了很多谷歌搜索,并且在Web套接字@ServerendPoint中从HttpservletRequest访问Httpsession 是我能找到的最好的问题/答案之一,但似乎无法解决我的问题. 我能够以这种方式从WebSocket访问HTTPSESSIONT,但是我无法访问与普通HTTP请求的CDI Session bean实例. 我也尝试在会话中存储HttpSessionContextImpl焊接实例,并尝试在WebSocket上使用它,但它没有暴露出以前的bean. 然后我的问题:在两种情况下,是否可以访问相同的CDI托管会话bean实例(WebSocket Events和HTTP正常请求)? 目前对我来说重要的是要在Wildfly 9/10中使用此功能,但是也很高兴能在Tomcat> 7上使用一般的解决方案(使用JBOSS WELD或任何其他实现). 事先感谢您的支持. 解决方案 然后我的问题:是否可以在两种
24 2023-12-02
编程技术问答社区