如何在类中的多个方法中检索Http会话数据

时间:2014-11-22 16:04:14

标签: java session httprequest

我需要从Http Session中检索用户个人资料。由于我需要在类中的几个不同方法中使用相同的配置文件,所以有一种方法可以访问同一个会话吗?所以我不必多次提出http请求。以下是会话和方法的示例。 在下面的方法中,您将看到我将http请求放在两个方法中,因为它们都在同一个类中,如果我不创建单独的会话,它将有所帮助。

Http请求:

HttpSession session = request.getSession();
    EntRProfile profile = (EntRProfile) session.getAttribute("profile");

示例方法:

private Integer getClaimCount(HttpServletRequest request, String searchCriteria) throws Exception {
    HttpSession session = request.getSession();
    EntRProfile profile = (EntRProfile) session.getAttribute("profile");
    Integer claimsCount = claimTDAO.getCountOfClaimsWithCurrentStatusNot(profile, "INI", searchCriteria);
    request.getSession().setAttribute("claimsPaginationCount", claimsCount);

    return claimsCount;
}

第二种方法

@RequestMapping(value = "/claims_history", method = RequestMethod.GET)
public String getClaims(HttpServletRequest request, @RequestParam(value = "claimsSearch", required = false) String searchCriteria, boolean keepOffset) throws Exception {


    HttpSession session = request.getSession();
    EntRProfile profile = (EntRProfile) session.getAttribute("profile");

    request.getSession().setAttribute("claimsList", claimsList);
    request.getSession().setAttribute("claimsSearchCriteria", searchCriteria);

    Integer count = claimTDAO.getCountOfClaimsWithCurrentStatusNot(profile, "INI");
    request.setAttribute("claimsHistoryCount", count);

    return "claims_history";
}

1 个答案:

答案 0 :(得分:1)

您可以在控制器中创建私有方法:

private EntRProfile getProfile(HttpServletRequest request) {
     HttpSession session = request.getSession();
     EntRProfile profile = (EntRProfile) session.getAttribute("profile");
     return profile;
}

然后您可以致电:

获取个人资料
EntRProfile profile = getProfile(request);