본문 바로가기

Languages/ASP .NET

ASP.NET - 폼 데이터 보내기


 

폼 데이터 보내기 (GET/POST)

  • 이란?
    • 웹 페이지에 입력한 데이터는 폼을 통해서 서버로 보내지는데, 폼은 <form>태그를 사용해서 정의하며, <form>태그 안에 정의된 입력 컨트롤의 데이터 값을 서버로 전송합니다.
    • <form>태그는 입력 데이터 태그를 담을 수 있는 컨테이너 태그입니다. <form>태그안에는 <input>태그와 같은 폼 입력 컨트롤 삽입이 가능하며, 각 컨트롤은 서버에 전송할 데이터를 포함하고 있습니다.
    • [기본형식]<form name = "myForm" action = "response.aspx" method = "GET" target = "NewWnd">
      ......
      </form>
    • [폼 설명]
      • name : 폼 이름을 지정합니다.
      • action : 폼에서 입력받은 데이터를 어떤 페이지로 전송해서 처리하게 할 것인지 URL을 지정합니다.
      • method : 서버에 입력데이터를 전송하는 방법을 지정합니다. GET / POST 방식이 있습니다.
      • target : 결과를 보여줄 윈도우 이름을 지정하며, 생략시에는 현재 윈도우를 사용합니다.
  • 데이터 전송 방식
    • 웹 페이지에서 입력된 데이터를 서버로 보내는 전송 방식에는 크게 두 가지가 있습니다. GET/POST 방식인데요, 쉽게 말해서 GET은 URL 뒤에 폼에서 보내진 정보를 (? name=xxxx password=1234)등과 같이 전송하는 방식이며, POST는 HTML문서(ASP,JSP...)의 Header에 붙어서 전송됩니다.
    • GET 방식은 주소에 모든 정보가 노출되기 때문에, 보안에 염려가 있는 정보가 있을 경우에는 사용하면 안되며, 최대로 표시 및 전송할 수 있는 정보에 제한이 있습니다.
    • POST 방식은 문서의 Header에 포함되어 전송됩니다. 따라서, URL에 표시되지 않으며, 보안상 GET 방식보다 안전하며, 많은 내용의 정보를 전송할 수 있습니다.
    • ASP.NET에서의 Default 전송 방식은 POST 방식입니다.
  •  

    	





    사용자 ID : <%=Request("usrId") %>
    사용자 PASSWORD : <%=Request("usrPwd") %>
    서버 폼


    • ASP.NET 프로그래밍에서는 서버 폼과 서버 컨트롤을 사용합니다. ASP.NET페이지는 서버 위주로 동작하며, 폼과 컨트롤 모두 서버에서 실행됩니다.
      서버폼 :
      웹 서퍼 컨트롤
    • ASP.NET폼은 서버에서 실행되는 서버 폼입니다. HTML폼처럼 form 태그를 사용하고, runat 속성을 "server"로 지정하여 폼을 정의합니다.
      <form runat = "server">
      </form>
    서버 컨트롤


    • 서버 폼안에 들어가는 것이 서버 컨트롤들 입니다.
    • 서버 컨트롤은 Visual Studio 의 도구상자에 있는 모든 컨트롤 들이 서버 컨트롤 입니다.
      • <asp:Label id="Label1" runat="server"> 레이블 컨트롤 </asp:Label>
    • [서버 컨트롤 속성지정하기]
      • 소스보기를 통하여 직접 수정도 가능하지만, 보다 편하게 C# 환경처럼 도구를 이용해서 속성 수정이 가능합니다.

    서버 컨트롤 이벤트 다루기


    • 서버 컨트롤 중에서 버튼 컨트롤과 같이 이벤트를 제공하는 컨트롤이 있습니다.
    • 버튼 컨트롤의 경우에는 버튼을 클릭했을 때 발생되어지는 Click 이벤트가 있으며 이러한 이벤트를 사용하는 방법은 디자인보기에서 버튼을 더블클릭하면 자동으로 C# 코드처럼 작성할 수 있습니다.

    서버 컨트롤 이벤트 다루기 - 실습



    출력결과


    C# 소스
    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    
    public partical class _Default : System.Web.Ui.Page{
    protected void Page_Load(object sender, EventArgs e){}
    protected void Button1_Click(object sender, EventArgs e){
    showText.Text = "입력하신 내용은 "+inText.Text+"입니다";
    inText.Text = "이곳에 내용을 입력하세요";
    }
    }
    
    
    

    ASP.NET 소스
    <%@ Page Language = "C#" AutoEventWireup = "true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    
    
    
    
    


    HTML 폼과 비교


    • ASP 방식은 Request 개체를 사용해서 클라이언트로부터 전송된 입력 데이터를 구합니다.

    void Page_Load()

    {

    Response.Write("사용자 ID : "+Request["userID"]);

    Response.Write("암호 : "+Request["userPWD"]);

    }

    • 반면, ASP.NET 방식은 컨트롤 속성 값을 직접 가져오거나 할당합니다. 즉, 이 소스의 내용은 .cs 파일 안에 작성되어 집니다.

    void Page_Load()

    {

    Label1.Text = "사용자 ID : "+TextBox1.Text;

    Label2.Text = "암호 : "+TextBox2.Text;

    }

    코드관리 방식


    • 위와 같이 하나의 aspx 파일에 C#의 코드와, HTML코드가 함께 있습니다.
    • 이러한 방식을 Code-inline 방식이라고 합니다.
    • 이런 방식을 사용하면, 코드의 재사용이 힘들 뿐더러, 코드가 매우 복잡해져서 나중에 유지/보수가 매우 힘들 수 있습니다.
    • CodeFile을 이용하여 코드를 분리
      • ASP.NET 페이지에서 사용하는 코드를 별도의 파일(.cs)로 구분해서 작성이 가능합니다.
      • 이것은 JSP의 MVC 모델처럼 디자인코드와 프로그램코드가 분리되어, 나중에 프로그램코드의 재사용이 가능하며, 디자인과 프로그래머 간의 작업이 보다 원할하게 분리가 되기 때문에, 팀 프로젝트 작업시에도 유용합니다.

    C# 코드내용

    ASP.NET 코드내용



    상태 정보
    • 상태정보라는 것은 현재 페이지 상태를 나타내는 정보를 말하는데, 예를 들어 텍스트박스에 입력된 값이나 리스트박스에서 선택된 항목이 어떤 것인지 알려주는 정보입니다.
    • HTML 그 자체로서는 상태 정보를 가질 수 없으나, 서버 컨트롤은 상태 정보를 가질 수 있습니다



      ▲ 확인 버튼을 눌러도, 기존에 선택된 항목은 계속 유지가 됩니다

    'Languages > ASP .NET' 카테고리의 다른 글

    ASP.NET - 패널(Panel), Literal, Table  (0) 2011.08.31
    ASP.NET - 기본 컨트롤 사용  (0) 2011.08.31
    ASP.NET - 페이지 분석  (0) 2011.08.31
    ASP.NET - 시작  (0) 2011.08.31
    ASP.NET - IIS 가상 디렉터리 만들기  (0) 2011.08.31