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中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...
随机推荐
- urllib库使用方法1 request
urllib是可以模仿浏览器发送请求的库,Python自带 Python3中urllib分为:urllib.request和urllib.parse import urllib.request url ...
- Python学习之——Python安装
环境:Centos6.5+python2.7.5 1.centons6.5系统中是已经安装了python的,先查看版本是不是需要的 python --version 2.安装一些必要的包,防止后面需要 ...
- Python3 图像识别(一)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.环境准备: 1.Python3.x(我是用的是Python3.6.5),这个问题不大,只要3.4以上就OK. ...
- Word中用VBA插入一个文件夹里的所有.jpg图片
每四张图片放在一页,第一行为四张图片的文件名 插入图片调整尺寸参考 Sub final() Dim FN As String, N%, W#, H#, PW#, PH# With ActiveDocu ...
- 20155308 实验四 Android开发基础
20155308 实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组件.布局管理器的使用: 掌握Android中 ...
- vector的二维用法+前缀和
题目链接:https://codeforces.com/contest/1082/problem/C(C. Multi-Subject Competition) A multi-subject com ...
- STM32L431仿真卡在HAL_InitTick(TICK_INT_PRIORITY);
1. 使用IAR 8.20版本,STM32L431RBT芯片,JLINK V9仿真器,实际仿真测试的时候卡在如下的函数 /* Use SysTick as time base source and c ...
- Eclipse 使用过程中的问题及解决方法
1.Eclipse中java文件和jsp字体大小设置 1.更改所有文件的字体显示大小过程: Window->preferences->General->Appearance-> ...
- MAVEN相关文章
Maven入门指南① :Maven 快速入门及简单使用 Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目 Maven入门指南③:坐标和依赖 Maven入门指南④:仓库 M ...
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...