폼 데이터 보내기 (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") %>
서버 폼
사용자 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 |