适用情况:在页面1中点击超链接跳转到页面2,页面2向后台发起请求。
这时候,有一个参数需要从页面1传递到页面2,页面2向后台发起请求时又需要这个参数。
即参数需要从页面1->页面2->后台
使用get请求,参数可以从页面1传递参数至页面2,然而页面2发起的请求并不会携带这个参数
/**
页面1中超链接
href="./Stu_List?coursename='+row.coursename+'" target="view_self"
传递了coursename参数至第二个页面
页面2,向后台发起数据库交互的请求,查找选了这门课的学生信息
$('#dataList').datagrid({
。。。。省略部分代码。。。
url : "get_stu",
*/
//请求转发,处理页面1的超链接/Stu_List,页面2就呈现给用户了
@RequestMapping(value="/Stu_List",method=RequestMethod.GET)
public ModelAndView Stu_List(ModelAndView model,HttpServletRequest request){
model.setViewName("course/Stu_List");
String coursename = request.getParameter("coursename");
System.out.println(coursename);
}
//页面2向后台发起数据库交互请求
@RequestMapping(value="/get_stu",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> get_stu(HttpServletRequest request,Page page){
String coursename = request.getParameter("coursename");
System.out.println(coursename+"这是第二个");
}
这里省略了其余无关的代码
下面一张图片是运行的结果,java为课程名,页面2能够成功获得get请求中的参数coursename=java,然而页面2发起的get_stu请求(获取指定课程的学生数据,这里)并不能获取coursename
这里遇到的问题的根本原因在于,可以把页面1,页面2,页面2发起的请求看成三个人,get是它们之间的通信方式,而只有页面1和2之间搭起了get的桥梁,那么我只要把页面2和页面2发起的请求之间再搭起一座桥,它们之间就能互相传递参数了
这张图是修改后的页面2发起请求代码
字符串分割,获取了get参数信息的字符串
在请求的url中又加入了get参数,实现了get参数的传递
有点类似于隔山打牛那般的感觉