Spring MVC参数处理
Spring MVC通过分析处理处理方法签名,将HTTP请求信息自动绑定到处理方法的参数中。
@RequestMapping : 获取前台传递的参数
@RequestMapping("/p1")
public String param1(String uname,String pwd){
//接收参数
//调用业务层
//调用Dao。。。。
if("admin".equals(uname)&&"123".equals(pwd)){
//登录成功
}else{
//登录失败
}
System.out.println("uname="+uname+",pwd="+pwd);
return "hello";
}
@RequestHeader : 将请求头中的属性值绑定到处理方法的参数中。
@RequestMapping("/p4")
public String param4(@RequestHeader("Cookie")String cookie){
System.out.println("cookie:"+cookie);
return "hello";
}
@CookieValue: 将请求中的Cookie的值绑定到处理方法的参数中。
@RequestMapping("/p5")
public String param5(@CookieValue("JSESSIONID")String sessionid){
return "hello";
}
使用POJO,Spring MVC 会将请求参数和POJO中的属性进行匹配,自动填充属性,并支持级联。
@RequestMapping("/p6")
public String param6(User user){
//new User
//set+Uname
System.out.println(user);
return "hello";
}
使用Servlet API作为参数
HttpServletRequest
@RequestMapping("/s1")
public String s1(HttpServletRequest request){
System.out.println(request.getParameter("uname"));
System.out.println(request.getParameter("pwd"));
request.setAttribute("sex", "man");
return "hello2";
}
HttpServletResponse
/**
* 方法返回值可以是void
* 如果没有HttpServletResponse,返回值一定不能是void
*/
@RequestMapping("/s2")
public void s2(HttpServletResponse response) throws IOException{
/*response.sendRedirect("../WEB-INF/pages/hello2.jsp");*/
response.sendRedirect("../test.jsp");
}
@RequestMapping("/s3")
public void s3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("../test.jsp").forward(request, response);
}
HttpSession
/**
* 把User保存在session中
* @param session
*/
@RequestMapping("/s4")
public String s4(HttpSession session,User user){
session.setAttribute("user", user);
return "hello3";
}
- @SessionAttributes(“user”)
- @SessionAttributes:
- 可以把模型数据当中对应的对象存储到session中
- session.setAttr(“user”,request.getAttr(“user”))
public class SessionController {
@RequestMapping("/se1")
public String sess1(User user,Notice notice) {
return "hello6";
}
/**
* 如果参数列表当中有两个类型相同的参数,只会在模型数据中存储一个
* 使用@ModelAttribute可以给两个类型相同的对象做区分,
* 让他们都可以存储在模型数据中
* 如果遇到有两个类型相同并且都需要存储到session中时,
* 可以使用model去解决问题
*/
@RequestMapping("/se2")
public String sess2(User user,User user2,Model model) {
model.addAttribute("user", user);
model.addAttribute("user2", user2);
return "hello6";
}
}
使用流作为参数
InputStream
OutputStream
@RequestMapping("/s5")
public void s5(OutputStream os) throws IOException{
os.write(new String("hcfgyhgghyvf").getBytes());
}
Reader
Writer
@RequestMapping("/s6")
public void s6(PrintWriter writer) {
writer.print("asdfghjkl");
}
总结:
- request,response,session 可以直接使用,不需要创建这个对象的类型
- 如果涉及到页面跳转,尽量不要使用request,response
- 如果使用了request和response进行页面跳转,它就不再使用视图解析器去匹配页面了(需要根据当前控制器的路径去匹配)
- 方法带返回值:String要在控制器当中做页面的跳转。(普通的控制器)
- 方法不带返回值:
- 1.通过request(转发)或者response(重定向)这里两个对象去做跳转
- 2.通过OutputStream或Writer直接在也页面显示内容。(前台是Ajax访问获取数据时)
- 如果返回值是void可以搭配ajax使用(ajax拿到的就是当前控制器的信息)
- 如果返回值不是void,必然要跳转页面。
Spring MVC参数处理的更多相关文章
- spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping
spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...
- spring mvc 参数
Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于V ...
- spring mvc参数绑定
spring绑定参数的过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接 ...
- Spring mvc参数类型转换
1,需求 有时候我们接收到的参数为String类型的,但是我们需要将它们转化为其他类型的如:date类型,枚举类型等等,spring mvc为我们提供了这样的功能. 2,配置文件 在springmvc ...
- Spring MVC参数封装传递
在Spring MVC中,前端JSP页面可以传递 基本类型(int,String).实体类型.包装类型.数组类型.集合类型(List.map )等. 假如在传递的类型中有 Date类型的字段,需要在 ...
- spring mvc 参数绑定
基础类型 原始类型:id必须要传,否则报错. @RequestMapping("/test") @ResponseBody public ResponseData test(int ...
- Spring MVC 参数必填项导致客户端报 HTTP 400 并且无法进入断点的问题
1.问题 Spring MVC 在参数上设置了必填项,post 请求时报 HTTP 400 并且未进入断点,如将“年龄”设置为了必填项: @RequestParam( value="age& ...
- Spring MVC 参数的绑定方法
在Spring MVC中,常见的应用场景就是给请求的Url绑定参数.本篇就介绍两种最最基本的绑定参数的方式: 基于@RequestParam 这种方法一般用于在URL后使用?添加参数,比如: @Req ...
- Spring MVC参数绑定(如何接收请求参数及返回参数)
在SpringMVC interceptor案例实践中遇到了获取jsp表单传递参数失败的问题,怎么的解决的呢?下面详细介绍. 先讲述下https://www.cnblogs.com/ilovebath ...
随机推荐
- jsonp详解及跨域请求
什么是JSONP? JSON是一种轻量级的数据传输格式语言,被广泛应用于当前Web应用中.JSON格式数据的编码和解析基本在所有主流语言中都被实现,所以现在大部分前后端分离的架构都以JSON格式进行数 ...
- CRM、DMP、CDP概念解析
CRM.DMP.CDP,都是什么鬼?有什么区别差异?别说你都懂 摘自https://maxket.com/crm-dmp-cdp/ 如果您不想多花人生中宝贵的十分钟,那么不用多考虑了,上CDP吧.如果 ...
- HystrixRequestContext实现Request级别的上下文
一.简介 在微服务架构中,我们会有这样的需求,A服务调用B服务,B服务调用C服务,ABC服务都需要用到当前用户上下文信息(userId.orgId等),那么如何实现呢? 方案一: 拦截器加上Threa ...
- zigzag压缩算法
前文 Base 128 Varints 编码(压缩算法) 介绍了Base 128 Varints这种对数字传输的编码,了解到了这种编码方式是为了最大程度压缩数字的.但是,在前文里,我们只谈论到了正数的 ...
- JS常见面试题,看看你都会多少?
1. 如何在ES5环境下实现let 这个问题实质上是在回答let和var有什么区别,对于这个问题,我们可以直接查看babel转换前后的结果,看一下在循环中通过let定义的变量是如何解决变量提升的问题 ...
- 风炫安全web安全学习第三十四节课 文件包含漏洞防御
风炫安全web安全学习第三十四节课 文件包含漏洞防御 文件包含防御 在功能设计上不要把文件包含的对应文件放到前台去操作 过滤各种../,https://, http:// 配置php.ini文件 al ...
- Command1
命令 [-参数][操作对象] ls -la /etc -l 以长格式显示详细信息 -a 显示目录下全部文件(包括隐藏文件) ls 执行权限:所有用户 功能:显示目录下的文件 ls -ald -d 查看 ...
- Redis集群搭建与简单使用【转】
Redis集群搭建与简单使用 安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都 ...
- python3 最基本且简单的实现组合设计模式
组合模式是把一个类别归为一个整体,并且组织多个整体之间的关系,使用通过树形结构来描述所有整体. 一般的编写方式为一个类别对象下添加多个该对象的元素,该对象又为其它对象下的元素.简单来说就是一个学校有一 ...
- 【Linux】fdisk -l发现有加号"+"
今天分区不够了,打算扩下分区,想起当时创建机器的时候还有大约80多个G没有用,今天打算重新利用上 就用了fdisk /dev/sda 创建了两个分区,但是发现分区下面有加号,感到而别的困惑 最后在很多 ...