后台学习二---springmvc前后台交互

工欲善其事,必先利其器。将框架搭建好之后,我们现在开始具体的学习,这次讲讲页面的跳转、表单的提交

2. 开始

2.1 简单的页面跳转

项目启动的时候,默认打开的是index页面,我们修改下index.jsp文件,在上面加个链接(我随便写的链接)
这里写图片描述
在views文件夹下面建一个jsp文件,test1.jsp,现在要点击链接跳转到这个页面
这里写图片描述
为了完成这个功能,我们去后台,增加映射,可以处理对‘/test/href1’的响应,在controller包里面新建java文件,名字随便起,但一般都会起‘*Controller.java’,以示他是用来控制请求的,我这就起个‘mainController.java’
这里写图片描述
然后在开头加一个@Controller,这样这个文件就会被spring认为是处理请求的
这里写图片描述
接着开始写函数,@RequestMapping() 里面写链接,名字都随便起,重要的是对应的url映射和返回的文件
这里写图片描述
好了,简单的一个映射完成了,我们启动看看
这里写图片描述

这里写图片描述

2.2 页面跳转,返回后台数据

在index.jsp页面新加链接
这里写图片描述
新加test2.jsp文件,这里要注意的是,这里用到了EL表达式,不懂的去百度了解一下,后台返回的数据用EL表达式来输出${后台返回的数据的名字}
这里写图片描述
后台新加方法,在参数里面加一个Model 参数,用来保存数据返回给前台,他的addAttribute(name,value) 方法,对应着name-value,这里我生成了一个0-100的随机数,赋给‘data’返回给前台,然后前台用EL表达式输出
这里写图片描述
看看页面效果
这里写图片描述

这里写图片描述

2.3 前台将数据放到url上,传给后台

这次我们将数据放在url上,从前台传到后台,下面js函数的意思是页面上输入数据, 然后<a>href 属性就会修改,将数据放到url上传给后台
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<body>
<h2>Hello World!</h2>
<a href="/test/href1">测试页面一</a><br>
<a href="/test/href2">测试页面二</a><br>
<br>
<label for="data">输入数据</label>
<input type="text" id="data" name="data" onchange="changeUrl(this)"><br>
<a id="test3" href="/test/href3/data=">测试页面三</a>
</body>
<script>
    function changeUrl(obj) {
        document.getElementById("test3").href = "/test/href3/data="+obj.value;
    }
</script>
</html>

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

后台mainController,url的格式随便你怎么写,只要能和前台的链接对上就行,且@RequestMapping 里面的参数要用{} 包起来,函数的参数里面用@PathVariable("上面url对应的名字") 获得数据,然后用model 来将值传回给前台,这次偷个懒,就不新建页面了,还是传回给test2页面
这里写图片描述
好了,看看页面效果
这里写图片描述

这里写图片描述

这里写图片描述

2.4 form表单传值,传给后台,get方法

这里提一点,一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。而我们在实际操作的时候,就get和post两种用的比较多。而post方法又比get方法要安全的多,因为get方法会将参数都放在url上(<a href>就是典型的get方法),而且get方法传送的数据量较小,不能大于2KB;另,用get方法传参到后台,会造成中文乱码等问题

好了,我们现在讲讲form表单get方法到后台
(注:form会将所包含的所有<input> 标签传值到后台,后台是根据<input>[name] 属性来获得对应的值的)
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<body>
<h2>Hello World!</h2>
<a href="/test/href1">测试页面一</a><br>
<a href="/test/href2">测试页面二</a><br>
<br>
<label for="data">输入数据</label>
<input type="text" id="data" name="data" onchange="changeUrl(this)"><br>
<a id="test3" href="/test/href3/data=">测试页面三</a>
<br><br><br>
<label for="form1">表单传值,get方法</label>

<%--实现输出两个数之间的一个随机数--%>
<form id="form1" action="/test/href4" method="get">
    Begin:<input type="text" name="t1"><br>
    End: <input type="text" name="t2"><br>
    <input type="submit" value="点击提交">
</form>
</body>
<script>
    function changeUrl(obj) {
        document.getElementById("test3").href = "/test/href3/data=" + obj.value;
    }
</script>
</html>


 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

后台mainController.java,因为要区分get和post,所以@RequestMapping 写成如图的形式,获得参数用@RequestParam 返回到test3页面
这里写图片描述
新建test3.jsp

<%--
  Created by IntelliJ IDEA.
  User: 11655
  Date: 2017/3/21
  Time: 17:00
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<pre>
    测试页面三!
    这是form的${fangfa}传过来的
    获得了从  ${begin} 开始到  ${end}  之间的一个随机数  ${data} !
</pre>

</body>
</html>

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

好了,看看运行效果
这里写图片描述

这里写图片描述

这里写图片描述
如图,用get方法传过来的东西都在url上显示了,所以这个方法并不怎么安全

2.5 form表单传值,传给后台,post方法

现在讲讲post方法传到后台,这里对应的action可以和上面的get方法的action一样,因为是两种传输方式,所以虽然url一样,但是他会区分处理的
这里写图片描述

maincontroller,只需修改下method即可
这里写图片描述

好了,看看页面效果
这里写图片描述

这里写图片描述

这里写图片描述
ok,而且地址栏上看不到数据。


今天就到这了,如果我有什么讲的不对或者不够好的地方,欢迎提出来,大家共同进步~


欢迎加入–qq群–JAVA后台学习交流群:486055993

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值