Friday, February 10, 2012
Retabbed
Login | Register
아티클
  Search
ASP.NET으로 만드는 게시판 – [2]웹 브라우저에 출력하는 방법
ASP.NET으로 만드는 게시판 – [2]웹 브라우저에 출력하는 방법

모든 컴퓨터 프로그램이 거의 모두 그러하듯이 웹 프로그래밍도 사용자의 입력을 받아서 적절한 그에 대한 적절한 출력을 해주는 것이 그 일이다. 본 프로젝트가 지향하는 바도 사용자 입력을 받아서 적절히 저장하고 보여주는 것이 그 역할이다. 입력을 받기 전에 먼저 웹 브라우저에 무언가를 출력을 해보는 것이 먼저다.

브라우저에 출력하는 방법은 세가지 정도로 요약이 된다. 물론 그보다 많은 방법이 있을 수 있겠으나 세가지 정도만 알면 출력을 해결하지 못하는 경우는 거의 없을 것으로 생각된다.

브라우저에 출력하는 법 1: HTML코드를 쓴다.

프로젝트 생성단원에서 만들어둔 소스코드로 가보자. WebForm1.aspx를 보자.

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DotNetBBS.WebForm1" %>

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

 

< html >

  < head >

    < title >WebForm1</title>

    < meta name ="GENERATOR" Content ="Microsoft Visual Studio .NET 7.1">

    < meta name ="CODE_LANGUAGE" Content ="C#">

    < meta name =vs_defaultClientScript content ="JavaScript">

    < meta name =vs_targetSchema content ="http://schemas.microsoft.com/intellisense/ie5">

  </ head >

  < body MS_POSITIONING ="GridLayout">

       

    < form id ="Form1" method ="post" runat ="server">

    </ form >

       

  </ body >

</ html >

HTML에 대해서는 여러분들이 웬만한 지식을 모두 보유하고 있을 것이므로 설명은 생략하고

<form> 태그 정도 안에 적절한 HTML코드를 넣으면 원하는 내용을 출력 할 수 있다. 아래와 같이 입력 후 프로그램을 실행해보자.

< form id ="Form1" method ="post" runat ="server">

       <label>Hello!</label>

</ form >

빈 화면에 “Hello!”가 출력되면 제대로 된 것이다. 이러한 방법은 웹 프로그래밍에 있어서 가장 고전적인 방법이자 현재에도 가장 많이 일반적으로 사용되는 방법이다.

브라우저에 출력하는 법 2: 코드비하인드를 이용한 프로그램밍적 방법

ASP.NET의 큰 특징중의 하나가 코드비하인드라는 프로그래밍영역의 분리이다. 즉 HTML코드와 프로그래밍을 분리 함으로써 프로그램에 대한 유지관리를 쉽게 하고 코드가 분리됨으로 인하여 복잡한 Class, Object구조 등을 이용하는 본격적인 프로그래밍을 쉽게 할 수 있도록 하고 있다. WebForm1.aspx.cs를 보자.

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

 

namespace DotNetBBS

{

        ///

        /// WebForm1 에 대한 요약 설명입니다.

        ///

        public class WebForm1 : System.Web.UI.Page

        {

             private void Page_Load(object sender, System.EventArgs e)

             {

                    // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.

             }

 

               #region Web Form 디자이너에서 생성한 코드

               override protected void OnInit(EventArgs e)

               {

                       //

                       // CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다.

                       //

                       InitializeComponent();

                       base.OnInit(e);

               }

              

               ///

               /// 디자이너 지원에 필요한 메서드입니다.

               /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.

               ///

               private void InitializeComponent()

               {   

                       this.Load += new System.EventHandler(this.Page_Load);

               }

               #endregion

        }

}

제법 코드가 되는데 다 무시하고 아래 부분만 봅니다.

             private void Page_Load(object sender, System.EventArgs e)

             {

                    // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.

             }

Page_Load는 말 그대로 해당 웹 페이지가 로드 될 때 불려지게 된다. 이 프로젝트의 경우에는 WebForm1.aspx가 로드 될 때 불려집니다. Page_Load라는 이름만 쓰면 불려지는 것은 아니고 아래 쪽을 잘 보면 

                       this.Load += new System.EventHandler(this.Page_Load);

라는 문장이 있는데 이것이 페이지가 로드 될 때 Page_Load라는 함수가 불려지도록 처리 하고 있는 문장이다. 함수 이름만 잘 봐도 금방 이해가 될 것이다. Page_Load함수를 아래 와 같이 수정한다.

               private void Page_Load(object sender, System.EventArgs e)

               {

                       Response.Write("Hello!");

                       Response.End();

               }

수정을 하고 프로그램을 실행하면 HTML을 수정한 경우와 비슷하게 빈 페이지에 “Hello!”라는 글자가 찍히면 정상적인 동작이다. 눈으로 보기에 거의 똑 같은 결과를 가져왔지만 실상은 많이 다르다. 두 가지 경우에 대하여 웹 브라우저 상에서 소스보기를 해보고 어떤 부분이 다른지 확인해 두자.  Page_Load에서 프로그래밍을 통하여 출력한 경우는 소스에도 “Hello!”만 있다. WebFrom1.aspx에 있는 내용은 완전히 무시되었다. Response.End()를 호출했기 때문이다. 이 부분에 대해서는 차후에 자세히 다루게 될 기회가 있을 것이다. 다만 이 방법을 사용하면 사용자 요청에 대해서 순수하게 원하는 내용만을 돌려 주는 방법이 된다는 정도만 기억해 두자. 위의 코드에서 Response.End()를 빼면? 빼고 실행해서 소스코드를 한번쯤 확인해 두자. “Hello!”가 소스코드의 어디에 위치하고 있는가?

브라우저에 출력하는 법 3: 자바스크립트를 이용하는 방법

자바스크립트는 웹브라우저에서 실행되는 프로그램이다. 즉 서버와는 큰 관련이 없고 클라이언트에서 실행되는 코드인 것이다. WebForm1.aspx를 다음과 같이 수정하고 실행해 보자.

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DotNetBBS.WebForm1" %>

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

 

< html >

  < head >

    < title >WebForm1</title>

    < meta name ="GENERATOR" Content ="Microsoft Visual Studio .NET 7.1">

    < meta name ="CODE_LANGUAGE" Content ="C#">

    < meta name =vs_defaultClientScript content ="JavaScript">

    < meta name =vs_targetSchema content ="http://schemas.microsoft.com/intellisense/ie5">

  </ head >

    < body MS_POSITIONING ="GridLayout">

       

        < script >

             window.document.writeln("Hello!");

       </ script >

      

    < form id ="Form1" method ="post" runat ="server">

    </ form >

       

  </ body >

</ html >

결과는 위의 두 가지 경우와 동일한 모양이다. 그러나 이번 경우는 처리되는 방법에서 차이가 있다. 위의 스크립트는 서버에서 페이지를 완전히 받아온 다음 해당 스크립트가 클라이언트에서 실행된 것이다. 웹브라우저 상에서 소스보기를 해보면 그냥 똑 같은 소스로 나오는 것을 확인해 볼 수 있다. 즉 보여지는 HTML이 수정된 것이 아니라 서버에서 받아온 페이지는 그대로 있고 스크립트가 실행되면서 출력이 된 것이다. 당장에는 큰 차이를 느낄 수 없겠지만 이 클라이언트 스크립트를 이용한 웹 페이지 출력 방법은 편리한 사용자 인터페이스를 위해서는 필수적인 사항이라는 것만 기억해두도록 하자.


게시일자 Friday, November 11, 2005 (Archive on Friday, November 18, 2005)
게시자: 사이트관리자  저자: 불나방
돌아가기

평점:
평가:
평가 올리기

현재평점평균:
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게