【springMVC】之参数传递

来源:互联网 发布:java制作计算器 编辑:程序博客网 时间:2024/03/29 17:23

    因为项目中要用到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静态文件的访问。敬请期待,欢迎在下面留言和我沟通.....

5 0
原创粉丝点击