因为项目中要用到SpringMVC,这段时间便快马加鞭地学习了一下。所以这段时间呢会陆续更新关于springMVC的博客。由于项目那边也比较紧,月底之前要完成第一次迭代,所以可能有的时候博客更新并不是那么及时和连贯,敬请谅解。
今天,我们从SpringMVC最基础的传递参数开始讲起。其实看视频的过程就是一个了解的过程,但是真正要运用到实践中并成为自己的东西,这需要一个过程,而且这个过程很必要也很重要。在看视频学习的过程中,你会发现,虽然你跟着视频敲下来了,貌似很多东西也懂了,但是把全部东西收起来,自己敲自己写,总会有一种无力地感觉。你说对了,就是写得少、练得少。我们能干活,不缺乏照猫画虎的能力,却缺少自己写的能力,这是我们需要规避和提升的地方。
因为springMVC我也是刚刚学,所以很多地方都是从最基础的部分开始。这也就是告诉大家了,如果您已经很牛、很擅长这部分的内容,可能我的博客并不是特别适合你。我这个写博客的过程,既是整理知识的过程,总结的过程,同时又是本着分享的目的,同一同开始学习springMVC的同学一起交流经验。好了,闲话不多说,我们开始正题。
所谓参数传递,就是从前台JSP页面传到后台Controller这么一个过程。看着很简单哈,但是不要眼高手低哦,跟着我一起去看看这个过程是怎样的一个过程。
首先,传递不是特别大的参数的时候,就按照常规的方式来。新建一个jsp页面,add.jsp
<script type="text/javascript"> <%--用js提交代码--%> function addUser(){ var form = document.form[0]; form.action = "/springMVC/user/data/addUser"; form.method = "get"; form.submit(); } </script> </head> <body> <h>添加用户</h> <form action=""> 姓名:<input type="text" name="username"> 年龄:<input type="text" name="age"> <input type="button" value="添加” onclick="addUser()"> </form> </body>
再创建一个jsp页面,userManager.jsp,留着添加完页面跳转。
<body> <h1>用户管理</h1> 姓名:*************${userName } <br/> 年龄:*************${age } </body>
接下来就要看前台和后台怎么传递参数了。我们先在后台创建一个Controller类DataController.java。这里有一个问题,不知道大家注意没有,这个也是springMVC参数传递的关键,就是前台的jsp页面中的<input>标签中的name属性会自动跟后台Controller方法中的参数进行匹配,所以就要求二者的名称必须一致,否则参数就传递不过去了。
@Controller @RequestMapping("/user/data") public class DataController { //给一个方法注解,方法的注解是什么样子的呢?即@RequestMapping @RequestMapping("/addUser") //这个注解里有两个参数,其中value是什么意思呢?就是我们要请求的url地址 //另外一个参数就是method,就是以哪种方式请求过来 public String addUser(String userName, String age, HttpServletRequest request){ request.setAttribute("userName", userName); request.setAttribute("age", age); return "/userManager"; } @RequestMapping("/delUser") public String delUser(){ return ""; } //先到达jsp页面,才能去填写数据、点击按钮、传递参数,所以编写一个到达页面的方法 @RequestMapping("/toUser") public String toUser(){ return "/addUser"; } }
这样的话,整个springMVC从前台传递参数到Controller就结束了。作为springMVC的入门,有很多地方值得我们深挖,比如说web.xml配置文件、springMVC的配置文件、注解、前台jsp的很多属性是如何和后台相对应的等等。上面的例子介绍的是比较小的参数传递,如果碰上特别大的参数,该怎么办呢?下面我们继续介绍通过实体传递参数。 创建实体User.java实体。
package com.tgb.web.controller.entity; public class User{ private String username; private String age; //取值时用get方法 public String getUsername(){ return username; } //赋值用set方法 public void setUsername(String username){ this.username = username; } //注意的是,实体中这部分的get/set方法名中(抠去get/set的部分)就是jsp页面中input标签中的name值(一律改成小写) public String getAge(){ return age; } public void setAge(String age){ this.age = age; } }
上部分的controller部分DataController.java改成如下:
//public String addUser(String userName, String age, HttpServletRequest request){ //引用了实体之后,参数部分由原来的单个参数变成了传递实体,直接写User user就可以了。 public String addUser(User user, HttpServletRequest request){ //request.setAttribute("userName", username); //request.setAttribute("age", age); //引用了实体之后,更改为: request.setAttribute("userName", user.getUsername()); request.setAttribute("age", user.getAge()); return "/userManager"; }
除此之外,还有一种方式,就是通过json去传递参数,对于springMVC刚入门的亲们而言,这种方式似乎有点儿难,但是如果您之前对json串很熟,那么这种传递参数的方式对您来说也是so easy。json就是一个key对应一个value,记得之前做WZQX_权限系统的时候,要实现一个从数据库中读取数据,动态加载成树形菜单的功能,当时我就是用zTree通过拼json串实现的。好了,回来继续说我们这个用json传递参数的例子,就在jsp页面中改成通过json传递就可以了,具体代码如下:
<html> <head> <!-- 引入jquery的包 --> <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> //用jquery方法获取json串,写一个jquery的最根本的目录 $(document).ready(function(){ $("#add").click(function(){ //首先取得表单里面的两个值 var userName = $("#userName").attr("value"); var age = $("#age").attr("value"); //定义一个json串,然后赋到json串里面 var user = {userName:userName,age:age}; //jquery去提交这个json串,采用Ajax的方式去提交 $.ajax({ url:"/springMVC6/user/data/addUserJson", type:"post", data:user, success:function(data){ alert("userName----->" + data.userName + "age------->" + data.age ); } }) }); }); </script> </head> <body> <h>json添加用户</h> 姓名:<input type="text" id="userName" name="userName"> 年龄:<input type="text" id="age" name="age"> <input type="button" id="add" value="添加"> <%--给这个input标签绑定事件,就是上面那个ready函数 --%> </body> </html>
这样,springMVC中传递参数的例子到这里就差不多了。上面我们总共介绍了三种传递参数的方式,分部是单个传递、实体传递和通过json传递。其实不论是单个传递参数也好,通过实体传递还是通过json也好,大体上的原理是相通的吗,只要掌握了最基本的,其他的都是在最基础上稍作那么一点点改动。
好了,今天关于springMVC传递参数的博客就到这里了。下一篇文章我们来研究一下springMVC静态文件的访问。敬请期待,欢迎在下面留言和我沟通.....