ASP.NET- Entendendo o Get e Post – CodeBehind sem uma página ASPX – Simulando Java Servlets – C#

Publicado: 14 de outubro de 2014 em C#

O protocolo HTTP define oito métodos (GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS e CONNECT) que indicam a ação a ser realizada no recurso especificado. O método determina o que o servidor deve fazer com a URL fornecida no momento da requisição de um recurso.  O . NET Framework é muito similar ao conceito da maquina virtual Java, entretanto a linguagem Java Enterprise Edition nos possibilita criar aplicativos Java que rodam em um servidor de aplicação Java através do encapsulamento de métodos do protocolo HTTP chamados Servlets que lida com as solicitações HTTP padrão, enviando-os para os métodos de manipulador para cada tipo de solicitação HTTP utilizando uma classe Java em uma aplicação para exibir uma pagina web, sem utilizar uma pagina web estática, o conceito de CodeBehind do ASP.NET necessita que uma classe C# rode atrás de pelo menos uma pagina ASPX.

Deste modo o Microsoft ASP.NET não fornece um equivalente direto para a classe servlet. Em vez disso, existem duas alternativas. A primeira alternativa, que é usado pelo Assistente de Conversão de Linguagem Java (JLCA), é encapsular a funcionalidade de um servlet no code-behind de uma página ASP.NET não gráfica. A outra alternativa é o de criar um novo HttpHandler e dirigir um pedido de URL para uma classe especificada. O HTTPHandler é realmente o mais perto da nova funcionalidade do filtro na especificação servlet.

Se você deseja fornecer sua própria implementação de servlets, você precisa criar uma página WebForm. No entanto, você vai estender a classe de pagina e na maioria dos casos, você simplesmente vai incluir a funcionalidade do seu servlet dentro do método Page_Load(). Mas se você deseja examinar o tipo de solicitação HTTP e sua respectiva resposta, você pode criar métodos similares ao métodos de um Servlet. Mais informações sobre ASP.NET e técnicas de migração:

ASP.NET – Java Servlet: http://msdn.microsoft.com/en-us/library/aa478987.aspx

Métodos doGet e doPost

Basicamente você utiliza o método doGet sempre que a requisição que você faz não altere o estado do servidor, como uma consulta, uma busca e etc. O método doPost envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. Os dados são incluídos no corpo do comando.

Utilizando os métodos doGet e doPost

1 – Crie uma aplicação do tipo ASP.NET Web Application com o modelo C# Empty e chame seu projeto de DaWeb002, crie uma nova pagina WebForms chamada default. Na pagina default.aspx comente todo o código HTML exceto a primeira linha, veja a figura abaixo:

WebForm - default.aspx

WebForm – default.aspx

2 – Na implementação do código C# da pagina, vamos simular uma aplicação Web que utiliza os métodos do protocolo HTTP, utilize o código abaixo para completar seu código gerado automaticamente. Rode o programa, como você pode ver nós criamos uma pagina html através do método doGet, ele é automaticamente disparado assim que o servidor processa a url da nossa aplicação 

doGet - url - ASP.NET

doGet – url – ASP.NET

3 – Porem, o método doGet é utilizado para passar informações do navegador para o servidor, isto significa que vamos efetuar uma requisição Client-Server, vamos passar um parâmetro através do nosso browser para que o valor seja processado no servidor de aplicação ASP.NET, vamos fazer isto de um modo manual. O método para se passar parâmetros para o servidor é utilizando o caractere de “?” (interrogação) seguido sem espaço pelo nome do parâmetro adicionado do sinal de “=” (igual) e o valor desejado, caso haja mais que um parâmetros separe-os como o caractere “&” (E comercial ou Ampersand). Apenas adicione o parâmetro no final na URL gerada pelo seu navegador, atente-se a porta do seu servidor web:

http://localhost:29193/default.aspx?Parametro1=Meu parametro teste

Assim que a aplicação executar o método doGet novamente ela vai automaticamente identificar o parâmetro utilizando na requisição GET e imprimir uma linha na pagina HTML.

Aplicação - WebForm

Aplicação – WebForm

4 – O método doPost é disparado quando você clica no botão do formulário html e a ação solicita uma requisição a aplicação, o nosso método apenas imprime uma linha no navegador:

Servlet - doPost

Servlet – doPost

Exemplo:

Neste exemplo nos criamos uma aplicação web dinâmica simulando um Servlet Java e utilizamos os métodos doGet e doPost estendendo a classe da pagina. Utilizamos também a manipulação simples de um parâmetro para a requisição doGET.

Para ver esta mesma aplicação utilizando um Java Servlet: clique aqui.

Html – aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="DaWeb002._default" %>

<!--

<!DOCTYPE html>

*** Comentar as todas instruções da pagina ASP.NET - WebForm ***

    Não comente a primeira linha pois a pagina é utilizada sob o
    conceito CodeBehind e necessita da ligação da pagina ao arquivo
    de código fonte csharp: CodeBehind="default.aspx.cs"

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

--!>

C#

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

namespace DaWeb002
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.HttpMethod.Equals("GET"))
            {
                // HTTP transfere dados quando o método é "GET"
                doGet();
            }
            if (Request.HttpMethod.Equals("POST"))
            {
                // HTTP transfere dados quando o método é "POST"
                doPost();
            }
        }

        // Executa método HTTP GET
        private void doGet()
        {
            String meuHtml = "<html xmlns=\"http://www.w3.org/1999/xhtml\">" +
                           "<head><title>Desenvolvimento Aberto</title></head>" +
                           "<body>" +
                           "<h1>Desenvolvimento Aberto</h1> <br />" +
                           "<h3>C# - HTTP GET - doGet</h3>" +
                           "Pagina criada pelo metodo do GET <br />" +

                           // Para que o método post seja disparado
                           // o form precisa saber o método - method="post"
                           // também funciona com o metodo get

                           "<form id=\"form1\" runat=\"server\" method=\"post\"> <br />" +
                           "<input type=\"submit\" value=\"Enviar\">" +
                           "</form>" +
                           "</body>" +
                           "</html>";

            Response.Write(meuHtml);

            string parametro = Request.QueryString["Parametro1"];

            if (parametro != null)
            {
                Response.Write("O parametro digitado foi: " + parametro);
            }

        }

        // Executa método HTTP POST
        private void doPost()
        {
            Response.Write("O método POST foi disparado!!!!");
        }
    }
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s