Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: ASP.NET ::: Dicas & Truques ::: Sessão

Destruindo uma sessão ASP.NET usando o método Abandon() da classe HttpSessionState (e gerando um novo SessionID)

Quantidade de visualizações: 9075 vezes
Uma sessão ASP.NET pode ser destruída usando o método Abandon() da classe HttpSessionState. Uma chamada a este método cancela a sessão atual, tornando-a inválida. Além disso, se você estiver usando os eventos Session_Start e Session_End no arquivo Global.asax, estes serão disparados após a chamada à Abandon(). Primeiro o evento Session_End é disparado e então o evento Session_Start dispara devido à criação de uma nova sessão na próxima requisição.

Vamos ver um exemplo? Coloque três botões <asp:Button>, uma caixa de texto <asp:TextBox> e um rótulo <asp:Label> em uma página. Quando digitarmos algum conteúdo na caixa de texto e clicarmos no primeiro botão, o valor será guardado na sessão. Ao clicarmos no segundo botão o valor guardado na sessão será obtido e exibido em um controle Label, juntamente com o SessionID. Finalmente, ao clicarmos no terceiro botão a sessão será destruída.

Veja o código completo para a página Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  
CodeFile="Default.aspx.cs" Debug="true"
Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Estudos ASP.NET</title>
</head>
<body>

<form id="form1" runat="server">
  
  Valor a ser gravado no sessão:<br />
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
......


Veja agora a implementação do evento Click dos três botões no arquivo de code-behind Default.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page {
  protected void Button1_Click(object sender, EventArgs e){
    // vamos gravar o conteúdo da caixa de texto na sessão
    // note que o nome do item é "nome"
    Session.Add("nome", TextBox1.Text);
    
    // vamos avisar que o item foi adicionado à sessão
    TextBox1.Text = "";
    Label1.Text = "O item e seu valor foram adicionados à sessão. " +
      "O SessionID é: " + Session.SessionID;
  }

  protected void Button2_Click(object sender, EventArgs e){
......


Execute a aplicação e veja os resultados. Note que, mesmo após a destruição da sessão, o valor do SessionID permanence o mesmo. Em algumas situações este comportamento pode ser indesejado. Assim, se quisermos que o ID da sessão seja destruído juntamente com ela, basta alterarmos o código do evento Click do terceiro botão para a seguinte versão:

protected void Button3_Click(object sender, EventArgs e){
  // vamos destruir a sessão
  Session.Abandon();
  Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
......


Teste a aplicação novamente e verá que após destruir a sessão atual, a nova sessão terá um SessionID completamente diferente do anterior.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de dados em Java - Como criar uma lista singularmente ligada, inserindo e exibindo os valores contidos em cada nó

Quantidade de visualizações: 11748 vezes
Em dicas posteriores você aprendeu sobre listas singularmente e duplamente ligadas. Nesta dica você aprenderá a criar uma lista singularmente ligada (com referências apenas para o próximo nó), inserir alguns nós (sempre no final da lista) e usará um laço while para visitar todos os nós e exibir seus valores.

A classe usada para representar cada nó é a seguinte (No.java):

// classe No
public class No{
  public int valor;
......


Note que cada nó contém apenas um valor inteiro e uma referência para o próximo nó. Ao analisar o código você perceberá que tanto a inserção quanto a exibição dos nós são feitas usando métodos. Isso permitirá o reaproveitamento deste código em suas próprias implementações. Veja o código para a lista ligada (Lista.java):

public class Lista{
  No inicio; // início da lista  

  // função que permite exibir os valores de
  // todos os nós da lista
  public void exibir(){
    if(inicio != null){
      do{
        System.out.println(inicio.valor);
        inicio = inicio.proximo;
      }while(inicio != null);
    }
    else
      System.out.println("A lista esta vazia\n\n");
  }

  // função que permite inserir nós na lista.
  // veja que a função recebe o valor a ser
  // armazenado em cada nó
  public void inserir(int v){
    No temp;

    // verifica se a lista está vazia
    if(inicio == null){
      // reserva memória para o novo nó
......


Compile as classes No.java e Lista.java e vamos fazer o teste (TesteJava.java):

public class TesteLista{
  public static void main(String args[]){
    // vamos criar uma nova lista
    Lista lista = new Lista();

    // vamos inserir quatro valores na lista
    lista.inserir(45);
......



Delphi ::: VCL - Visual Component Library ::: TListBox

Como pesquisar e selecionar um item em uma ListBox do Delphi

Quantidade de visualizações: 16349 vezes
O trecho de código abaixo mostra como podemos usar a mensagem LB_SELECTSTRING da Windows API para pesquisar e selecionar um item em uma ListBox. Veja que aqui eu usei a função InputBox() para permitir ao usuário inserir o texto a ser pesquisado. Note também o valor -1 fornecido como wParam para a função SendMessage(). Este valor faz com que a busca se inicie no primeiro item da lista e continue até o final da lista. Veja o código:

procedure TForm1.Button2Click(Sender: TObject);
var
  pesquisa: string;
begin
  // vamos solicitar o texto a ser pesquisado na ListBox
  pesquisa := InputBox('Pesquisar', 'Informe o texto', '');

  // vamos pesquisar e selecionar o item encontrado
  if SendMessage(ListBox1.Handle, LB_SELECTSTRING, - 1,
......


Note que a busca efetuada por LB_SELECTSTRING não é sensitiva a maiúsculas e minúsculas. Assim, Osmar e OSMAR são tratadas igualmente.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


VB.NET ::: Dicas & Truques ::: Strings e Caracteres

Como retornar o tamanho de uma string em VB.NET usando a propriedade Length da classe String

Quantidade de visualizações: 8641 vezes
Podemos obter o tamanho de uma string, ou seja, a quantidade de caracteres em uma palavra, frase ou texto em VB.NET usando a propriedade Length da classe String do .NET Framework. Esta propriedade retorna um número inteiro indicando a quantidade de caracteres no objeto String atual.

Veja um exemplo de seu uso:

Imports System

Module Program
  Sub Main(args As String())
    Dim site As String = "Arquivo de Códigos"

    ' obtém o tamanho da string
    Dim tam As Integer = site.Length

    Console.WriteLine("A string contém " & tam &
......


Ao executar este código VB.NET nós teremos o seguinte resultado:

A string contém 18 caracteres


Java ::: Dicas & Truques ::: Data e Hora

Como exibir a data e hora atual na linguagem Java usando um objeto Date e seu método toString()

Quantidade de visualizações: 26244 vezes
Nesta dica mostrarei como criar um novo objeto da classe Date, do pacote java.util, e usar seu método toString() para exibir a data e hora atual no formato "dia da semana/mês/dia do mês"...etc.

Veja o código completo abaixo:

import java.util.Date;
 
public class Exemplo{
    public static void main(String args[]){
......


Ao executar este código nós teremos o seguinte resultado:

Mon Mar 08 22:13:15 BRT 2019


C++ Builder ::: VCL - Visual Component Library ::: TEdit

Como obter o tamanho do texto de um TEdit usando a função SendMessage() da API do Windows e a mensagem WM_GETTEXTLENGTH usando C++ Builder

Quantidade de visualizações: 5746 vezes
Embora o C++ Builder já nos forneça as ferramentas necessárias para obter a quantidade de caracteres contidos em um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_GETTEXTLENGTH.

A função SendMessage() da API do Windows possui a seguinte assinatura:

LRESULT SendMessage(          
  HWND hWnd,
  UINT Msg,
......


Note que precisamos informar o HWND (parâmetro hWnd) para a caixa de texto e a mensagem que será enviada ao controle. Os valores para os parâmetros wParam e lParam devem ser 0 (zero). Veja:

void __fastcall TForm3::Button2Click(TObject *Sender)
{
  // vamos obter o tamanho do texto de um TEdit usando a função
  // SendMessage() e a mensagem WM_GETTEXTLENGTH
  int tam = SendMessage(Edit1->Handle, WM_GETTEXTLENGTH, 0, 0);
......


Ao executar este exemplo você terá um mensagem com um texto parecido com:

O Edit contém 10 caracteres.


Veja mais Dicas e truques de C++ Builder

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 13 usuários muito felizes estudando em nosso site.