Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(三)Spring MVC 参数传递
来源:互联网 发布:mac 控制安卓手机屏幕 编辑:程序博客网 时间:2024/05/17 23:52
1 不带参数
回顾一下第一篇中的示例代码:
// 访问URL:website_java2/enter/index.do @RequestMapping(value = "/index", method = RequestMethod.GET) public String index() { return "manage/enter/index"; }
该示例没有任何输入参数,也没有任何输出参数,仅仅是返回一个view。
RequestMapping是一个用来处理请求地址映射的注解,共有6个属性,如下:
value:指定请求的实际地址,指定的地址可以是URI Template 模式;
method:指定请求的method类型, GET、POST、PUT、DELETE等;
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
所以本示例代码的访问地址是:xxx/index.do,而且要是GET方式访问。
2 带输入参数
假设有如下表单:
<form id="loginForm" method="post" action="login.do"> <table> <tr> <td colspan="2"><h1>登录</h1></td> </tr> <tr height="30" > <td>用户名:</td> <td><input type="text" name="loginName"></input></td> </tr> <tr height="30" > <td>密码:</td> <td><input type="text" name="loginPwd"></input></td> </tr> <tr height="40" > <td colspan="2" align="right"><input type="submit" value="确定"/></td> </tr> </table></form>
访问的Action应该是这样的:
方法一:
@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(String loginName, String loginPwd) {String msg = "用户登录,用户名:" + loginName + ",密码:" + loginPwd;System.out.println(msg);return "manage/enter/main";}与上一个示例的区别是增加了2个输入参数,而且要是POST方式访问。
请注意表单的两个input名称与login的输入参数名称必须一致,如果不一致则需要使用RequestParam注解,修改上面的代码如下:
方法二:
// 访问URL:website_java2/enter/login.do@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(@RequestParam("loginName") String name, @RequestParam("loginPwd") String pass) {String msg = "用户登录,用户名:" + name + ",密码:" + pass;System.out.println(msg);return "manage/enter/main";}
public class User implements java.io.Serializable {private String loginName;private String loginPwd;public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}public String getLoginPwd() {return loginPwd;}public void setLoginPwd(String loginPwd) {this.loginPwd = loginPwd;}}
方法三:
// 访问URL:website_java2/enter/login.do@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(User user) {String msg = "用户登录,用户名:" + user.getLoginName() + ",密码:" + user.getLoginPwd();System.out.println(msg);return "manage/enter/main";}这里比较一个则比前方要简洁多了。
对于复杂的表单,可能需要映射到多个javabean中,假设有如下jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%><html><head><title>系统登录入口</title></head><body><form:form method="POST" action="login.do" modelAttribute="user"><table><tr><td colspan="2"><h1>登录</h1></td></tr><tr height="30"><td>用户名:</td><td><input type="text" name="loginName"></input></td></tr><tr height="30"><td>密码:</td><td><input type="text" name="loginPwd"></input></td></tr><tr height="40"><td colspan="2" align="right"><input type="submit" value="确定" /></td></tr></table></form:form></body></html>
这里注意一下form的生成方式,其实modelAttribute属性就是生成html代码中的form.id值,生成后的form如下:
<form id="user" action="login.do" method="POST">
这时Action可以修改为如下:
方法四:
// 访问URL:website_java2/enter/login.do@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(@ModelAttribute("user") User user) {String msg = "用户登录,用户名:" + user.getLoginName() + ",密码:" + user.getLoginPwd();System.out.println(msg);return "manage/enter/main";}
也就是使用ModelAttribute注解,指定form的id值。
3 带输出参数
我们修改最初(第一篇)中的代码如下:
方法一:
// 访问URL:website_java2/enter/index.do@RequestMapping(value = "/index", method = RequestMethod.GET)public String index(Map<String, Object> map) {logger.info("访问了index方法");map.put("title", "系统登录");map.put("date", "20150316");return "manage/enter/index";}
修改index.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html> <head> <title>系统登录入口</title> </head> <body> <form id="loginForm" method="post" action="login.do"> <table> <tr> <td colspan="2"><h1>${title}-${date}</h1></td> </tr> <tr height="30" > <td>用户名:</td> <td><input type="text" name="loginName"></input></td> </tr> <tr height="30" > <td>密码:</td> <td><input type="text" name="loginPwd"></input></td> </tr> <tr height="40" > <td colspan="2" align="right"><input type="submit" value="确定"/></td> </tr> </table> </form> </body></html>
方法二:
上例上使用的是map对象,当然也可以使用spring的Model对象:
// 访问URL:website_java2/enter/index.do@RequestMapping(value = "/index", method = RequestMethod.GET)public String index(Model model) {logger.info("访问了index方法");model.addAttribute("title", "系统登录");model.addAttribute("date", "20150316");return "manage/enter/index";}
jsp页面和浏览器显示的结果和上例一样。
4 同时带有输入和输出参数
参考2和3,同时带有输入和输出参数的示例如下:
// 访问URL:website_java2/enter/index.do@RequestMapping(value = "/index", method = RequestMethod.GET)public String index(String id, Model model) {logger.info("访问了index方法,id=" + id);model.addAttribute("title", "系统登录");model.addAttribute("date", "20150316");return "manage/enter/index";}
依次类推,Spring MVC使用还是挺方便的。
- Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(三)Spring MVC 参数传递
- Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(一)Spring MVC 3.1.0 环境搭建
- Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(四)Spring 3.1.0 整合
- Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(二)整合log4j日志工具
- Spring 4.x+Spring MVC 4.x+MyBatis 4.x 整合(五)MyBatis 3.2.5 整合
- spring 4.x + mybatis 3.x 整合
- mybatis 3.2.7 与 spring mvc 3.x、logback整合
- Spring MVC 4.x 知识点
- spring mvc 3.x json
- 基于Spring4.x 搭建 Spring MVC + MyBatis
- spring MVC 4.x 完整配置
- spring mvc 4.x 新特性
- spring mvc 4.x +json +maven 配置
- Spring 4.X整合Quartz2.X配置
- Spring MVC 3.x 核心讲解
- Spring MVC 3.x 消息转换器
- Spring MVC Mybatis 整合
- spring mvc mybatis 整合
- 20150316 N1
- 第一周项目四 图书馆的书
- 黑马程序员——java基础——IO--字节流,字符流
- CentOS安装VMware Tools+Linux读Windows文件
- onCreate(Bundle savedInstanceState)参数Bundle
- Spring 4.x+Spring MVC 4.x+MyBatis 3.x 整合(三)Spring MVC 参数传递
- 实模式和保护模式
- IOS开发—UITabBarController简单介绍
- C++ 封装,多态,继承特点
- GITHUB之GIT BASH使用教程
- Opencl how to choose work_group size
- 单调递增最长子序列
- android之uiaotumation与instrumentation注入MotionEvent和KeyEvent事件
- maven项目结构中properties文件的读取