Spring mvc 如何获取HttpSession session=request.getSession(true);值外部请求映射方法
这工作做得很好Spring mvc 如何获取HttpSession session=request.getSession(true);值外部请求映射方法,spring-mvc,Spring Mvc,这工作做得很好 @RequestMapping(value = "/users/emailfrom2") public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(true); String gsSessionID = (String) sessi
@RequestMapping(value = "/users/emailfrom2")
public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession(true);
String gsSessionID = (String) session.getAttribute("GSSessionID");
System.out.println("Session ===>>>> " + gsSessionID);
logger.debug("displayLogin3()");
return "users/test1";
}
但我想要这样,像一个全球价值
public class UserController {
String gsSessionID = (String) session.getAttribute("GSSessionID");
@RequestMapping(value = "/users/emailfrom2")
public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) {
System.out.println("Session ===>>>> " + gsSessionID);
logger.debug("displayLogin3()");
return "users/test1";
}
@RequestMapping(value = "/users/emailfrom5")
public String displayLogin5(Model model, HttpServletRequest request, HttpServletResponse response) {
String sessionId = getSessionProperty(request, "GSSessionID");
System.out.println("Session ===>>>> " + sessionId);
logger.debug("displayLogin3()");
return "users/test1";
}
}
我只想写字符串sessionId=getSessionProperty(请求“GSSessionID”);在控制器类中只有一次,而不是两次或三次以上。
任何帮助都将不胜感激。请使用以下内容:
public class UserController extends AbstractController {
@RequestMapping(value = "/users/emailfrom2")
public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) {
String sessionId = getSessionID(request)
System.out.println("Session ===>>>> " + sessionId);
logger.debug("displayLogin3()");
return "users/test1";
}
}
public abstract class AbstractController {
public String getSessionID(HttpServletRequest request){
HttpSession session = request.getSession(true);
return (String) session.getAttribute("GSSessionID");
}
}
更新:
如果如您所说,您可能需要会话中的不同值,则应修改此方法:
公共抽象类抽象控制器{
protected String gSSessionID;
protected String gSPresentDate;
@PreProcess
public void loadSessionAttributes(@SessionAttribute(name="GSSessionID") String gSSessionID,
@SessionAttribute(name="GSPresentDate") String gSPresentDate){
this.gSSessionID = gSSessionID;
this.gSPresentDate = gSPresentDate;
//Some other session attributes
}
}
public class UserController extends AbstractController {
@RequestMapping(value = "/users/emailfrom2")
public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) {
System.out.println("Session ===>>>> " + gSSessionID);
logger.debug("displayLogin3()");
return "users/test1";
}
}
你不能这样做,但可以在AbstractController中创建一个通用方法,该方法接收请求并返回该值,因此你可以在多个控制器中使用。请给出任何示例link@cralfaro请给我任何链接的例子please@Himel有了这个解决方案,您可以向AbstractController中添加在几个方面需要使用的所有方法l控制器如果我有多个session*String gsPresentDate=(String)session.getAttribute(“gsPresentDate”);*String gsSessionID=(String)session.getAttribute(“gsSessionID”);String*gsInternalCardID=(String)session.getAttribute(“gsLogInToDay”);*String gsLogInToDay=(String)session.getAttribute(“gsLogInToDay”);如果我的控制器类中有100个方法,那么我必须将其转换为字符串100次,然后传入方法参数解决方案是什么?使用我添加的示例,使用一个新参数,您可以从session@cralfroString sessionId在RequestMapping中需要100次。我该怎么做这是我的重点。我必须在每个RequestMapping中写入字符串sessionId=getSessionProperty(请求,“GSSessionID”);我只想在类似全局值中写入一次,这样我就可以在每个RequestMapping方法中获得它。可能吗?
protected String gSSessionID;
protected String gSPresentDate;
@PreProcess
public void loadSessionAttributes(@SessionAttribute(name="GSSessionID") String gSSessionID,
@SessionAttribute(name="GSPresentDate") String gSPresentDate){
this.gSSessionID = gSSessionID;
this.gSPresentDate = gSPresentDate;
//Some other session attributes
}
}
public class UserController extends AbstractController {
@RequestMapping(value = "/users/emailfrom2")
public String displayLogin3(Model model, HttpServletRequest request, HttpServletResponse response) {
System.out.println("Session ===>>>> " + gSSessionID);
logger.debug("displayLogin3()");
return "users/test1";
}
}