标签: httpsession

如何从SessionID获取HttpSession对象?

我想根据某些事件使用户的会话无效.我存储了他们的sessionID,如何从这个ID获取他们的HttpSession?不推荐使用HttpSessionContext类,没有替换.

java servlets httpsession

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

使用GWT的HTTPSession

我是GWT的新手...我想在我的Web应用程序中实现会话基本上我希望会话从单击按钮(处理事件)开始,然后单击另一个按钮结束(其他处理事件) ).这是可能的?

怎么一步一步做?

这段代码好吗?:

主要(客户端):

Button b1 = new Button("b1");
b1.addClickHandler(new ClickHandler) {
      public voin onClick(){
              ...
             rpc.setSession(callback); //rpc call the service...

   }
}

Button b2 = new Button("b2");
b1.addClickHandler(new ClickHandler) {
      public voin onClick(){
              ...
             rpc.exitSession(callback);

   }
}
Run Code Online (Sandbox Code Playgroud)

// ------------------------------------------------ ------------------------------------

import com.google.gwt.user.client.rpc.RemoteService;

public interface MySession extends RemoteService {

    public void setSession();

    public void exitSession();
}
Run Code Online (Sandbox Code Playgroud)

// ------------------------------------------------ ------------------------------------

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface MySessionAsync {

    void setSession(AsyncCallback<Void> callback);

    void exitSession(AsyncCallback<Void> callback);

}
Run Code Online (Sandbox Code Playgroud)

// ------------------------------------------------ ------------------------------------

import de.vogella.gwt.helloworld.client.MySession;

public class …
Run Code Online (Sandbox Code Playgroud)

java gwt widget gwt-rpc httpsession

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

Spring Server/Client Sessions和Hibernate Sessions

我使用Spring 3和Hibernate 3.6开发Web应用程序 - 我是新的,我想知道我是否真的理解会话是如何工作的.

是否正确,由会话ID标识的服务器和客户端之间的会话与休眠会话不同?

服务器和客户端之间的会话始终是HttpSession.(?)什么时候创建?当用户登录时,或者当匿名用户请求页面(不受保护)时?

httpsession和hibernate-sessions之间有什么联系吗?是否由sessionfactory创建的Hibernate会话与httpsession没有连接?我不确定hibernate使用这样的命令引用哪个会话:

this.sessionFactory.getCurrentSession().save(object);
Run Code Online (Sandbox Code Playgroud)

这个getCurrentSession():这个休眠会话活动了多长时间?用户登录的整个时间?或仅用于一个事务(可以包括多个数据操作?)

我很抱歉这个问题可能很容易回答,但是大多数文件都是英文的,如果不是,那么母语理解有时很难(主要是因为经常使用"会话"这个词)

谢谢你帮我理解这个话题!:-)

java session spring hibernate httpsession

4
推荐指数
1
解决办法
2667
查看次数

如何在java中创建登录和注销会话

这是我在登录页面中编写的代码

HttpSession session = request.getSession(true);
session.setAttribute("name", user1);        
String nme=(String) session.getAttribute("name");
Run Code Online (Sandbox Code Playgroud)

而且,这是logout.jsp的代码

<% request.getSession().invalidate();
Run Code Online (Sandbox Code Playgroud)

要么

if(session!=null){
   session=null;
}
Run Code Online (Sandbox Code Playgroud)

要么

 request.getSession().setAttribute("name", null); //it just assigns null to attribute

 response.sendRedirect("login.jsp");
 %>
Run Code Online (Sandbox Code Playgroud)

会话正在创建,但在注销按钮工作后....我希望后退按钮不起作用.

java jsp httpsession

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

Java HttpSession .getAttribute(字符串名称)

我有一个简单而简短的问题,但在任何地方都找不到答案。我创建了一个 HttpSession 并想从中获取一个属性,例如一个 User 对象。

HttpSession session = request.getSession(true);
Object userObject = session.getAttribute("name");
if ((userObject != null) && (userObject instanceof User)) {
    User currentUser = (User) userObject;
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题如下: .getAttribute 函数获取一个字符串名称作为参数 - 名称是什么?我从哪里知道名字的?它是在某处预定义的吗?- 那么在哪里定义另一个?

谢谢!

java httpsession getattribute jakarta-ee

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

如何在 Spring Boot 中设置会话属性?

我想使用用户发送的名称设置会话属性。用户将首先登录。当他登录时,我希望他的用户名将设置为会话属性。

我该怎么办?

这是我的控制器:

@GetMapping("/login")
public String login() {
    return "Login";
}

@PostMapping("/loginCheck")
public String checkLogin(@ModelAttribute("users") Users user) {
    if (userService.checkUser(user)) {
        return "redirect:/"+user.getUsername()+"/";
    } else {
        return "Login";
    }
}

@PostMapping("/signup")
public ModelAndView createuser(@ModelAttribute("users") Users user) {
    if (userService.checkUser(user)) {
        return new ModelAndView("Login");
    } else {
        userService.adduser(user);
        return new ModelAndView("Login");
    }
}
Run Code Online (Sandbox Code Playgroud)


现在我如何将用户名设置为我进入的会话user.getUsername()?

java session httpsession spring-boot

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

如何阻止Spring Security创建新会话?

脚本

  1. 我重新启动服务器和浏览器,因此没有会​​话数据.
  2. 我去www.someurl.com公共访问页面.我的控制器让我得到一个会话HttpSession session=request.getSession(true);
  3. 我点击www.someurl.com/admin限制访问页面的飞机锚点链接,该页面将在新选项卡中打开.Spring Security 3拦截了这一点并对凭证提出了挑战.我成功登录.
  4. 我将通过www.someurl.com返回上一个选项卡并刷新页面.

问题

我在www.someurl.com的控制器中注意到,会话ID在步骤2和步骤4中是不同的.看起来Spring Security创建了一个新会话,该会话现在附加到公共页面请求.为什么会发生这种情况,我是否可以强制Spring Security使用现有会话?

追踪的场景

  1. 重新启动浏览器和服务器,因此不存在会话数据.
  2. 我去www.someurl.com.控制器已注入请求.request.session为null.getSession(true)给我一个id为87B091B12F38D44C53AF0DA9E2147484的会话.LogService获取请求对象并且也执行getSession(true)但是获取了具有id 87B091B12F38D44C53AF0DA9E2147484的会话,所以到目前为止一切都很好.
  3. 我点击/ admin.页面在新选项卡中打开.我登录
  4. 我刷新www.someurl.com.控制器已注入请求.request.session不为空.会话ID为547DF59035C91783D783BAEF4A15FBFF.

security spring httpsession

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

服务器重启后HttpSession仍然存在

我正在学习春天.执行登录/注销功能.这就是我的控制器的样子:

@RequestMapping(value="/successfulLoginAuth", method=RequestMethod.GET)
public ModelAndView postHttpLogin(HttpSession session, Authentication authInfo) 
{

ModelAndView mav = new ModelAndView();
mav.setViewName("redirect:/index.html");
session.setAttribute("authInfo", authInfo);

return mav;

}
Run Code Online (Sandbox Code Playgroud)

登录是通过Spring Security使用我实现的dao服务执行的.这很好.

这是index.jsp的内容:

<% 
    HttpSession session1 = request.getSession(false);
    Authentication authInfo; 
    if( (session1 != null) && 
        ( (authInfo = (Authentication)session1.getAttribute("authInfo")) != null) 
      )
    {

        out.print(" yo " + authInfo.getName() + " " + authInfo.getAuthorities().iterator().next().getAuthority());
    }
    else
    {
%>    
<a href="${pageContext.request.contextPath}/registration">New? Sign Up!</a><br/>

<a href="${pageContext.request.contextPath}/login">Existing? Sign In!</a><br/>
<%} %>
Run Code Online (Sandbox Code Playgroud)

当我登录并重新启动服务器时,我仍然登录.在服务器重启后,会话信息是否应该丢失?如果我重新启动浏览器,它将按预期工作(即会话信息丢失).

这是我的Spring Security配置:

<http auto-config="true"  use-expressions="true">
        <intercept-url pattern="/" access="permitAll" />
        <intercept-url pattern="/logout" …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security httpsession

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

Spring MVC - 会话差异

获取会话HttpServletRequest.getSession()和HttpSession注入控制器方法之间有什么区别吗?

java session servlets spring-mvc httpsession

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

具有会话属性的mvc控制器测试

我正在尝试使用此签名测试方法:

 @Autowired
HttpSession http_Session;
@RequestMapping(method=RequestMethod.GET, value="/search/findByName")
public @ResponseBody List<Map> search(@RequestParam(value="name", required=true) String name){
Integer user_id = http_Session.getAttribute("userinfo");
}
Run Code Online (Sandbox Code Playgroud)

userinfo是一个类,其中包含有关用户的信息,并在用户登录时设置在会话范围内.但是当我尝试测试时:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration 
@ContextConfiguration(locations = {
   "classpath:/META-INF/applicationContext.xml"})

 public class userControllerTest {

private MockMvc mockMvc;  
@Autowired
private WebApplicationContext webApplicationContext;

@Before 
public void setUp() {
    MockitoAnnotations.initMocks(this);
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
 }  
 @Test
 public void userTest() throws Exception {
     mockMvc.perform(MockMvcRequestBuilders.get("/search/findByName").param("name", "bob"))
          .andDo(print())
          .andExpect(MockMvcResultMatchers.status().isOk());
    }
Run Code Online (Sandbox Code Playgroud)

问题是userinfo类属性是在另一个方法中设置的,所以当我尝试在这个方法中访问它时,我得到了一个N​​ullPointerException,并且通过自动装配httpSession,我为每个必须测试的方法获得了一个新的Session.

我应该如何处理session属性,我的方法不接受会话参数,并且对于每个测试,它都会创建一个带有新会话的WebApplicationContext.

attributes controller spring-mvc junit4 httpsession

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