Grails重定向以及Render、Session的使用
近期发现网上grails因为用的人不算非常多,相关的资料也不是那么easy找到,随着学习的深入打算把我的学习心得定期分享出来。也给学习grails的同胞一个偷懒的机会,我的原则是以最简洁的方式学会Grails,这次分享的东西是grials中比較经常使用的Render、Session、重定向的使用
1.重定向
简要的看了下Grail的文档,发现里面貌似没有server端跳转这种东西,仅仅找到了一个client跳转。使用方法也比較简单就redirect(配置),对于里面的配置也比較灵活就像以下这个样例
redirect(uri:"book/list")
redirect(url:"http://www.blogjava.net/BlueSUN")
redirect(action:"show")
redirect(controller:"book",action:"list")
redirect(action:"show",id:4, params:[author:"Stephen King"])
里面的配置还能够混合起来写,例如以下所看到的
//使用uri的方式重定向
def useURI={
redirect(uri:"/login/toLoginUI",params:["state":"ToLogin"])
}
还能够这样写:
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])
2.render的使用
render类似java里的PrintWriter,基本上PrintWriter能实现的功能render也能够实现
3.request和session的使用
grails里使用request和session和servlet差点儿相同,可是request用的几率较小,在grails的控制器里一般使用params取得请求的全部參数。这里着重学习session的使用
//保存username到session
session.setAttribute("UserId",u.getUserid())
//重定向到登录成功界面
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])
界面上要取出session里的东西也和曾经一样,例如以下所看到的:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功页面</title>
</head>
<body>
<%
String userId=(String)session.getAttribute("UserId");
%>
登录成功,你的username是<%=userId%>,状态是:<%=request.getParameter("state")%>
</body>
</html>
到这里就能够丰富前几天的登录程序了,如今为登录添加一个功能:假设登录成功,则重定向到成功页面并显示登录的username,假设登录失败则返回到登录界面
天机功能之后UserController的check方法就能够改成以下的这样样子了
def check = {
//request的使用(grails里一般用params)
println request.getParameter("userid")
//params封装了请求里的所有參数,数据类型相似map
def u= User.findByUserid(params.userid)
if(u){
if(u.getUserpwd()==params.userpwd){
//保存username到session
session.setAttribute("UserId",u.getUserid())
//重定向到登录成功界面
redirect(controller:"Login",action:"loginSuccess",params:["state":"Success"])
}else{
redirect(controller:"Login",action:"toLoginUI")
}
}else{
render "username不存在"
}
}
最后来看看登录成功后显示的界面:
是不是非常easy呢,下次将分享grails的一对多操作
Grails重定向以及Render、Session的使用的更多相关文章
- 302重定向之后,session中存储的值没了
302重定向之后,session中存储的值没了
- think PHP5.1使用时 session重定向丢失问题
查了很多资料,也看了redirect底层代码,具体来说,还是多个用的地方不太对.做个笔记防忘记: 遇重定向后丢失session时: 1.php.ini配置文件,不要自动启动,默认是0,session. ...
- 在grails中远程调用action
在进行类似批处理的程序时,如果在一个action中需要保存很多记录数,这会导致grails中的数据库session超过负荷,从而导致OOM. 因为这个情况的发生是由于在一次请求中,对数据进行的修改都保 ...
- django基础 -- 3. urls.py view.py 参数 别名 重定向 常用方法 静态文件
一.基本格式 from django.conf.urls import url from . import views #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数 ...
- Grails 对象关联映射 (GORM) 一
转自:http://justjavac.iteye.com/blog/701445 Domain 类是任何商业应用的核心. 他们保存事务处理的状态,也处理预期的行为. 他们通过关联联系在一起, one ...
- Session, Cookie区别
答: 1.Session由应用服务器维护的一个服务器端的存储空间:Cookie是客户端的存储空间,由浏览器维护. 2.用户可以通过浏览器设置决定是否保存Cookie,而不能决定是否保存Session, ...
- python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可
import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...
- Java Web转发和重定向问题
0x01:转发情况.转发过程中,只请求一次,request对象设置了之后会一直存在,直到下一次请求. 0x02:重定向情况.会发生两次请求,如果设置了request对象,那么重定向之后,request ...
- Python自动化运维之27、Django(一)
一.概述 1.什么是框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单说就是使用别人搭好的舞台,你来做表演. 2.常 ...
随机推荐
- gitlab升级方法
gitlab升级方法:国内网络环境推荐方法二方法一:官网的升级方式 (1)停止git服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab- ...
- angular的数据双向绑定秘密
Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking... 它们是什么?它们是如何工作的呢?这里我想回答 ...
- JQuery 之事件中的 ----- hover 与 onmouseover 、onmouseout 联系
hover([over,]out) 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法.这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态. 当鼠标移动到一个匹配的元素 ...
- 最强烈推荐-我的java收藏夹(内有国内最好的java论坛)
原地址: http://bbs.chinaitlab.com/dispbbs.asp?boardid=148&id=34276 国内: www.chinajavaworld.com-论坛人很多 ...
- The Letter Carrier's Rounds(摘)
Description For an electronic mail application you are to describe the SMTP-based communication that ...
- noip2015 提高组day1、day2
NOIP201505神奇的幻方 试题描述 幻方是一种很神奇的N∗N矩阵:它由数字 1,2,3,……,N∗N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方 ...
- Cortex-M3知识点
1.不再像别的ARM7那样从thumb状态和ARM状态来回切换 Thumb-2指令集横空出世,Cortex-M3不支持ARM指令集 2.BKP备份寄存器(42个16位寄存器组成),用来存储用户应用程序 ...
- ajax用户名校验demo详解
//用户名校验的方法 //这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互 var xmlhttp; function verify(){ //1.使用dom的方式获取文本框中的 ...
- PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
<?php class Client { ////获得访客浏览器类型 function Get_Browser(){ if(!empty($_SERVER['HTTP_USER_AGENT']) ...
- 线程之一:JAVA线程基础
参考core java,马士兵视频 1.线程的基本概念 (1)一个线程是一个程序内部的顺序控制流. (2)线程和进程 –每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. –线程:轻量 ...