grails-开发中的总结:render、response、forward、redirect

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...


    ......

猜你喜欢

转载自blog.csdn.net/hxr_lzy/article/details/81258487
今日推荐