2014년 10월 16일 목요일

[강좌#3]hello.aspx 자세히 보기(ASP.Net 원리)[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

이번강좌에서는 hello.aspx를 자세히 보도록 하겠습니다.
아래 파일을 c:\inetpub\wwwroot에 hello2.aspx로 저장 합니다.
<%@ page language="C#" %>
<script runat="server">
void Button1_Click(object sender, System.EventArgs e) {
Label1.Text = TextBox1.Text + "님 환영 합니다"; 
}
</script>


Hello World!



성명: 





[결과]
[작동 원리]
<%@ page language=“C#” %> --> Page 지시자 이며 반드시 <%@ page로 시작>

<script runat="server">
void Button1_Click(object sender, System.EventArgs e) {
Label1.Text = TextBox1.Text + "님 환영 합니다"; 
}
</script>
서버 측 스크립트 블록이며 서버에서 처리될 스크립트인 경우 반드시 runat=“server”라고 표기 해야 합니다. 이 부분의 코드는 실행 시에만 인식되는 코드이며 클라이언트 측 결과물에는 이러한 코드는 나타나지 않습니다. (사용자는 볼 수 없다.)

--> form 테그에 runat=“server”가 있다는 것은 이 폼은 흔히 말하는 웹 폼 이라는 것이며 웹 폼은 ASP.NET에서 제공하는 서버 컨트롤을 포함 할 수 있으며 그것들을 제어 할 수 있는 서버 측의 논리적인 구역을 의미 합니다. 모든 서버 컨트롤은 반드시 웹 폼구역 안에 와야 합니다.(과사이), 하나의 ASP.NET 페이지 안에는 하나의 웹 폼이 올 수 있습니다.
성명: --> Label 컨트롤은 단지 문자열의 값을 출력하는 역할을 담당하는 단순한 기능의 컨트롤 입니다.이 컨트롤은 서버 컨트롤 이기에 반드시 runat=“server” 설정을 해야 하며 프로그래밍적으로 이 컨트롤의 여러 속성에 접근 해야 하므로 반드시 고유한 ID를 가져야 하므로 필히 id를 부여 해야 합니다. 컨트롤 이지만 컴파일 되고 실행되어 출력 결과물이 만들어 질 때는 html의 태그로 바뀌게 됩니다. 홍길동님 환영 합니다(중요)

이러한 서버 컨트롤은 서버 측 개발자에게만 의미가 있고 클라이언트에게는 의미가 없는 컨트롤 입니다. 이러한 사실에 근거하면 클라이언트는 원래의 aspx 소스를 알아 내거나 살펴 볼 수 있는 방법이 전혀 없다는 것이며 결과가 서버 컨트롤을 쓴 건지 원래 태그 였는 지는 모른다는 의미 입니다.
--> 다음은 버튼 컨트롤 입니다. Label과 마찬가지로 runat=“server”를 지정해야 하며 id 값도 부여 해야 합니다. 그리고 Text 속성의 값도 가지고 있는데, 또한 OnClick 이벤트를 처리 할 Method도 정의 하고 있으며 이것이 바로 서버 컨트롤에서의 이벤트 지정 입니다. 사용자의 웹브라우저에서 버튼이 눌러 졌을때 지정된 메소드 이름과 같은 메소드를 서버 측에서 찾아 그 함수를 수행 하는 것입니다.(정확히 말하면 버튼을 클릭시 일단 폼을 서브밋 하고 서버 측에서 해당 버튼의 클릭 이벤트가 수행 되는 것 입니다다.) 특히 함수 명의 대소문자 구별은 중요 합니다. C# 언어는 대.소문자를 구분 하는 언어 입니다. Button 컨트롤도 aspx 상에서는 이지만 컴파일 되어 실행되면 클라이언트에서 확인 할 때는 다음과 같이 바뀌게 됩니다. 
최초 실행 하신 후 브라우저에서 소스보기를 하면  와 같은 hidden 값이 하나 보일 것 입니다. 이것의 이름은 _VIEWSTATE이고 알아보기 힘든 값으로 채워져 있는데 이 컨트롤은 서버측에서 필요 한 정보를 base64 방식으로 인코딩 하여 내부적으로 숨겨 두기 위하여 사용하는 컨트롤 인데 주로 컨트롤들의 상태를 유지하기 위한 방법으로 사용 됩니다. 이렇게 하면 POSTBACK(다시 그페이지가 불림)을 하더라도 컨트롤내의 값들이 사라 지지 않고 유지 될 수 있습니다 .(기존 웹프로그램에서는 그렇지 않았습니다. 값을 보고나할려면 배발자가 어떤 작업을 해 주어야 했습니다. 예를들어 회우너정보 입력하다가 뭘잘못했는데 다시 돌아와 보니 여태까지 입력한 정보가 사라진 것을 경험하신분들이 많으실겁니다.) 최초 상태에서 이름을 입력 하고 서브밋을 한 후 소스보기를 하면 위의 내용과 다르게 나타 날 것입니다. 
만약
처럼 태그에 action이 있어 자신의 페이지를 가리키지 않고 다른 페이지를 가리 킨다면 버튼을 클릭시 호출되는 이벤트는 nextPage.aspx의 Button1_Click이 실행되는 것일까? 만일 nextPage.aspx에 Button1_Click 함수가 없다면? 이러한 것을 ASP.Net에서는 PostBack으로 해결 하고 있다. 다시 말해 개발자가 폼의 action을 바꾸어도 그 내용은 무시해 버리고 자기 자신 페이지로 포스트 백 하도록 하는 것입니다.
ASP.Net의 동작 원리를 그림으로 보면 아래와 같습니다.


 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272187
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111580
53 [평일주간100%환급]Spring,JAVA,JSP,안드로이드,C#닷넷,SQL,튜닝… 오라클자바…03-151362
52 [주말]C#,ASP.NET마스터 오라클자바…01-311480
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-311574
50 [기업100%환급]Spring ,MyBatis,Hibernate실무과정(스프링개발자… 오라클자바…01-311180
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191481
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111307
47 [평일야간,주말주간,주말야간]JAVA,Network&JSP&Spring,MyBatis,… 오라클자바…01-031824
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272187
45 [기업100%환급]자바웹개발기초과정(JAVA,JDBC,JSP,Servlet,Aajx,… 오라클자바…12-191579
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141557
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111580
42 [주말주간]자바&웹,jQUERY,스프링프레임워크 오라클자바…12-091266
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011484
40 [기업100%환급]자바기초&안드로이드개발자과정(Android전액환급… 오라클자바…12-011620
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011130

댓글 없음:

댓글 쓰기