业务方法的参数

业务方法的参数类型、参数个数是任意的,根据需要使用。

常见的参数类型:

  • HttpServletRequest、HttpServletResponse、HttpSession

     获取Servlet原生的API

  • Model 、ModelMap

     向视图传递数据,会自动将Model、ModelMap中的数据传给视图。

  • 简单数据类型 、实体类

     接收表单传递的数据


常见的返回值类型

  • ModeAndView

   视图名+数据

  • String

      返回视图名,会与视图解析器中的前缀、后缀拼接起来,组成完整的视图名。

   可以和@ResponseBody配合使用,直接向浏览器输出字符串。

  • void

     有时候接收到请求后,做一些操作就OK了,不必返回视图来响应,这时可以把返回值类型写成void。

   如果想转发、重定向、向视图传递数据,可以传入参数HttpServletRequest、HttpServletResponse。

   需要注意的是,使用HttpServletRequest、HttpServletResponse进行转发、重定向时,不会使用视图解析器,需要写完整的视图名。


示例   返回视图名

比如登录成功,返回某个视图名,转发到指定的页面。

    @RequestMapping("/login")
public String login(){
//....
return "index";
} @RequestMapping("/logout")
public String logout(){
//....
return "index";
} @RequestMapping("/upload")
public String upload(){
//....
return "success";
}

示例  使用Model向视图传递数据

    @RequestMapping("/handler")
public String handler(Model model){
User user = new User();
user.setUsername("chy");
user.setPassword("abcd"); model.addAttribute("user", user);
return "user_info";
}

在视图中可通过${key}的方式获取对应的value。

Model中可储存多个数据,使用多个setAttribute()即可,数据的类型可以不相同(实质是使用Map储存数据)。


示例   直接输出到浏览器

方式一:

    @RequestMapping("/user")
@ResponseBody
public String handler(){
return "<h2>hello</h2>";
}

把字符串添加到响应体中返回给浏览器。浏览器会解析里面的html标签。

方式二:

    @RequestMapping("/user")
public void handler(HttpServletResponse response) throws IOException {
response.getWriter().print("<h1>hello</h1>");
}

注意print()才是输出到浏览器页面上,write()是向浏览器写数据,浏览器会把write()的内容保存到文件中(下载)。

SpringMVC controller中业务方法的参数、返回值的更多相关文章

  1. 13 继续C#中的方法,带返回值的方法介绍

    在这一个练习中,我们要使用带返回值的方法.如果一个方法带返回值,那么它的形式是这样的. 定义一个带返回值的C#方法 static 返回类型 方法名字 (参数类型 参数1的名字,参数类型 参数2的名字) ...

  2. 单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

    using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Stu ...

  3. Spring的Aspect切面类不能拦截Controller中的方法

    根本原因在于<aop:aspectj-autoproxy />这句话是在spring的配置文件内,还是在springmvc的配置文件内.如果是在spring的配置文件内,则@Control ...

  4. 反射找Controller中的方法

    /// <summary> /// 根据接口编码APICode,调用相应的webapi方法,注意返回值是json字符串 /// </summary> /// <param ...

  5. js中settimeout方法加参数

    js中settimeout方法加参数的使用. 简单使用看w3school  里面没有参数调用,  例子: <script type="text/javascript"> ...

  6. ASP.NET MVC4在View中调用当前Controller中的方法

    调用当前Controller中的方法 @{ ((HomeController)ViewContext.Controller).Method1(); } 调用静态方法 @{ SomeClass.Meth ...

  7. Java学习笔记13---如何理解“子类重写父类方法时,返回值若为类类型,则必须与父类返回值类型相同或为其子类”

    子类重新实现父类的方法称重写:重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改:仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类:要么就不修改 ...

  8. SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改

    有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程 CREATE PROCEDU ...

  9. 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S

    题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...

随机推荐

  1. vue 事件总线(bus)

    1.全局引入bus Vue.prototype.$bus = new.Vue() 2.组件间传值使用(在发送事件时接收组件会实时接收到, 可以用做兄弟组件间相互传值, 但页面跳转组件间有问题 通过$e ...

  2. centosflask+uWSGI+nginx部署

    centosflask+uWSGI+nginx部署 1.      概念 Flask自带webserver--Werkzeug,可以搭建服务,运行网站.但在开发时,一般会用专业的--uWSGI. 另外 ...

  3. jsp include参数传送接收与应用

    先看一个简单的应用,在a.jsp中写如下代码 <html> <head></head> <body> <div> <jsp:inclu ...

  4. springboot集成拦截器

    一.首先对HandlerInterceptor进行封装,封装为MappingInterceptor.封装的方法里添加拦截器起作用的路径addPathPatterns(),及需要排除路径的方法exclu ...

  5. cmd命令下载maven管理需要的依赖jar包

    首先在maven官网https://mvnrepository.com/  搜索你需要的jar包,找到下面的下载链接,在修改命令,然后cmd下载. cmd命令下载Maven需要jar包 cmd输入下面 ...

  6. Java Juc学习笔记

    Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括 ...

  7. golang 中的引号

    前言 go中的单引号',双引号",反引号`,他们用法的区别. 需要先了解字符编码的区别,由来. 单引号 单引号里面只能有一个字符,一般只能用来包裹一个字节的ASCII码字符.他的类型是Gol ...

  8. 【转载】使用阿里云code和git管理项目

    使用代码云托管和git来管理项目可以使多客户端和多人开发更加高效.通过对比github,bitbucket和国内一些云托管服务发现阿里云在项目空间和传输速度及稳定性上更能满足公司开发的要求.本文将介绍 ...

  9. day18-Python运维开发基础(单继承 / 多继承 / 菱形继承、类的多态)

    1. 单继承 / 多继承 / 菱形继承 # ### 继承 : 一个类除了自身所拥有的属性方法之外,还获取了另外一个类的成员属性和方法 """ 一个类可以继承另外一个类,那 ...

  10. FFmpeg——命令笔记

    1. 获取 dshow设备列表 ffmpeg -list_devices true -f dshow -i dummy 2. 通过UDP流推ts文件: ffmpeg.exe -re -i zhen.t ...