java - 使用 spring mvc 从 HttpServletRequest 获取数据

标签 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);

}

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

最佳答案

忘记你现在做了什么。

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

  1. 让您的方法接受一个HttpServletRequest 参数并直接将目标对象设置为请求属性。
  2. 使您的方法接受ModelModelMapModelAndViewMap 参数并设置目标对象作为该 Model 参数的请求属性。您还可以让您的方法返回上述任何内容。

对于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 View 名称,但将属性添加到作为参数传递的 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 和返回 String 之间的区别。

关于java - 使用 spring mvc 从 HttpServletRequest 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690916/

相关文章:

每次刷新时 JSP session ID 都会更改

java - 抽象 Servlet - 这个方法是线程安全的吗?

java - 未排序数组到二叉搜索树

java - 如何使用正则表达式删除字符之间的符号

java - 如何用符号 '*' 替换给定字符串 s 中的所有非字母

Java Web 应用程序不使用注释

spring - SpringBoot 2.0.1.RELEASE 中的 AuthenticationManagerBuilder

spring-mvc - Spring MVC InternalResourceViewResolver 和静态资源

Java : How to accommodate special characters in the filename while uploading and downloading the file?

java - 将值更改为字符串