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中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...
随机推荐
- 一步一步学习大数据:Hadoop 生态系统与场景
Hadoop概要 到底是业务推动了技术的发展,还是技术推动了业务的发展,这个话题放在什么时候都会惹来一些争议. 随着互联网以及物联网的蓬勃发展,我们进入了大数据时代.IDC预测,到2020年,全球会有 ...
- web前端知识点1
1. input属于窗体元素,层级显示比flash.其它元素都高.请判断这句话的正确与否. 错误 层级显示优先级: frameset > 表单元素 > 非表单元素 在html中,帧元素(f ...
- A1070
给出总价和需求量,求最大收益. 思路:求单价最高的,排序. #include<cstdio> #include<algorithm> using namespace std; ...
- 20155227 2016-2017-2 《Java程序设计》第一周学习总结
20155227 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 Java三个平台的区别. JDK.JRE.JVM区 ...
- httpclient在获取response的entity时报异常
httpClient报异常:Premature end of chunk coded message body: closing chunk expected 首先这个异常提示直译过来就是:被编码信息 ...
- bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏)
bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏) 据说正解是并查集???我不会 这不是一道匈♂牙利好题吗??? 一个装备的两个属性都向它连边,然后跑一遍匈♂牙利 注意: ...
- Flutter系列博文链接
Flutter系列博文链接 ↓: Flutter基础篇: Flutter基础篇(1)-- 跨平台开发框架和工具集锦 Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法 Flutt ...
- Html+CSS 学习第二天
趁着这两天,将html和CSS基本上学了一遍,大家如果想学习的话,可以百度w3cSchool,进行学习. 基础我就不说了,直接将我做的一个登陆页面放上去.刚学完CSS,写个漂亮的登录界面恶心死我了,感 ...
- 我们一起学习WCF 第三篇头消息验证用户身份
前言:今天我主要写的是关于头消息的一个用处验证用户信息 下面我画一个图,可以先看图 第一步:我们先开始做用户请求代码 首先:创建一个可执行的上下文对象块并定义内部传输的通道 using (Operat ...
- winform圆角窗体实现
winform圆角窗体实现 1.窗体的FormBorderStyle设置成None,不要控制边框 2.TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了 3.以此为 ...