Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如何获取HttpSession session=request.getSession(true);值外部请求映射方法_Spring Mvc - Fatal编程技术网

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";
    }
}