使用spring mvc从HttpServletRequest获取数据

时间:2013-09-09 02:59:29

标签: java servlets spring-mvc

我是Spring MVC的新手。

我想要实现的是将数据映射添加到HttpServletRequest中; 例如:

private NewRequestService newRequest = new NewRequestService();

public ModelAndView inputRequiredInfo(@ModelAttribute("requestForm") HttpServletRequest request) {
  request.setAttribute("mylist", newRequest.loadAllUserDomainType());

  return new ModelAndView("request/selectDomainUser","requestForm", request);

}

然后在视图jsp文件中,我想获取那些传入请求并将其放入下拉列表的数据。

2 个答案:

答案 0 :(得分:8)

忘掉你现在所做的事。

@Controller处理程序方法有两种方法可以使属性可用于JSP。

  1. 让您的方法接受HttpServletRequest参数,并将目标对象直接设置为请求属性。
  2. 让您的方法接受ModelModelMapModelAndViewMap参数,并将目标对象设置为Model参数的请求属性。您还可以使您的方法返回上述任何一种方法。
  3. 对于2.,Spring会将您添加到Model的元素添加到HttpServletRequest属性中。然后,在呈现JSP时,它们将可用。

    我们有一些例子:

    返回包含一个属性的ModelAndView

    public ModelAndView inputRequiredInfo() {
        Map map = newRequest.loadAllUserDomainType();
    
        return new ModelAndView("request/selectDomainUser","mylist", map);
    }
    

    返回没有属性的ModelAndView,但直接将该属性添加到HttpServletRequest

    public ModelAndView inputRequiredInfo(HttpServletRequest request) {
        Map map = newRequest.loadAllUserDomainType();
        request.setAttribute("mylist", map);
        return new ModelAndView("request/selectDomainUser");
    }
    

    返回String视图名称,但将属性添加到作为参数传递的Model

    public String inputRequiredInfo(Model model) {
        Map map = newRequest.loadAllUserDomainType();
        model.addAttribute("mylist", map);
        return "request/selectDomainUser";
    }
    

    在上面的示例中,您可以通过ModelModelMapjava.util.Map

    但与HttpServletRequest

    相同
    public String inputRequiredInfo(HttpServletRequest request) {
        Map map = newRequest.loadAllUserDomainType();
        request.setAttribute("mylist", map);
        return "request/selectDomainUser";
    }
    

    有关已接受的方法参数的更完整列表,请参阅section 17.3.3 of the official documentation.在阅读时,请阅读支持的返回类型,以了解返回ModelAndView和返回{{1}之间的区别}。

答案 1 :(得分:-2)

这不是正确的方法。

您可以使用类似于模型属性的内容。

请查看以下链接,了解有关此问题的大量答案:

How to pass model attributes from one Spring MVC controller to another controller?

Passing parameters from JSP to Controller in Spring MVC