关于SpringMVC请求域对象的数据共享问题
短信预约 -IT技能 免费直播动态提醒
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请求域对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341