关于SpringMVC请求域对象的数据共享问题

SpringMVC支持路径中的占位符。

可以通过路径的方式来传参。restful风格。使用{}做占位符在路径中指定参数,使用@PathVariable注解在参数列表中指定。

<a th:href="@{/test/1}">传了参数</a>
@RequestMapping("/test/{id}")
public String test(@PathVariable("id")Integer id){
    System.out.println(id);
    return "index";
}

如果使用了占位符则请求地址必须有值,否则会报404错误。

获取请求参数

使用ServletAPI获取(基本不用)

@RequestMapping("/testParam")
public String Param(HttpServletRequest request){
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");
    return "index";
}

通过控制器的形参获取(保证参数名相同的情况下)牛逼

<a th:href="@{/testParam(username='admin',password='123')}">传了参数</a>
@RequestMapping("/testParam")
public String testParam(String username,String password){
    System.out.println("username:"+username+",password:"+password);
    return "index";
}

RequestParam

请求参数和控制器形参创建映射关系。

  • Value
  • Required
  • DefaultValue

使用实体类接受请求参数

@RequestMapping("/testPojo")
public String testPojo(User user){
    System.out.println(user);
    return "index";
}

配置过滤器,处理乱码问题

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--设置字符集-->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <!--强制响应字符集-->
    <init-param>
        <param-name>forceResponseEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

域对象共享数据

使用原生ServletAPI向request域对象共享数据(不用)

@RequestMapping("/test")
public String test(HttpServletRequest request){
    request.setAttribute("hello","hello");
    return "index";
}

使用ModelAndView对象

返回值类型为ModelAndView

//使用ModelAndView对象的方式
@RequestMapping("/")
public ModelAndView toIndex(HttpServletRequest request){
    ModelAndView mav = new ModelAndView();
    //设置共享数据
    mav.addObject("result","mavResult");
    //设置视图名称
    //视图名称=逻辑视图名称。
    mav.setViewName("index");
    return mav;
}

使用Model对象

Model是一个接口,因此不能像ModelAndView那样去new。

//使用Model对象的方式
@RequestMapping("/")
public String toIndexModel(Model model){
    //设置共享数据
    model.addAttribute("result","ModelResult");
    return "index";
}

使用Map集合

//使用Map对象的方式
@RequestMapping("/")
public String toIndexModel(Map<String,Object> map){
    //设置共享数据
    map.put("result","MapResult");
    return "index";
}

使用ModelMap

ModelMap的实例是由mvc框架自动创建并作为控制器方法参数传入,无需也不能自己创建。

如自己创建,则无法共享数据。

//使用ModelMap对象的方式
@RequestMapping("/")
public String toIndexModel(ModelMap modelMap){
    //设置共享数据
    modelMap.addAttribute("result","ModelMapResult");
    return "index";
}

到此这篇关于SpringMVC请求域对象的数据共享的文章就介绍到这了,更多相关SpringMVC请求域对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringMVC 域对象共享数据的实现示例

    目录 使用ModelAndView向request域对象共享数据 使用Model向request域对象共享数据 使用map向request域对象共享数据 使用ModelMap向request域对象共享数据 Model.ModelMap.Map的关系 向session域共享数据 向application域共享数据 使用ModelAndView向request域对象共享数据 index.html <a th:href="@{/testModelAndView}" rel="

  • 关于SpringMVC请求域对象的数据共享问题

    SpringMVC支持路径中的占位符. 可以通过路径的方式来传参.restful风格.使用{}做占位符在路径中指定参数,使用@PathVariable注解在参数列表中指定. <a th:href="@{/test/1}">传了参数</a> @RequestMapping("/test/{id}") public String test(@PathVariable("id")Integer id){ System.out.p

  • SpringMVC域对象共享数据示例详解

    目录 SpringMVC域对象共享数据 一.域对象 1. 域对象的作用 2. 域对象生命周期 3. 使用原则 二.向域对象共享数据 1. 向 request 域对象共享数据 2. 向 session 域共享数据 3. 向 application 域共享数据 SpringMVC域对象共享数据 一.域对象 1. 域对象的作用 就是在一定范围内可以共享数据,通常有 3 种: request: 一次请求,多个资源共享数据 session: 默认一次会话,多个请求,多个资源共享数据 servletCont

  • javaWeb 四大域对象详细介绍

    javaWeb 四大域对象 1)和属性相关的方法 Object getAttribute(String name) 获取指定的属性 Enumeration getAttributeNames() 获取所有的属性的名字组成的Enumeration对象 void removeAttribute(String name) 移除指定的属性 void setAttribute(String name, Object o) 设置属性 2)含有以上属性方法的域对象 pageContext,request,se

  • 浅谈SpringMVC请求映射handler源码解读

    请求映射源码 首先看一张请求完整流转图(这里感谢博客园上这位大神的图,博客地址我忘记了): 前台发送给后台的访问请求是如何找到对应的控制器映射并执行后续的后台操作呢,其核心为DispatcherServlet.java与HandlerMapper.在spring boot初始化的时候,将会加载所有的请求与对应的处理器映射为HandlerMapper组件.我们可以在springMVC的自动配置类中找到对应的Bean. @Bean @Primary @Override public RequestM

  • SpringMVC请求参数的使用总结

    本次数据请求使用postman, postman下载地址:https://www.getpostman.com/ 一.页面跳转 1. 页面跳转 @Controller public class IndexController { /** * 进入首页 * * @return 首页页面 */ @RequestMapping("/") public String index(){ return "/index"; } } 2. 请求转发 @Controller publ

  • springmvc参数为对象,数组的操作

    目录 参数为对象 1.提交表单 2.表单序列化,使用ajax提交 3.也可以这样写 4.如果结构复杂,使用@RequestBody 5.传递数组 springmvc接受复杂对象(对象数组) 前端: 后端: @RequestBody和@RequestParam的区别 参数为对象 1.提交表单 2.表单序列化,使用ajax提交 var data = $("#addForm").serialize(); $.ajax({ url : "addReportDo", //请求

  • SpringMVC请求流程源码解析

    目录 一.SpringMVC使用 1.工程创建 2.工程配置 3.启动工程 二.SpringMVC启动过程 1.父容器启动过程 2.子容器启动过程(SpringMvc容器) 3.九大组件的初始化 1.处理器映射器的初始化 2.处理器适配器的初始化 4.拦截器的初始化 三.SpringMVC请求过程 1.请求流程图 2.业务描述 一.SpringMVC使用 1.工程创建 创建maven工程. 添加java.resources目录. 引入Spring-webmvc 依赖. <dependency>

  • SpringMVC请求数据详解讲解

    目录 一.RequestMapping注解 1.RequestMapping的属性 2.RequestMapping的请求参数绑定 二.RequestParam注解 三.RequestBody注解 四.RestFul风格 1.@PathVariable注解 2.使用method属性指定请求类型 一.RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 作用在类上:第一级的访问目录 作

  • 详解springmvc 接收json对象的两种方式

    最近学习了springmvc 接收json对象的两种方式,现在整理出来,具体如下: 1.以实体类方式接收 前端 ajax 提交数据: function fAddObj() { var obj = {}; obj['objname'] = "obj"; obj['pid'] = 1 ; $.ajax({ url: 'admin/Obj/addObj.do', method: 'post', contentType: 'application/json', // 这句不加出现415错误:U

随机推荐