redirect
请求重定向。使用:
1、redirect(url:"http://....") 【打开的是此处输入的路径】
2、redirect(url:"/【controller】/【action】")【打开的是默认IP+端口+输入路径】
forward
请求转发。使用:
1、forward(url:"【同一类中的action方法】") //直接指定同一类中方法名
2、forward(url:"/【controller】/【action】") //指定controller类名和其中的方法名
response
对客户端进行动态响应,可以设置http头部信息,和http输出内容。如:
//设置头部内容,类似于使用map,相当于定义map集合的key、value,可以通过response.getHeader("REDIRECT")获取头部信息的REDIRECT对应的值
response.setHeader("REDIRECT", "NEEDREDIRECT")
response.setHeader("CONTENTPATH", "https://mp.csdn.net/postedit");
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); //设置http协议状态码 HttpServletResponse.SC_MOVED_TEMPORARILY:302
def rps = response.getWriter() //输出字符类型数据
//自定义的页面输出内容
rps.println("<html>")
rps.println("<head>")
rps.println("<script>");
rps.println("</script>");
rps.println("</head>")
rps.println("<body>")
rps.println("<a href='#'>456</a>")
rps.println("</body>")
rps.println("</html>")
//如果在后面再加上如下代码
render(view: "/test/test") //返回test.gsp页面,和输出的字符内容组合到一起显示在页面
这种响应适用于正常的请求,但对于特殊的如ajax请求不适用。但是response可以设置http头部信息,同时在页面使用ajax时可以使用complete,如:
//对于ajax请求,可以像使用success一样使用complete,来获取http头部信息。如:
complete: function (xhr) {
// 通过xhr取得响应头
var REDIRECT = xhr.getResponseHeader("REDIRECT");
if (REDIRECT == "NEEDREDIRECT") {
window.open(xhr.getResponseHeader("CONTENTPATH"), "_top");
}
}
complete中可以通过xhr获取到头部信息,后台设置制定的头部信息作为标识,前台根据头部信息的内容判断做出具体操作
render:
界面跳转(地址栏url不变)、向网页输出数据
参数:
1、【view:"【页面路径】"】 //跳转到具体页面
2、【mode:[AA:"aaa",BB:bbb]】 //传递的参数,相当于request.setAttribute("AA","aaa");request.setAttribute("BB",bbb)
3、【text:"【内容】"】 //输出具体内容
4、【contentType:"【数据类型】"】 //输出的数据类型,如:text/html、text/xml、application/x-javascript...
5、【encoding:"【编码格式】"】 //编码格式。如:UTF-8...
6、【status:""】 //http协议码。如:404、200、500...
......