使用URL传递参数

  现在比较流行RESTful风格,而通过URL进行参数的传递这就符合RESTful风格。

  • 什么是RESTful风格呢?
    对应的中文是rest式的;Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构).

  • 什么是REST呢?
    REST就是一种设计API的模式。

  • springMVC对于RESTful的支持:

(1) 利用@RequestMapping 指定要处理请求的URI模板和HTTP请求的动作类型
(2)利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
(3)利用Ajax,在客户端发出PUT、DELETE动作的请求

以上关于RESTful的介绍来源于:什么是REST以及 RESTful?

一,使用URL传递参数

使用URL进行参数的传递需要注解@RequestMapping@PathVariable 。这里的URL将写作(/ParamsController/getStudentName/Tom)。

1.1 代码部分
1.1.1 Controller
@Controller
@RequestMapping("/ParamsController")
public class ParamsController {
    @Autowired
    private StudentService studentService;
    @RequestMapping(value = "/getStudentName/{studentName}")
    public ModelAndView URLPathVariable(@PathVariable String studentName){
        Student student = studentService.selectStudent(studentName);
        ModelAndView mv = new ModelAndView();
        mv.addObject("Student", student);
        mv.setViewName("StudentInfo");
        return mv;
    }
1.1.2效果展示

在这里插入图片描述
在这里插入图片描述

二,这是一个只支持GET请求的方法

当我们把请求方法改为POST时
在这里插入图片描述
就出现了这样的问题:

Request method 'GET' not supported

在这里插入图片描述
因此,通过URL传递参数是一种只支持GET的方法,同时了,@RequestMapping的如果不限定RequestMethod的值,以下都可以访问

RequestMethod.GET
RequestMethod.POST
RequestMethod.PUT
RequestMethod.DELETE

三、AJAX默认是异步的

原本自己想的是前端输入一个姓名,点击查询,就可以进行跳转到对应的信息页面。
js代码如下:


<h1>-------------------------------URL参数传递-------------------------------------------</h1>
<form id="studentNameForm">
    <h2>查询学生的姓名:<input id="studentName" name="studentName" value=""/>
    <input id="btn1" type="submit" value="查询"/></h2>
</form>
<script>
    $(function () {
        $("#btn1").click(
            function () {
                $.ajax({
                 url:"/ParamsController/getStudentName/"+$("#studentName").val(),
                    type:"POST",
                    success:function () {
                     // window.location.href="*****";没有
                    }
                });
            });
        console.log(url);
    });
</script>

但是后台成功的接收到了前端传来的数据,但是却没有进行页面的跳转。
如图:
在这里插入图片描述
在这里插入图片描述
后端页面获取到了前端传来的值,但是却没有进行跳转。
其实这是因为忽略了AJAX是异步的。

ajax实际上是通过XMLHttpRequest来向服务器发送异步请求的,从服务器获取数据,然后使用JS来更新页面,这也就是常说的局部刷新实现方式,所以ajax请求之后,服务器返回的都是纯文本流,客户端的浏览器在获取ajax异步结果时,不是直接显示在页面上,而是要通过js来进行处理,js处理完以后才能显示在页面上,所以这才导致了controller中的ModelAndView对象不能直接返回视图。

通过ajax发送post请求向controller传递参数后,页面无法跳转问题

网上有一种解决方法是:
在这里插入图片描述
这里的解决方案,应该是:
ajax传输数据成功后,返回数据,然后使用

window.location.href="对应的controller页面"+"data返回的数据";

这样的形式进行跳转。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值