springmvc值传递
1.页面向后台传值
A.HttpServletRequest方式:
package com.rong.controller; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.rong.entity.User;
import com.rong.service.UserService; @Controller
@RequestMapping("/user")
public class UserController {
@Resource
UserService userService;// 用接口,动态代理 @RequestMapping("/login.do")
public String login() {
return "login";
} /**
* 登录判断逻辑 页面传值方式一:借助servlet原生对象传值
* 在方法中只需要将原生的对象设置成参数,springMVC会自动的将对象注入到参数中传递过来
*/
@RequestMapping("/one.do")
public String one(HttpServletRequest request) {
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = userService.login(new User(name, password));
if (user != null) {
return "main";
} else {
return "login";
}
} }
B.通过页面的name传值到后台,spring自动注入(页面的name必须与后台的参数名一致)
/**
* 页面传值方式二:借助表单的name属性名来传值 spring会自动根据参数的名字,从request中通过getParameter取值
* 需要表单的name值与方法中的参数名一致
*
* @author 容杰龙
*/
@RequestMapping("/two.do")
public String two(String name,String pwd){
User user = userService.login(new User(name, pwd));
if (user != null) {
return "main";
} else {
return "login";
}
}
C.通过@RequestParam注解传值
/**
* 页面传值方式三:
* 通过RequestParam注解来解决表单的name与请求处理方法参数名不一致问题
* @RequestParam("name")String userName
* 告诉spring从request的name的参数名上获取值绑定到userName参数上
*
*/
@RequestMapping("/three.do")
public String three(@RequestParam("name")String userName,@RequestParam("pwd")String password){
User user = userService.login(new User(userName, password));
System.out.println(user);
if (user != null) {
return "main";
} else {
return "login";
}
}
/**
* 页面传值方式三:
* 通过RequestParam注解来解决表单的name与请求处理方法参数名不一致问题 @RequestParam("name")String
* userName 告诉spring从request的name的参数名上获取值绑定到userName参数上
*
*/
@RequestMapping("/three.do")
// RequestParam中的required是指这个参数是否客户端必须提供,defaultValue则是如果没有提供该参数默认值是什么
public String three(@RequestParam(name = "name", required = false, defaultValue = "rjl") String userName,
@RequestParam(name = "pwd", required = false) String password) {
System.out.println(userName+";"+password);
User user = userService.login(new User(userName, password));
System.out.println(user);
if (user != null) {
return "main";
} else {
return "login";
}
}
D.通过spring的自动封装机制实现封装成bean对象
/**
* 页面传值方式四:通过spring提供的bean封装功能
* 1.需要页面的name值与bean的属性名一致
* spring会自动调用setXXX属性的方法来赋值
* 2.在方法中的参数指定为该bean的类型参数 参数名随意
* 3.有些情况下bean的某些属性没有值,则spring自动赋值为null
*
*/ @RequestMapping("/four.do")
public String four(User user){
User MyUser = userService.login(user);
System.out.println(MyUser);
if (MyUser != null) {
return "main";
} else {
return "login";
}
}
2.后台向页面传值
A.利用原生的request或session等对象传值
B.通过ModelAndView传值
/**
* 后台传值到页面方式二:通过ModelAndView传值
* ModelAndView(viewName, model) :viewName 视图字符串 model是模型数据,类型是Map类型
* spring会从modelAndView对象中获取map对象,然后将map.key当成是request的attribut的name,map.value当
* 成request的attribut的值
* request.setAttribute(model的条目.getKey(),model的条目.getValue())
*
*/ @RequestMapping("/five.do")
public ModelAndView five(User user) {
System.out.println(user);
User login = userService.login(user);
Map<String, Object> map = new HashMap<>();
ModelAndView modelAndView = null;
if (login != null) {
map.put("user", login);
modelAndView = new ModelAndView("main", map);
} else {
map.put("msg", "login fail!");
modelAndView = new ModelAndView("login", map);
}
return modelAndView;
}
C.通过ModelMap传值
/**
*
* @param user
* @param modelMap
* 该对象由spring注入,只需要给其绑定数据,spring会根据modelMap对象的key和value绑定
* request的attribute
*
*/
@RequestMapping("/six.do")
public String six(User user, ModelMap modelMap) {
System.out.println(user);
User login = userService.login(user);
if (login != null) {
modelMap.put("user", login);
return "main";
} else {
modelMap.put("msg", "login fail!");
return "login";
}
}
springmvc值传递的更多相关文章
- 《Java从入门到放弃》入门篇:springMVC数据传递
springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...
- [SpringMVC-值传递] 初始SpringMVC--SpringMVC中的值传递
把页面中输入的值传递到后台以及后台向前台传递,有以下几种方式 这里以登录为例子,实现打印前端页面的值 1,新建一个控制器,根据不同的请求地址实现不同的请求方式 LoginController.java ...
- Java 为值传递而不是引用传递
——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易 ...
- python 引用传递与值传递
https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/16/README.html 1.也就是如果传可变对象,就是引用传 ...
- java的值传递笔记
1. 背景:开发小伙伴突然问我java是值传递还是引用传递,我说当然是值传递,只不过有时候传递一个对象时实际传递的是对象的地址值,所以让人容易产生一种引用传递的假象,貌似在李刚的疯狂java讲义有提到 ...
- Java 中的值传递和参数传递
Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能 值传递:方法调用时,实际参数 ...
- java是值传递还是引用传递
首先写一个简便的Employee,以便测试使用. class Employee { private String name; public Employee(String name) { this.n ...
- Java中值传递和引用传递的概念
很多书中都提到了在Java中只存在值传递,但是今天在一个NanoHTTPD的源码中看到这样一段: if (qmi >= 0) { decodeParms(uri.substring(qmi + ...
- javascript中值传递与值引用的研究
今天重新看了一下<javascript高级程序设计>,其中讲到了javascript中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...
随机推荐
- ECShop全系列版本远程代码执行漏洞复现
前言 问题发生在user.php的display函数,模版变量可控,导致注入,配合注入可达到远程代码执行 漏洞分析 0x01-SQL注入 先看user.php $back_act变量来源于HTTP_R ...
- dns欺骗之ettercap
ettercap是一个基于ARP地址欺骗方式的网络嗅探工具,主要适用于局域网. ettercap是一款现有流行的网络抓包软件,它利用计算机在局域网内进行通信的ARP协议的缺陷进行攻击,在目标与服务器之 ...
- USB-Blaster驱动安装失败——文件哈希值不在指定目录中
右击此电脑,选择管理,选择设备管理器,更新USB-Blaster驱动出现问题 问题: 文件的哈希值不在指定的目录文件中,如图: 解决办法: Windows键+R→shutdown.exe /r /o ...
- 20155215 2016-2017-2 《Java程序设计》第3周学习总结
20155215 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 第四章主要讲了类的构建,数组对象,字符串对象的构建与操作等.要学会区分基本类型与类类 ...
- 实验四: Android程序设计
实验四 Android程序设计 1 实验目的及要求 1.安装 Android Stuidio. 2.完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号. ...
- day 12 列表字典 补充
1.列表list的遍历 ##### while遍历 需要len(list) list = [11,22,33,44,55] len_list = len(list) i = 0 while i< ...
- 【LOJ6433】【PKUSC2018】最大前缀和
[LOJ6433][PKUSC2018]最大前缀和 题面 题目描述 小 C 是一个算法竞赛爱好者,有一天小 C 遇到了一个非常难的问题:求一个序列的最大子段和. 但是小 C 并不会做这个题,于是小 C ...
- 【Windows定时关机】windows实现定时关机与取消
背景:本人昨晚本来打算将电脑设置为晚上12点 30定时关机,结果写成了:12:30,所以就在刚才,我正玩游戏的时候, 电脑弹出提示:“windows将在一分钟内关闭”,我刚开始一脸懵逼,后来打开昨天敲 ...
- 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)
前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wc ...
- 博弈论(Game Theory) - 04 - 纳什均衡
博弈论(Game Theory) - 04 - 纳什均衡 开始 纳什均衡和最大最小定理是博弈论的两大基石. 博弈不仅仅是对抗,也包括合作和迁就,纳什均衡能够解决这些问题,提供了在数学上一个完美的理论. ...