<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9163734667057577920</id><updated>2012-02-04T11:28:32.030-08:00</updated><category term='debug'/><category term='Grails'/><category term='classpath'/><category term='javascript'/><category term='Acegi'/><category term='variávewis de ambiente'/><category term='Groovy'/><category term='java_home'/><title type='text'>Respirando Java</title><subtitle type='html'>Blog de dicas, novidades e curiosidades sobre Java e seus arredores.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://respirandojava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://respirandojava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bruno Lacerda</name><uri>http://www.blogger.com/profile/16816863956713070826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_HL0ynSmUWZo/SZVTHSgPipI/AAAAAAAAAAM/1MMMsqjYyBc/S220/Bruno_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9163734667057577920.post-7618807191376021411</id><published>2009-12-21T10:17:00.000-08:00</published><updated>2009-12-22T05:05:41.331-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java_home'/><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='Acegi'/><category scheme='http://www.blogger.com/atom/ns#' term='Grails'/><title type='text'>Tutorial Grails + Plugin acegi (Segurança)</title><content type='html'>&lt;div&gt;Não iremos utilizar nenhuma IDE para seguir o tutorial então basta que você esteja com o prompt de comando aberto e com o bloco de notas. Em alguns momentos iremos utilizar o console do Groovy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Para os exemplos iremos considerar que você esteja criando a aplicação na raiz da árvore de diretórios da unidade C.&lt;br /&gt;&lt;br /&gt;Para iniciar é preciso fazer a instalação do Framework. Caso não tenha o Grails instalado em sua máquina, acesse &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;http://www.grails.org/Installation&lt;/span&gt; e veja como fazer.&lt;br /&gt;&lt;br /&gt;Criando a aplicação&lt;br /&gt;&lt;br /&gt;Depois de instalado vamos criar uma aplicação chamada myapp. No prompt de comando digite&lt;br /&gt;&lt;b&gt;C:\&gt;grails create-app myapp&lt;/b&gt; para criar a aplicação. Depois navegue pelo prompt até a pasta raiz da aplicação com o comando &lt;b&gt;C:\&gt;cd myapp&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Estrutura da Aplicação&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC8SQWUCRI/AAAAAAAAAC0/hztDU8fL-B4/s1600-h/estrutura.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC8SQWUCRI/AAAAAAAAAC0/hztDU8fL-B4/s320/estrutura.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418037373538928914" /&gt;&lt;/a&gt;Breve explicação sobre algumas pastas importantes criadas pelo Grails para a aplicação:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conf:&lt;/b&gt; Local onde ficam armazenados os arquivos de configuração da sua aplicação como datasources etc.&lt;br /&gt;&lt;b&gt;Controllers:&lt;/b&gt; Local onde ficam as classes controladoras da sua aplicação, ou seja, as classes que recebem e enviam as requisições do/para o browser.&lt;br /&gt;&lt;b&gt;Domain:&lt;/b&gt; Local onde ficam as classes do domínio da aplicação.&lt;br /&gt;&lt;b&gt;I18n:&lt;/b&gt; (Internacionalização) Local onde fimas recursos como message boundles etc.&lt;br /&gt;&lt;b&gt;Services:&lt;/b&gt; Armazena as classes de serviço como beans do spring etc.&lt;br /&gt;&lt;b&gt;Views:&lt;/b&gt; Local onde ficam as páginas da aplicação (.gsp)&lt;br /&gt;&lt;br /&gt;Feito isso sua aplicação já estará pronta para ser utilizada pois o Grails já vem com um servidor embutido chamado jetty, então basta startar a aplicação com o comando &lt;b&gt;C:\myapp&gt;grails run-app&lt;/b&gt;.&lt;br /&gt;Quando a aplicação for startada, no final do prompt irá aparecer a URL da sua aplicação. Deve ser algo parecido com &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;http://localhost:8080/myapp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Acesse a url indicada e se tudo estiver certo você verá a página inicial da sua aplicação Grails como mostrada abaixo.&lt;br /&gt;&lt;br /&gt;Página Inicial da Aplicação&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC7xxZxIMI/AAAAAAAAACs/S-e-mWycfOU/s1600-h/myapp_home.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC7xxZxIMI/AAAAAAAAACs/S-e-mWycfOU/s320/myapp_home.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418036815476105410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Criando Classes de Domínio&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Vamos agora criar uma classe de domínio chamada Book. No prompt de comando na pasta raiz da aplicação digite o comando  &lt;b&gt;C:\myapp&gt;grails create-domain-class Book&lt;/b&gt;.&lt;br /&gt;Abra a classe Book.groovy com o bloco de notas ou outro editor de sua preferência. Ela está localizada na pasta domain.&lt;br /&gt;Vamos adicionar dois atributos a classe são eles titulo (title) e autor (author).&lt;br /&gt;&lt;br /&gt;Classe Book&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC8k_qmkTI/AAAAAAAAAC8/C-x7DsBxG_0/s1600-h/book1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC8k_qmkTI/AAAAAAAAAC8/C-x7DsBxG_0/s320/book1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418037695478141234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Praticando Alguns Comandos no Groovy Console&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Digite no prompt o comando &lt;b&gt;C:\myapp\grails console&lt;/b&gt;. Este comando irá abrir o console do Grails onde poderemos executar alguns scripts. Na verdade você pode criar classes etc.&lt;br /&gt;Vamos instanciar a classe Book e persistir no Banco.&lt;br /&gt;Digite o código abaixo no console e depois execute o script com o comando &lt;b&gt;CTRL+R&lt;/b&gt;. A saída deve ser semelhante a figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;book = new Book(title:"Lua Nova", author:"Stephenie Meyer")&lt;br /&gt;book.save()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC84micVGI/AAAAAAAAADE/xTEj1ZyNU5w/s1600-h/GC1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC84micVGI/AAAAAAAAADE/xTEj1ZyNU5w/s320/GC1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418038032330413154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Digite &lt;b&gt;CTRL+R&lt;/b&gt; mais algumas vezes para criar mais insâncias de Book no Banco.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC9R3ThNFI/AAAAAAAAADM/7pshji_0XrI/s1600-h/GC2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC9R3ThNFI/AAAAAAAAADM/7pshji_0XrI/s320/GC2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418038466327950418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Teste os comandos abaixo no console:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Listando as instancias criadas&lt;/b&gt;&lt;br /&gt;Book.list()&lt;br /&gt;Book.list().getClass()&lt;br /&gt;Book.list().title&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acessando os resultados por atributo&lt;/b&gt;&lt;br /&gt;Book.findAllByTitle(“Lua%”)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acessando os resultados por atributo com paginação&lt;/b&gt;&lt;br /&gt;Book.findAllByTitle(“Lua%”, [ max:2])&lt;br /&gt;&lt;br /&gt;Para maiores informações consulte &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;http://www.grails.org/doc/1.0.x/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Banco de Dados&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Você deve ter reparado que nós persistimos objetos da classe livro sem ter configurado nenhum Banco de Dados ou datasource. Isto foi possível por que Grails também já vem com um Banco de Dados embutido e pré configurado, o HSQL. A configuração inicial está definida para criar o Banco de Dados em memória e com a opção create-drop, o que faz com que sempre que você restarta a aplicação os dados persistidos sejam apagados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Alterando o Arquivo de Configuração de Banco de Dados&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Dentro da pasta conf existe uma classe chamada DataSource.groovy, é nesta classe que ficam as configurações de Banco. Abra esta classe no editor.&lt;br /&gt;Na seção development, vamos alterar para que o banco de dados fique em um arquivo e para que os dados não se percam ao restartar a aplicação. Altere para que fique da seguine forma:&lt;br /&gt;&lt;br /&gt;[mais código aqui...]&lt;br /&gt;// environment specific settings&lt;br /&gt;environments {&lt;br /&gt;development {&lt;br /&gt;  dataSource {&lt;br /&gt;&lt;br /&gt;    dbCreate = "update"&lt;br /&gt;    url = "jdbc:hsqldb:file:devDb;shutdown=true"&lt;br /&gt; &lt;br /&gt;    &lt;span class="Apple-style-span"  style="color:#33FF33;"&gt;// dbCreate = "create-drop" // one of 'create', 'create-drop','update'&lt;br /&gt;    // url = "jdbc:hsqldb:mem:devDB"&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;[mais código aqui...]&lt;br /&gt;&lt;br /&gt;Voltando para a parte Web, vamos criar um controller para que os livros possam ser criados a partir do browser. Para isto digite no prompt o comando&lt;br /&gt;&lt;b&gt;C:\myapp&gt;grails create-controller Book&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Abaixo o controller que acabamos de criar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC9kW4UOqI/AAAAAAAAADU/DJT6_jUz7qI/s1600-h/book_controller1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC9kW4UOqI/AAAAAAAAADU/DJT6_jUz7qI/s320/book_controller1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418038784041433762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais uma vez no prompt inicie a aplicação com o comando &lt;b&gt;C:\myapp&gt;grails run-app&lt;/b&gt; e você verá na home da aplicação que um link para o controller foi criado como na figura abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HL0ynSmUWZo/SzC-AlktlOI/AAAAAAAAADc/ONrfehao5-Q/s1600-h/home_2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_HL0ynSmUWZo/SzC-AlktlOI/AAAAAAAAADc/ONrfehao5-Q/s320/home_2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418039269022078178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ao clicar no link você irá receber um erro 404 como na tela abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC-Qn2oyfI/AAAAAAAAADk/3mh9jYiKRO8/s1600-h/erro404.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC-Qn2oyfI/AAAAAAAAADk/3mh9jYiKRO8/s320/erro404.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418039544512039410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Isto aconteceu por que por convenção, é necessário que exista uma view para cada action do controller. Repare que a página não encontrada foi a página /WEB-INF/grails-app/views/book/index.jsp e se você reparar no controller índex é o nome da action default criada no controller pelo comando create-controller.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scaffolding&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O recurso de scaffold permite a você gerar automaticamente uma aplicação inteira para uma determinada classe de domínio incluindo as views necessárias e as actions para as operações de CRUD do controller.&lt;br /&gt;Então vamos alterar o BookController para que agora as views e actions de CRUD sejam geradas automaticamente. Altere o BookController para que ele fique igual a figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC-hkwPXoI/AAAAAAAAADs/RqfmOnl30jo/s1600-h/bookskaffold.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC-hkwPXoI/AAAAAAAAADs/RqfmOnl30jo/s320/bookskaffold.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418039835737677442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois de alterado salve o controller, reinicie a aplicação, e ao clicar novamente no link BookController você verá uma página com a listagem dos livros inseridos no Banco de Dados anteriormente como na figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC-0OcZxGI/AAAAAAAAAD0/gqxCGH_4cv4/s1600-h/booklist.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC-0OcZxGI/AAAAAAAAAD0/gqxCGH_4cv4/s320/booklist.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418040156166407266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Explore esta página, adicione, edite, exclua, liste novos livros etc.&lt;br /&gt;&lt;br /&gt;Dê Stop na aplicação pelo prompt &lt;b&gt;CTRL+C &lt;/b&gt;e digite o comando&lt;br /&gt;&lt;b&gt;C:\myapp&gt;grails generate-all Book&lt;/b&gt; (&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;digite y para permitir sobrescrever o arquivo BookController caso seja necessário&lt;/span&gt;).&lt;br /&gt;Agora abra novamente o BookController e você verá o código das actions responsáveis pelo CRUD dos livros.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Plugins&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Grails possui uma comunidade bastante ativa no que diz respeito a criação de plugins então vamos fazer uso de alguns deles. Para maiores informações sobre plugins acesse &lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;http://www.grails.org/plugin/category/all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nossa aplicação necessita de segurança, então vamos utilizar o plugin acegi – Spring Security Plugin.&lt;br /&gt;Obs: Precisa de Internet para baixar o plugin.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acegi – Spring Security Plugin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;No prompt de comando digite &lt;b&gt;C:\myapp&gt;grails install-plugin acegi&lt;/b&gt;&lt;br /&gt;Depois de instalado o plugin na aplicação temos mais 3 comandos disponíveis. São eles:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;grails create-auth-domains&lt;/b&gt; (Cria uma página de autenticação)&lt;/li&gt;&lt;li&gt;&lt;b&gt;grails generate-manager&lt;/b&gt; (Cria uma página para o gerenciamento das informações e permissões dos usuários da aplicação)&lt;/li&gt;&lt;li&gt;g&lt;b&gt;rails generate-registration&lt;/b&gt; (Cria uma página para realização de cadastro de usuários para a aplicação)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Digite no prompt &lt;b&gt;C:\myapp&gt;grails create-auth-domains&lt;/b&gt;, depois &lt;b&gt;C:\myapp&gt;grails generate- registration&lt;/b&gt; e por ultimo &lt;b&gt;C:\myapp&gt;grails generate- manager&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Reinicie a aplicação com o comando &lt;b&gt;C:\myapp&gt;grails run-app&lt;/b&gt; e a home deve ter mais 7 controllers como na imagem abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC_GxohvOI/AAAAAAAAAD8/3ajY71jm40A/s1600-h/home3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC_GxohvOI/AAAAAAAAAD8/3ajY71jm40A/s320/home3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418040474850147554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Criando Roles&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Clique no controller &lt;b&gt;AuthorityController&lt;/b&gt; e em seguida clique em New Authority para adicionarmos papéis para os usuários da aplicação.&lt;br /&gt;Vamos adicionar a Role &lt;b&gt;ROLE_USER&lt;/b&gt; como na figura abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC_VFMgF-I/AAAAAAAAAEE/dujTDjJQxWg/s1600-h/role.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzC_VFMgF-I/AAAAAAAAAEE/dujTDjJQxWg/s320/role.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418040720619476962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clique em create.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Registrando Usuários&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Clique no controller &lt;b&gt;RegisterController&lt;/b&gt; e adicione um usuário para a aplicação como na tela abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC_kVKpGOI/AAAAAAAAAEM/bc4uhOs1xGo/s1600-h/registration.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_HL0ynSmUWZo/SzC_kVKpGOI/AAAAAAAAAEM/bc4uhOs1xGo/s320/registration.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418040982604683490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clique em Create.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acessando a Aplicação&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Clique no &lt;b&gt;LogoutController&lt;/b&gt; e em seguida &lt;b&gt;LoginController&lt;/b&gt; e você verá a tela de login da aplicação como abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HL0ynSmUWZo/SzDATUp-kGI/AAAAAAAAAEU/Jo0-ZqQwbsk/s1600-h/login.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://2.bp.blogspot.com/_HL0ynSmUWZo/SzDATUp-kGI/AAAAAAAAAEU/Jo0-ZqQwbsk/s320/login.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418041789921529954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Configurando padrões de Segurança para URLs&lt;br /&gt;Clique em &lt;b&gt;RequestmapController&lt;/b&gt; e em seguida clique em New Requestmap.&lt;br /&gt;Configure para que somente os usuários associados a Role &lt;b&gt;ROLE_USER&lt;/b&gt; possam acessar as páginas dos livros. Veja a figura abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzDAzncaRmI/AAAAAAAAAEc/ask5ab3wDBc/s1600-h/urlrole.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 245px;" src="http://3.bp.blogspot.com/_HL0ynSmUWZo/SzDAzncaRmI/AAAAAAAAAEc/ask5ab3wDBc/s320/urlrole.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5418042344720713314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clique em Create.&lt;br /&gt;&lt;br /&gt;Para testar clique em Home e clique em &lt;b&gt;BookController&lt;/b&gt;, você verá a lista de livros criados. Clique em Home, em seguida em &lt;b&gt;LogoutController&lt;/b&gt; e depois clique em &lt;b&gt;BookController&lt;/b&gt;. Você será solicitado a logar na aplicação.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163734667057577920-7618807191376021411?l=respirandojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://respirandojava.blogspot.com/feeds/7618807191376021411/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://respirandojava.blogspot.com/2009/12/tutorial-grails-plugin-acegi-seguranca.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/7618807191376021411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/7618807191376021411'/><link rel='alternate' type='text/html' href='http://respirandojava.blogspot.com/2009/12/tutorial-grails-plugin-acegi-seguranca.html' title='Tutorial Grails + Plugin acegi (Segurança)'/><author><name>Bruno Lacerda</name><uri>http://www.blogger.com/profile/16816863956713070826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_HL0ynSmUWZo/SZVTHSgPipI/AAAAAAAAAAM/1MMMsqjYyBc/S220/Bruno_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HL0ynSmUWZo/SzC8SQWUCRI/AAAAAAAAAC0/hztDU8fL-B4/s72-c/estrutura.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163734667057577920.post-6789860638334141939</id><published>2009-05-14T04:20:00.000-07:00</published><updated>2009-05-14T04:22:43.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>Debugando código javascript no IE com Microsoft Visual Web Developer (Free)</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Debugar código JS no IE é realmente uma dor de cabeça mas se você estiver disposto a instalar o Visual Web Developer da Microsoft 127MB (Free) seus problemas podem estar com os dias contados.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;O único problema para a utilização do VWD para debugar JS é que ele não se conecta ao processo automaticamente, então vamos ver como fazer para resolver este problema.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Primeiro é necessário habilitar depuração no IE. Vai em Ferramentas &gt; Opções da Internet &gt; Avançadas. Nas configurações *desmarque* a opção "Desabilitar depuração de script (Internet Explorer)" e *marque* a opção "Exibir notificação sobre cada erro de script"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Agora baixe e instale o VWD. http://www.microsoft.com/express/vwd/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Depois de Instalado abra o VWD e crie um New Empty Website.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Clique no botão Start Debugging. Habilite a depuração para este site. VWD irá startar o IE em modo de depuração.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Feito isso basta você abrir a página que contém o código que você quer debugar na aba que o VWD abriu em modo debug e pronto, se tiver algum erro de JS o VWD irá interromper o processo parando na linha onde está o problema. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap; "&gt;Agora é com você. ;) &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 13px; line-height: 16px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163734667057577920-6789860638334141939?l=respirandojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://respirandojava.blogspot.com/feeds/6789860638334141939/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://respirandojava.blogspot.com/2009/05/debugando-codigo-javascript-no-ie-com.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/6789860638334141939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/6789860638334141939'/><link rel='alternate' type='text/html' href='http://respirandojava.blogspot.com/2009/05/debugando-codigo-javascript-no-ie-com.html' title='Debugando código javascript no IE com Microsoft Visual Web Developer (Free)'/><author><name>Bruno Lacerda</name><uri>http://www.blogger.com/profile/16816863956713070826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_HL0ynSmUWZo/SZVTHSgPipI/AAAAAAAAAAM/1MMMsqjYyBc/S220/Bruno_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9163734667057577920.post-259281719578175021</id><published>2009-02-13T03:03:00.000-08:00</published><updated>2009-05-14T04:25:07.673-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='classpath'/><category scheme='http://www.blogger.com/atom/ns#' term='java_home'/><category scheme='http://www.blogger.com/atom/ns#' term='variávewis de ambiente'/><title type='text'>Java e Variáveis de Ambiente</title><content type='html'>Como primeira postagem achei que seria interessante postar como instalar o JDK (java Developer Kit) e configurar as variáveis de ambiente para que as classes possam ser compiladas. Vale ressaltar que esta descrição é aplicada para sistemas operacionais Windows.&lt;br /&gt;&lt;br /&gt;Vamos ao que interessa: &lt;div&gt;&lt;br /&gt;&lt;div&gt;Instalando o JDK&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Vá no site da Sun, baixe e instale o JDK mais atual, no momento desta postagem o &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;JDK 6 update 12&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Configurando as variáveis de ambiente&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Clique com o botão direito em cima do ícone Meu Computador na sua área de trabalho e no menu escolha a opção propriedades&lt;/li&gt;&lt;li&gt;Selecione a aba Avançado e lá clique no botão Variáveis de Ambiente.&lt;/li&gt;&lt;li&gt;Crie uma nova variável de ambiente (variável do sistema, a segunda opção) com o nome JAVA_HOME e defina como valor da variável o caminho da instalação do JDK, ex: C:\Arquivos de programas\Java\jdk1.6.0_12&lt;/li&gt;&lt;li&gt;Agora, ainda nas variáveis do sistema, localize a variável path e clique em editar. No início do valor da variável coloque %JAVA_HOME%/bin; (Não apague o valor que estava antes, simplesmente adicione).&lt;/li&gt;&lt;li&gt;Por último crie uma variável chamada CLASSPATH e defina como valor o caminho da pasta lib da instalação do JRE. Ex:  ".;C:\Arquivos de programas\Java\jre6\lib"&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Testando&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Clique em iniciar/executar e digite cmd&lt;/li&gt;&lt;li&gt;digite javac no prompt de comando&lt;/li&gt;&lt;li&gt;Se tudo correu bem irão ser exibidas as opções de compilação do javac e você já poderá criar compilar e executar as suas classes java.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;Próxima postagem: &lt;/div&gt;&lt;div&gt;O Tradicional Hello World - Criação, Compilação e Execução de uma classe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abraços e até lá.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9163734667057577920-259281719578175021?l=respirandojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://respirandojava.blogspot.com/feeds/259281719578175021/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://respirandojava.blogspot.com/2009/02/java-e-variaveis-de-ambiente.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/259281719578175021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9163734667057577920/posts/default/259281719578175021'/><link rel='alternate' type='text/html' href='http://respirandojava.blogspot.com/2009/02/java-e-variaveis-de-ambiente.html' title='Java e Variáveis de Ambiente'/><author><name>Bruno Lacerda</name><uri>http://www.blogger.com/profile/16816863956713070826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_HL0ynSmUWZo/SZVTHSgPipI/AAAAAAAAAAM/1MMMsqjYyBc/S220/Bruno_1.jpg'/></author><thr:total>1</thr:total></entry></feed>
