SpringMVC方法的返回值类型和自动装配
1、 void类型作为返回值类型
/**
* 如果方法写成了void就跟原来servlet含义是差不多 的
* json
*/
@RequestMapping("/firstRequest")
public void firstRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException {
UserInfo info=new UserInfo();
info.setUserid(1);
info.setUserName("李四");
/**
* json格式传递
*/
response.setCharacterEncoding("UTF-8");
String value= JSON.toJSONString(info);
response.getWriter().write(value);
}
代码实现
2 、String类型作为返回值类型
/**
* 返回值类型为String时,一般用于返回视图名称
* 1、当方法返回值为null时,默认将请求路径当做视图 forward:/jsp/index.jsp 如果说没有视图解析器,返回值为null携带数据只能用json
* 2、当方法返回一个String的字符串时,当字符串为逻辑视图名时只返回视图,如果携带数据则使用request,session或者json
* 3、当方法返回值加入forward时代表转发,如果写为redirect:xxxx代表重定向,不是返回视图了,但是不会这样做!!
*/
@RequestMapping("/secondRequest")
public String secondRequest(HttpServletRequest request, HttpServletResponse response){
request.setAttribute("user","张三");
return "forward:/jsp/index.jsp";
}
代码实现
3、 Object类型作为返回值类型
/**
*Object
* 1.当方法返回值为null时,默认将请求路径当作视图 jsp/objectRequest.jsp 如果没有视图解析器,如果返回值为null携带数据只能用json
* 2.当方法返回值为String类型字符串时,就是视图的逻辑名称
* 3.当返回对象或者集合数据时要使用json格式字符串,可选fashjson手动转换 ,也可以使用jackson自动转换
*/
@RequestMapping("/ObjectRequest")
@ResponseBody
public Object ObjectRequest(){
List<UserInfo> userInfoList=new ArrayList<>();
UserInfo userInfo=new UserInfo();
userInfo.setUserid(111);
userInfo.setUserName("鸭头一号");
UserInfo userInfo1=new UserInfo();
userInfo1.setUserid(222);
userInfo1.setUserName("鸭头二号");
userInfoList.add(userInfo);
userInfoList.add(userInfo1);
return userInfoList;
}
代码实现
4、 ModelAndView类型作为返回值类型
/**
* ModelAndView
* @param request 请求对象
* @param response 响应对象
* @return ModelAndView model是用来传递数据用的,view是所需要跳转的页面
*/
@RequestMapping("/model")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
ModelAndView modelAndView=new ModelAndView();
//携带给页面数据
modelAndView.addObject("user","鸭头");
//指定跳转页面(视图解析器配置前后缀)
modelAndView.setViewName("index");
return modelAndView;
}
代码实现
5、 请求参数的自动类型转换
5.1.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/oneRequest" method="post">
账户:<input type="text" name="userName"/>
密码:<input type="password" name="userpwd"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.1.2 Controller
(控制器Controller中的方法参数名称必须和表单元素的name属性值保持一致) @Controller
@RequestMapping("/fourth")
public class FourthController { /**
* 1、请求参数的自动类型转换
* @param userName
* @param userpwd
* @param model
* @return
* 控制器Controller中的方法参数名称必须和表单元素的name属性值保持一致
*/
@RequestMapping(value = "/oneRequest")
public String oneRequest(String userName,String userpwd, Model model){
System.out.println(userName+"\t"+userpwd);
model.addAttribute("userCode",userName);
return "welcome";
} }
代码实现
5.2 RequestMethod.POST
5.2.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/twoRequest" method="post">
账户:<input type="text" name="userName"/>
密码:<input type="password" name="userpwd"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.2.2 Controller
(此处必须设置请求类型,否则会显示405错误) /**
* 2、RequestMethod.POST 此处必须设置请求类型 否则将会显示405错误
* @param userName
* @param userpwd
* @param model
* @return
* 控制器Controller中的方法参数名称必须和表单元素的name属性值保持一致
*/
@RequestMapping(value = "/twoRequest",method = RequestMethod.POST)
public String twoRequest(String userName,String userpwd, Model model){
System.out.println(userName+"\t"+userpwd);
model.addAttribute("userCode",userName);
return "welcome";
}
代码实现
5.3 @RequestParam注解
5.3.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/formRequest" method="post">
账户:<input type="text" name="userName"/>
密码:<input type="password" name="userpwd"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.3.2 Controller
/**
* 3.@RequestParam 注解
* 接收零散参数:装配原则为传递参数名和方法接收参数名一致
* defaultValue默认值 required代表是否必须传递
* @RequestParam 注解
*/
@RequestMapping(value = "/formRequest")
public String formRequest(@RequestParam(name = "userName",defaultValue = "鸭头") String userName, @RequestParam(name = "userpwd")String userpwd, Model model){
System.out.println(userName+"\t"+userpwd);
model.addAttribute("userCode",userName);
return "welcome";
}
代码实现
5.4 RESTFUL风格的参数传递
5.4.1 Controller
/**
* 4、RESTFUL 风格的参数传递
* get请求时,如果需要传递参数,那么则把不能使用以往的方式?name=xxx&age=yy,但是现在要遵循restful风格,例:xxx/ttt/ddd
* 根据地址栏url匹配拿值 使用@PathVariable(name=地址栏中的参数映射)
*/
@RequestMapping("/restfulRequest/{b}/{d}")
public String restfulRequest(@PathVariable(name = "b") String usercode, @PathVariable(name = "d")String userpwd){
System.out.println(usercode+"\t"+userpwd);
return "welcome";
}
代码实现
5.5 对象参数
5.5.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/Info" method="post">
账户:<input type="text" name="userName"/>
密码:<input type="password" name="userpwd"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.5.2 Controller
/**
* 5、对象参数
*/
@RequestMapping(value = "/Info")
public String UserRequest(UserInfo info){
System.out.println(info.getUserName());
return "welcome";
}
代码实现
5.6 域属性对象参数
5.6.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/userInfoRequest" method="post">
老师一号:<input type="text" name="teacher.teacherName"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.6.2 Controller
/**
* 6、域属性对象参数
*/
@RequestMapping(value = "/userInfoRequest")
public String UserInfoRequest(UserInfo info){
System.out.println(info.getTeacher().getTeacherName());
return "welcome";
}
代码实现
5.7 域属性集合参数
5.7.1 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="/fourth/userInfoRequest" method="post">
老师二号:<input type="text" name="teacherList[0].teacherName"/>
老师三号:<input type="text" name="teacherList[1].teacherName"/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
代码实现
5.7.2 Controller
/**
* 7、域属性集合参数
*/
@RequestMapping(value = "/userListRequest")
public String UserListRequest(UserInfo info){
System.out.println(info.getTeacherList());
return "welcome";
}
代码实现
SpringMVC方法的返回值类型和自动装配的更多相关文章
- MVC方法的返回值类型
MVC方法返回值类型 ModelAndView返回值类型: 1.当返回为null时,页面不跳转. 2.当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转. 3.当返回值指定了视图名,程序会按照 ...
- springMVC入门(四)------参数绑定与返回值类型
简介 从之前的介绍,已经可以使用springMVC完成完整的请求.返回数据的功能. 待解决的问题:如何将数据传入springMVC的控制器进行后续的处理,完成在原生servlet/jsp开发中Http ...
- MyBatis中Mapper的返回值类型
insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.del ...
- ResultMap和ResultType在使用中的区别、MyBatis中Mapper的返回值类型
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- 11.SpringMVC注解式开发-处理器方法的返回值
处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...
- SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 今天要记录的是处理方法,返回值为Object的那种,我给它分了一下类: 1.返回值为Object数值(例如1) ...
- SSM框架之SpringMVC(4)返回值类型及响应数据类型
SpringMVC(4)返回值类型及响应数据类型 1. 返回值分类 1.1. 返回字符串 Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址. @RequestM ...
- SpringMVC——返回值类型
1.void作为返回值类型 如果你的方法写成了Void就跟原来Servlet含义是差不多的 @RequestMapping("/index*") public void first ...
- Java学习笔记13---如何理解“子类重写父类方法时,返回值若为类类型,则必须与父类返回值类型相同或为其子类”
子类重新实现父类的方法称重写:重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改:仅当返回值为类类型时,重写的方法才可以修改返回值类型,且必须是父类方法返回值的子类:要么就不修改 ...
随机推荐
- Vm虚拟机最小化安装linux并配置NAT网络连接(全图)
- navicat for mysql 连接 mysql 出现Client does not support authentication protocol requested by server解决方案
一 .桌面左下角windows图标--搜索框内输入cmd,结果如图所示,点击cmd.exe,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回车. 二. 在出来的 ...
- Codefest19受虐记
date: 2019-08-28 前言 比赛链接:Codefest 19 A题 思路: 这是一道水题.你对着样例递推打一个表出来,会发现结果三个一组循环. 例如:A = [3, 4, 7, 3, 4, ...
- MATLAB实例:绘制折线图
MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...
- mysql windows 安装5.7
E:\MySQL\MySQLServer57\bin>net start mysqlMySQL 服务无法启动. 解决办法: 手动在安装目录创建文件 my.ini [mysql] # 设置mysq ...
- PAT 1006 Sign In and Sign Out 查找元素
At the beginning of every day, the first person who signs in the computer room will unlock the door, ...
- 微信小程序之左右布局
本文以一个简单的小例子,简述在微信小程序开发中左右布局功能的实现方式,主要涉及scroll-view ,列表数据绑定,及简单样式等内容,仅供学习分享使用. 概述 在微信小程序开发中,左右分栏(左边显示 ...
- Python中经典排序方法
数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法. 首先,排序方法可以大体分为插入排序.选择排序.交换排序.归并排序和桶排序四大类,其中,插入排序又分为 ...
- iOS中点击按钮跳转到外部浏览器和内部打开
如图所示,需要实现点击一个按钮,跳转到指定网页: -(void)pushBtnCellClickDeleate{ NSLog(@"跳转"); //在APP内部打开指定网页 UIWe ...
- NumPy数据的归一化
数据的归一化 首先我们来看看归一化的概念: 数据的标准化(normalization)和归一化 数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价 ...