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参数处理的更多相关文章

  1. spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping

    spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...

  2. spring mvc 参数

    Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于V ...

  3. spring mvc参数绑定

    spring绑定参数的过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接 ...

  4. Spring mvc参数类型转换

    1,需求 有时候我们接收到的参数为String类型的,但是我们需要将它们转化为其他类型的如:date类型,枚举类型等等,spring mvc为我们提供了这样的功能. 2,配置文件 在springmvc ...

  5. Spring MVC参数封装传递

    在Spring MVC中,前端JSP页面可以传递  基本类型(int,String).实体类型.包装类型.数组类型.集合类型(List.map )等. 假如在传递的类型中有 Date类型的字段,需要在 ...

  6. spring mvc 参数绑定

    基础类型 原始类型:id必须要传,否则报错. @RequestMapping("/test") @ResponseBody public ResponseData test(int ...

  7. Spring MVC 参数必填项导致客户端报 HTTP 400 并且无法进入断点的问题

    1.问题 Spring MVC 在参数上设置了必填项,post 请求时报 HTTP 400 并且未进入断点,如将“年龄”设置为了必填项: @RequestParam( value="age& ...

  8. Spring MVC 参数的绑定方法

    在Spring MVC中,常见的应用场景就是给请求的Url绑定参数.本篇就介绍两种最最基本的绑定参数的方式: 基于@RequestParam 这种方法一般用于在URL后使用?添加参数,比如: @Req ...

  9. Spring MVC参数绑定(如何接收请求参数及返回参数)

    在SpringMVC interceptor案例实践中遇到了获取jsp表单传递参数失败的问题,怎么的解决的呢?下面详细介绍. 先讲述下https://www.cnblogs.com/ilovebath ...

随机推荐

  1. 【Go】四舍五入在go语言中为何如此困难

    四舍五入是一个非常常见的功能,在流行语言标准库中往往存在 Round 的功能,它最少支持常用的 Round half up 算法. 而在 Go 语言中这似乎成为了难题,在 stackoverflow ...

  2. 腾讯IOT安卓开发初探

    目录 腾讯IOT 安卓开发初探 Tecent IOT 开发平台的使用 新建项目 创建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 安卓开发 前置配置 data.json ...

  3. Sqoop(三)将关系型数据库中的数据导入到HDFS(包括hive,hbase中)

    一.说明: 将关系型数据库中的数据导入到 HDFS(包括 Hive, HBase) 中,如果导入的是 Hive,那么当 Hive 中没有对应表时,则自动创建. 二.操作 1.创建一张跟mysql中的i ...

  4. android 百度地图 团队开发及正式apk发布

    百度地图开发关键是获取正确的API Key,  百度官网写的只是在你本地的机器能运行 你把AndroidManifest.xml(这里是最新的v2_4_1,API Key配置在这里) svn 提交后  ...

  5. Lagom 官方文档之随手记

    引言 Lagom是出品Akka的Lightbend公司推出的一个微服务框架,目前最新版本为1.6.2.Lagom一词出自瑞典语,意为"适量". https://www.lagomf ...

  6. MySql创建存储过程,并使用事件定时调用

    一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板  delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...

  7. 细说 js 的7种继承方式

    在这之前,先搞清楚下面这个问题: function Father(){} Father.prototype.name = 'father'; Father.prototype.children = [ ...

  8. 使用 C# 9 的records作为强类型ID - JSON序列化

    在本系列的上一篇文章中,我们注意到强类型ID的实体,序列化为 JSON 的时候报错了,就像这样: { "id": { "value": 1 }, "n ...

  9. (十九)hashlib模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 注意:md5和sha25 ...

  10. Java高并发与多线程(二)-----线程的实现方式

    今天,我们开始Java高并发与多线程的第二篇,线程的实现方式. 通常来讲,线程有三种基础实现方式,一种是继承Thread类,一种是实现Runnable接口,还有一种是实现Callable接口,当然,如 ...