<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>네트워크를 돌아다녀</title>
    <link>https://trip-to-network.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 6 Sep 2026 16:27:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>new민지();</managingEditor>
    <item>
      <title>IoC/DI 관련 실습 01 / 02</title>
      <link>https://trip-to-network.tistory.com/29</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;■■■&amp;nbsp;IoC/DI&amp;nbsp;관련&amp;nbsp;실습&amp;nbsp;01&amp;nbsp;■■■&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;※&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;없이&amp;nbsp;IoC/DI&amp;nbsp;개념&amp;nbsp;실습 &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;실습&amp;nbsp;성격&amp;nbsp;및&amp;nbsp;주요사항 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;콘솔&amp;nbsp;프로젝트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;성적&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;국어,&amp;nbsp;영어,&amp;nbsp;수학&amp;nbsp;점수를&amp;nbsp;입력&amp;nbsp;받아&amp;nbsp;총점,&amp;nbsp;평균을&amp;nbsp;출력하는&amp;nbsp;프로그램 &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;물리적&amp;nbsp;파일&amp;nbsp;구성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;Record.java &amp;rarr;&amp;nbsp;인터페이스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;RecordView.java &amp;rarr;&amp;nbsp;인터페이스&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.&amp;nbsp;RecordImpl1.java &amp;rarr;&amp;nbsp;Record&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.&amp;nbsp;RecordImpl2.java &amp;rarr;&amp;nbsp;Record&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.&amp;nbsp;RecordViewImpl.java &amp;rarr;&amp;nbsp;RecordView&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.&amp;nbsp;Main.java &amp;rarr;&amp;nbsp;클래스,&amp;nbsp;main()&amp;nbsp;메소드를&amp;nbsp;포함하는&amp;nbsp;테스트&amp;nbsp;클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;&amp;nbsp;1.&amp;nbsp;Record.java &amp;rarr;&amp;nbsp;인터페이스 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704718495475&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* ================
 	Record.java
 	- 인터페이스
 ==================*/

package com.test.spr;

public interface Record
{
	public void setKor(int kor);
	public int getKor();
	
	public void setEng(int eng);
	public int getEng();
	
	public void setMat(int mat);
	public int getMat();

	public int getTotal();
	
	public double getAvg();

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.&amp;nbsp;RecordView.java &amp;rarr;&amp;nbsp;인터페이스&amp;nbsp; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704718527138&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* ===================
 	RecordView.java
 	- 인터페이스
 ====================*/

package com.test.spr;

public interface RecordView
{
	// setter 메소드 선언 
	public void setRecord(Record record);
	
	// 입력 액션 전용 메소드 선언
	public void input();
	
	// 출력 액션 전용 메소드 선언
	public void output();
	
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. RecordImpl1.java &amp;rarr; Record 인터페이스를 구현하는 클래스&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. RecordImpl2.java &amp;rarr; Record 인터페이스를 구현하는 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RecordImpl2.java 클래스에서는 기본 점수 100점을 추가하고, 평균을 4로 나누었다. &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704718643028&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* =========================================
 	RecordImpl1.java
 	- 클래스
 	- Record 인터페이스를 구현하는 클래스
 ===========================================*/

package com.test.spr;

public class RecordImpl1 implements Record
{
	// 주요 속성 구성 
	private int kor, eng, mat;

	// Record 의 메소드 모두 재정의
	@Override
	public void setKor(int kor)
	{
		this.kor = kor;
	}

	@Override
	public int getKor()
	{
		return kor;
	}

	@Override
	public void setEng(int eng)
	{
		this.eng = eng;
	}

	@Override
	public int getEng()
	{
		return eng;
	}

	@Override
	public void setMat(int mat)
	{
		this.mat = mat;
	}

	@Override
	public int getMat()
	{
		return mat;
	}

	@Override
	public int getTotal()
	{

		int result = 0;
		
		result = this.getKor() + this.getEng() + this.getMat();
		
		return result;
	}

	@Override
	public double getAvg()
	{
		double result = 0;
		
		result = this.getTotal()/3.0;
		
		return result;
	}
	
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1704718649738&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* ========================================================
 	RecordImpl2.java
 	- 클래스
 	- Record 인터페이스를 구현하는 클래스
 	- RecordImpl1 에 적용된 업무와 차별화된 업무 수행
 =========================================================*/

package com.test.spr;

public class RecordImpl2 implements Record
{
	// 주요 속성 구성 
	private int kor, eng, mat;

	// Record 의 메소드 모두 재정의
	@Override
	public void setKor(int kor)
	{
		this.kor = kor;
	}

	@Override
	public int getKor()
	{
		return kor;
	}

	@Override
	public void setEng(int eng)
	{
		this.eng = eng;
	}

	@Override
	public int getEng()
	{
		return eng;
	}

	@Override
	public void setMat(int mat)
	{
		this.mat = mat;
	}

	@Override
	public int getMat()
	{
		return mat;
	}

	@Override
	public int getTotal()
	{

		int result = 0;
		
		// 기본 점수(100점) 추가
		result = 100 + this.getKor() + this.getEng() + this.getMat();

		return result;
	}

	@Override
	public double getAvg()
	{
		double result = 0;
		
		// 기본 점수(100점)가 포함된 상태에서의 평균 처리
		result = this.getTotal()/4.0;

		return result;
	}	
	
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6.&amp;nbsp;Main.java &amp;rarr;&amp;nbsp;클래스,&amp;nbsp;main()&amp;nbsp;메소드를&amp;nbsp;포함하는&amp;nbsp;테스트&amp;nbsp;클래스&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704718777250&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* ===========================================
  	Main.java
  	- 클래스
  	- main() 메소드를 포함하는 테스트 클래스
 ============================================*/

package com.test.spr;

public class Main
{
	public static void main(String[] args)
	{
		// [스프링이 처리하고 관리하게 될 영역] 
		// &amp;rarr; 즉, 스프링 컨테이너 안에서 벌어지게 될 상황
		//--------------------------------------------------------------------------
		
		// ① RecordImpl1(Record) 객체 생성 과정
		//RecordImpl1 rec1 = new RecordImpl1();
		Record rec1 = new RecordImpl1(); 				// RecordView 입장에서 dependency(의존 객체)
		
		// ② RecordImpl2(Record) 객체 생성 과정
		//RecordImpl2 rec2 = new RecordImpl2();
		Record rec2 = new RecordImpl2(); 				// RecordView 입장에서 dependency(의존 객체)
		
		
		// RecordViewImpl 객체 생성 과정
		// Record(의존 객체 &amp;rarr; RecordImpl1) 객체 필요
		//RecordViewImpl view = new RecordViewImpl();
		RecordView view = new RecordViewImpl();
		
		//-- check~!!
		// (스프링 컨테이너안에서 일어날 일)
		// 의존 객체 주입
		//-- 의존 객체 주입 방법을 사용하게 되면 
		//   느슨한 결합을 구성할 수 있게 되고
		//   한 쪽의 변동상황이 다른쪽에 영향을 덜 줄 수 있게 된다.
		view.setRecord(rec2); 					//-- setter injection
												//-- (setter 를 통한 주입)
		
		//--------------------------------------------------------------------------
		
		view.input();
		view.output();
		
		
	}
	
	
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;■■■&amp;nbsp;IoC/DI&amp;nbsp;관련&amp;nbsp;실습&amp;nbsp;02&amp;nbsp;■■■ &lt;br /&gt;&lt;br /&gt;※&amp;nbsp;스프링&amp;nbsp;프레임&amp;nbsp;적용&amp;nbsp;IoC/DI&amp;nbsp;개념&amp;nbsp;실습&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;b&gt;○&amp;nbsp;실습&amp;nbsp;환경&amp;nbsp;구성 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr; 스프링 자원을 활용할 수 있는 환경 구성&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;프로젝트&amp;nbsp;명&amp;nbsp;마우스&amp;nbsp;우클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;Build&amp;nbsp;Path&amp;nbsp;&amp;gt;&amp;nbsp;Configure&amp;nbsp;Build&amp;nbsp;Path...&amp;nbsp;메뉴&amp;nbsp;선택 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.&amp;nbsp;Libraries&amp;nbsp;탭&amp;nbsp;선택&amp;nbsp;&amp;gt;&amp;nbsp;Add&amp;nbsp;External&amp;nbsp;JARs...버튼&amp;nbsp;선택&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.&amp;nbsp;필요한&amp;nbsp;jar&amp;nbsp;파일을&amp;nbsp;해당&amp;nbsp;프로젝트에&amp;nbsp;외부&amp;nbsp;라이브러리로&amp;nbsp;등록 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;경로&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;C:\s-f-3.0.2-with-docs\dist &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;파일&amp;nbsp;1&amp;nbsp;&amp;rarr;&amp;nbsp;org.springframework.asm-3.0.2.RELEASE.jar &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;middot;파일 2 &amp;rarr; org.springframework.beans-3.0.2.RELEASE.jar &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;파일&amp;nbsp;3&amp;nbsp;&amp;rarr;&amp;nbsp;org.springframework.context-3.0.2.RELEASE.jar &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;파일&amp;nbsp;4&amp;nbsp;&amp;rarr;&amp;nbsp;org.springframework.core-3.0.2.RELEASE.jar &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;middot;파일 5 &amp;rarr; org.springframework.expression-3.0.2.RELEASE.jar &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;경로&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;C:\s-f-3.0.2-dependencies\org.apache.commons &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; C:\s-f-3.0.2-dependencies\org.apache.commons &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\com.springsource.org.apache.commons.logging\1.1.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;파일 6 &amp;rarr; com.springsource.org.apache.commons.logging-1.1.1.jar&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.&amp;nbsp;스프링&amp;nbsp;프레임워크의&amp;nbsp;환경&amp;nbsp;설정&amp;nbsp;파일을&amp;nbsp;XML&amp;nbsp;형식으로&amp;nbsp;생성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;생성&amp;nbsp;위치는&amp;nbsp;프로젝트&amp;nbsp;하위의&amp;nbsp;src&amp;nbsp;디렉터리&amp;nbsp;(현재&amp;nbsp;실습&amp;nbsp;환경은&amp;nbsp;콘솔이므로...) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;현재&amp;nbsp;실습&amp;nbsp;환경에서의&amp;nbsp;파일&amp;nbsp;이름은&amp;nbsp;사용자가&amp;nbsp;임의로&amp;nbsp;부여해서&amp;nbsp;생성하는&amp;nbsp;것이&amp;nbsp;가능 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;applicationContext.xml&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.&amp;nbsp;생성한&amp;nbsp;applicationContext.xml&amp;nbsp;파일에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링이&amp;nbsp;참조하게&amp;nbsp;될&amp;nbsp;객체에&amp;nbsp;대한&amp;nbsp;정보와&amp;nbsp;DI&amp;nbsp;설정을&amp;nbsp;추가하게&amp;nbsp;되며 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이와&amp;nbsp;같은&amp;nbsp;문서의&amp;nbsp;구성을&amp;nbsp;위해&amp;nbsp;스프링에서&amp;nbsp;제공하는&amp;nbsp;문서&amp;nbsp;참조 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;참조&amp;nbsp;경로&amp;nbsp;&amp;rarr;&amp;nbsp;C:\s-f-3.0.2-with-docs\docs\spring-framework-reference\htmlsingle &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;&amp;nbsp;참조&amp;nbsp;파일&amp;nbsp;&amp;rarr;&amp;nbsp;spring-framework-reference.xml &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;&amp;nbsp;참조&amp;nbsp;위치&amp;nbsp;&amp;rarr;&amp;nbsp;III.&amp;nbsp;Core&amp;nbsp;Technologies &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.2.1.&amp;nbsp;Configuration&amp;nbsp;metadata &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;링크로&amp;nbsp;이동하면&amp;nbsp;xml&amp;nbsp;샘플&amp;nbsp;파일을&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;내용을&amp;nbsp;복사하여&amp;nbsp;applicationContext.xml에&amp;nbsp;덮어쓰기(전체&amp;nbsp;선택&amp;nbsp;후&amp;nbsp;붙여넣기) &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;실습&amp;nbsp;성격&amp;nbsp;및&amp;nbsp;주요사항 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;콘솔&amp;nbsp;프로젝트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;성적&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;국어,&amp;nbsp;영어,&amp;nbsp;수학&amp;nbsp;점수를&amp;nbsp;입력&amp;nbsp;받아&amp;nbsp;총점,&amp;nbsp;평균을&amp;nbsp;출력하는&amp;nbsp;프로그램 &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;물리적&amp;nbsp;파일&amp;nbsp;구성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;Record.java &amp;rarr;&amp;nbsp;인터페이스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;SpringPrj&amp;nbsp;프로젝트의&amp;nbsp;기존&amp;nbsp;소스코드&amp;nbsp;활용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;RecordView.java &amp;rarr;&amp;nbsp;인터페이스&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;SpringPrj&amp;nbsp;프로젝트의&amp;nbsp;기존&amp;nbsp;소스코드&amp;nbsp;활용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.&amp;nbsp;RecordImpl1.java &amp;rarr;&amp;nbsp;Record&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;SpringPrj&amp;nbsp;프로젝트의&amp;nbsp;기존&amp;nbsp;소스코드&amp;nbsp;활용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.&amp;nbsp;RecordImpl2.java &amp;rarr;&amp;nbsp;Record&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;SpringPrj&amp;nbsp;프로젝트의&amp;nbsp;기존&amp;nbsp;소스코드&amp;nbsp;활용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.&amp;nbsp;RecordViewImpl.java &amp;rarr;&amp;nbsp;RecordView&amp;nbsp;인터페이스를&amp;nbsp;구현하는&amp;nbsp;클래스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;SpringPrj&amp;nbsp;프로젝트의&amp;nbsp;기존&amp;nbsp;소스코드&amp;nbsp;활용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.&amp;nbsp;Main.java &amp;rarr;&amp;nbsp;클래스,&amp;nbsp;main()&amp;nbsp;메소드를&amp;nbsp;포함하는&amp;nbsp;테스트&amp;nbsp;클래스 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;수정&amp;nbsp;check~~!! &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;7.&amp;nbsp;applicationContext.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;프로젝트&amp;nbsp;&amp;gt;&amp;nbsp;src&amp;nbsp;폴더&amp;nbsp;하위에&amp;nbsp;생성&amp;nbsp;(현재&amp;nbsp;파일의&amp;nbsp;이름은&amp;nbsp;임의로&amp;nbsp;지정가능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;7. applicationContext.xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704719070355&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&quot;&amp;gt;

    &amp;lt;!-- ※ 스프링이 제공하는 환경 설정 XML 파일 샘플 --&amp;gt;
   	&amp;lt;!--    &amp;rarr; 스프링이 생성하고 관리해야 할 객체들에 대한 정보 전달 --&amp;gt;
   	 
   	&amp;lt;!-- RecordImpl1 (Record) 클래스에 대한 객체 정보 전달 --&amp;gt;
   	&amp;lt;bean id=&quot;record1&quot; class=&quot;com.test.spr.RecordImpl1&quot;&amp;gt;&amp;lt;/bean&amp;gt;
   	 
   	&amp;lt;!-- RecordImpl1 (Record) 클래스에 대한 객체 정보 전달 --&amp;gt;
   	&amp;lt;bean id=&quot;record2&quot; class=&quot;com.test.spr.RecordImpl2&quot;&amp;gt;&amp;lt;/bean&amp;gt;

	&amp;lt;!-- RecordVieImpl (RecordView) 클래스에 대한 객체 정보 전달--&amp;gt;
	&amp;lt;bean id=&quot;view&quot; class=&quot;com.test.spr.RecordViewImpl&quot;&amp;gt;
	
		&amp;lt;!-- RecordImpl1 또는 RecordImpl2 객체에 대한 DI 설정 정보 전달 --&amp;gt;
		&amp;lt;!-- 『property』엘리먼트는 setter 메소드에 대한 정의 --&amp;gt;
		&amp;lt;!-- 즉, 『setXxx()』메소드의 경우 『property name=&quot;xxx&quot;』 --&amp;gt;
		&amp;lt;!-- 와 같은 형식으로 기술하여 설정하게 된다. --&amp;gt;
		&amp;lt;property name=&quot;record&quot;&amp;gt;
				
				&amp;lt;!-- 『ref』 엘리먼트에 의해 DI 객체에 대한 참조 지정 --&amp;gt;
				&amp;lt;ref bean=&quot;record2&quot;/&amp;gt;
						
		&amp;lt;/property&amp;gt;
		
		&amp;lt;!-- ※ 위 구문은 (line 23~28) --&amp;gt;
		&amp;lt;!--    &amp;lt;property name = &quot;record&quot; ref = &quot;record1&quot;&amp;gt;&amp;lt;/property&amp;gt; --&amp;gt;
		&amp;lt;!--    와 같은 형태로 작성해도 된다.--&amp;gt;
	
	&amp;lt;/bean&amp;gt;

&amp;lt;/beans&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여기서 ID record1, record2 는 변수명과 같이 사용자가 원하는 이름으로 지정하면 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;class 는 전달한 객체의 경로를 지정한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 수정된&amp;nbsp; Main.java &amp;rarr; 클래스, main() 메소드를 포함하는 테스트 클래스&lt;/p&gt;
&lt;pre id=&quot;code_1704719219556&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* ===========================================
  	Main.java
  	- 클래스
  	- main() 메소드를 포함하는 테스트 클래스
 ============================================*/

package com.test.spr;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main
{		
		// ※ 스프링 프레임워크에서는 
		//    객체 생성 과정 및 DI(의존객체 주입)에 대한 설정은
		//    스프링 환경 설정 파일로 대체된다. (&amp;rarr; applicationContext.xml)
		
		// 스프링 프레임워크에게...
		// applicationContext.xml 파일을 읽어서
		// 생성 및 관리할 객체에 대한 정보를 얻을 수 있도록 해야한다.
		ApplicationContext context = new ClassPathXmlApplicationContext(&quot;applicationContext.xml&quot;);
		
		// 『getBean()』메소드를 이용하여 사용자가 원하는 객체를 얻어낸다.
		//  메소드의 인자값으로 식별자(id)를 통해 구분하여 지정하게 된다.
		//RecordView view = (RecordView)context.getBean(&quot;view&quot;);
		
		// 스프링 3.0 이후 버전부터 사용가능한 코드
		RecordView view = context.getBean(&quot;view&quot;, RecordViewImpl.class);
		
		view.input();
		view.output();
	}
	
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Spring</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/29</guid>
      <comments>https://trip-to-network.tistory.com/29#entry29comment</comments>
      <pubDate>Mon, 8 Jan 2024 22:07:26 +0900</pubDate>
    </item>
    <item>
      <title>Spring Framework 환경설정</title>
      <link>https://trip-to-network.tistory.com/28</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;※ 스프링 프레임워크(Spring Framework) 구성을 위해 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;관련&amp;nbsp;리소스를&amp;nbsp;다운로드&amp;nbsp;받아야&amp;nbsp;하는데 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://www.spring.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.spring.io&lt;/a&gt;&amp;nbsp;경로에&amp;nbsp;접근하여&amp;nbsp;확인해보면 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;다운로드&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;경로를&amp;nbsp;찾을&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;상태이다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(STS&amp;nbsp;연동&amp;nbsp;(Maven&amp;nbsp;활용)만&amp;nbsp;가능한&amp;nbsp;상태) &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;적용&amp;nbsp;및&amp;nbsp;테스트가&amp;nbsp;원활한&amp;nbsp;버전으로&amp;nbsp;실습&amp;nbsp;환경&amp;nbsp;구성&amp;nbsp;(비&amp;nbsp;STS) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;①&amp;nbsp;spring-framework-3.0.2-wiht-docs.zip &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기본적인&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;구성에&amp;nbsp;필요한&amp;nbsp;필수적인&amp;nbsp;jar&amp;nbsp;파일과&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;설명문서(pdf&amp;nbsp;버전,&amp;nbsp;html&amp;nbsp;버전)가&amp;nbsp;포함된&amp;nbsp;항목, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;원래의&amp;nbsp;jar&amp;nbsp;파일들~ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;②&amp;nbsp;spring-framework-3.0.2-dependencies.zip &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;구성에&amp;nbsp;의존성을&amp;nbsp;가진&amp;nbsp;jar&amp;nbsp;파일들이&amp;nbsp;포함된&amp;nbsp;항목, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;어떤&amp;nbsp;기능을&amp;nbsp;수행하는냐에&amp;nbsp;따라&amp;nbsp;추가적으로&amp;nbsp;필요한&amp;nbsp;항목. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링이&amp;nbsp;참조하는&amp;nbsp;의존&amp;nbsp;jar&amp;nbsp;파일들~@!! &lt;br /&gt;&lt;br /&gt;※&amp;nbsp;주의&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;다운로드&amp;nbsp;받은&amp;nbsp;두개의&amp;nbsp;압축&amp;nbsp;파일은&amp;nbsp;C:\&amp;nbsp;또는&amp;nbsp;D:\&amp;nbsp;드라이브&amp;nbsp;루트에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;폴더를&amp;nbsp;생성하여&amp;nbsp;압축을&amp;nbsp;풀어놓는다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;그&amp;nbsp;안에&amp;nbsp;들어있는&amp;nbsp;jar&amp;nbsp;파일들을&amp;nbsp;선택적으로&amp;nbsp;복사하여&amp;nbsp;사용할&amp;nbsp;예정이기&amp;nbsp;떄문애 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;쉬운&amp;nbsp;경로에&amp;nbsp;압축을&amp;nbsp;풀어놓는다는&amp;nbsp;의미도&amp;nbsp;있지만 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;압축을&amp;nbsp;해제하는&amp;nbsp;과정에서&amp;nbsp;이름(경로포함)이&amp;nbsp;길어서&amp;nbsp;특정&amp;nbsp;파일에&amp;nbsp;대해 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;제대로&amp;nbsp;압축을&amp;nbsp;해제하지&amp;nbsp;못하고&amp;nbsp;오류가&amp;nbsp;발생하기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;간단한&amp;nbsp;경로에서&amp;nbsp;압축을&amp;nbsp;해제할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;한다.&lt;/p&gt;</description>
      <category>Spring</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/28</guid>
      <comments>https://trip-to-network.tistory.com/28#entry28comment</comments>
      <pubDate>Mon, 8 Jan 2024 21:53:03 +0900</pubDate>
    </item>
    <item>
      <title>Spring Framework 이해하기</title>
      <link>https://trip-to-network.tistory.com/27</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;■■■&amp;nbsp;Spring&amp;nbsp;Framework&amp;nbsp;이해하기&amp;nbsp;■■■ &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;개요 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;Framework &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;어플리케이션을&amp;nbsp;구현하고&amp;nbsp;관리하는&amp;nbsp;환경(틀,&amp;nbsp;약속) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;Spring&amp;nbsp;Framework &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;전달&amp;nbsp;받은&amp;nbsp;설정&amp;nbsp;정보에&amp;nbsp;의해&amp;nbsp;어플리케이션을&amp;nbsp;구성하고, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;객체를&amp;nbsp;생성,&amp;nbsp;관리하는&amp;nbsp;주체. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;스프링&amp;nbsp;프레임워크(Spring&amp;nbsp;Framework)의&amp;nbsp;개념 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;자바&amp;nbsp;엔터프라이즈&amp;nbsp;어플리케이션&amp;nbsp;개발에&amp;nbsp;사용되는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;어플리케이션&amp;nbsp;프레임워크 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;어플리케이션&amp;nbsp;프레임워크는&amp;nbsp;어플리케이션&amp;nbsp;개발을&amp;nbsp;빠르고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;효율적으로&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;어플리케이션의&amp;nbsp;바탕이&amp;nbsp;되는&amp;nbsp;틀과 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;공통&amp;nbsp;프로그래밍&amp;nbsp;모델,&amp;nbsp;그리고&amp;nbsp;API&amp;nbsp;등을&amp;nbsp;제공해준다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;어플리케이션의&amp;nbsp;기본&amp;nbsp;틀&amp;nbsp;&amp;rarr;&amp;nbsp;스프링&amp;nbsp;컨테이너 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;스프링&amp;nbsp;컨테이너&amp;nbsp;또는&amp;nbsp;어플리케이션&amp;nbsp;컨텍스트라고&amp;nbsp;불리는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;런타임&amp;nbsp;엔진을&amp;nbsp;제공한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;컨테이너는&amp;nbsp;설정&amp;nbsp;정보를&amp;nbsp;참고해서&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;어플리케이션을&amp;nbsp;구성하는&amp;nbsp;오브젝트(객체)를&amp;nbsp;생성하고&amp;nbsp;관리한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;컨테이너는&amp;nbsp;독립적으로&amp;nbsp;동작할&amp;nbsp;수도&amp;nbsp;있지만 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;보통...&amp;nbsp;웹&amp;nbsp;모듈에서&amp;nbsp;동작하는&amp;nbsp;서비스나&amp;nbsp;서블릿으로&amp;nbsp;등록해서&amp;nbsp;사용한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링을&amp;nbsp;사용하려면&amp;nbsp;먼저&amp;nbsp;스프링&amp;nbsp;컨테이너를&amp;nbsp;다루는&amp;nbsp;방법과 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링&amp;nbsp;컨테이너가&amp;nbsp;어플리케이션&amp;nbsp;오브젝트를&amp;nbsp;이용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정&amp;nbsp;정보를&amp;nbsp;작성하는&amp;nbsp;방법을&amp;nbsp;알아야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;==&amp;gt;&amp;gt;&amp;nbsp;설정&amp;nbsp;정보에&amp;nbsp;의해&amp;nbsp;어플리케이션을&amp;nbsp;구성하고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;객체를&amp;nbsp;생성,&amp;nbsp;관리하는&amp;nbsp;주체 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;공통&amp;nbsp;프로그래밍&amp;nbsp;모델&amp;nbsp;&amp;rarr;&amp;nbsp;IoC/DI,&amp;nbsp;서비스&amp;nbsp;추상화&amp;nbsp;.&amp;nbsp;AOP &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;프레임워크는&amp;nbsp;어플리케이션을&amp;nbsp;구성하는&amp;nbsp;오브젝트(객체)가&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;생성되고&amp;nbsp;동작하는&amp;nbsp;방식에&amp;nbsp;대해&amp;nbsp;틀을&amp;nbsp;제공해줄&amp;nbsp;뿐&amp;nbsp;아니라 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;어플리케이션&amp;nbsp;코드가&amp;nbsp;★★&amp;nbsp;어떻게&amp;nbsp;작성되어야&amp;nbsp;하는지에&amp;nbsp;대한&amp;nbsp;기준&amp;nbsp;★★&amp;nbsp;도&amp;nbsp;제시한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이런&amp;nbsp;틀을&amp;nbsp;보통&amp;nbsp;프로그래밍&amp;nbsp;모델이라고&amp;nbsp;한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;세가지&amp;nbsp;핵심&amp;nbsp;프로그래밍&amp;nbsp;모델을&amp;nbsp;제공한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;①&amp;nbsp;★&amp;nbsp;IoC/DI&amp;nbsp;★ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;오브젝트&amp;nbsp;생명&amp;nbsp;주기와&amp;nbsp;의존&amp;nbsp;관계에&amp;nbsp;대한&amp;nbsp;프로그래밍&amp;nbsp;모델이다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;★&lt;b&gt;유연&lt;/b&gt;★하고&amp;nbsp;확장성이&amp;nbsp;뛰어난&amp;nbsp;코드를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;도와주는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;객체&amp;nbsp;지향&amp;nbsp;설계&amp;nbsp;원칙과&amp;nbsp;디자인&amp;nbsp;패턴의&amp;nbsp;핵심&amp;nbsp;원리를&amp;nbsp;담고&amp;nbsp;있는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IoC/DI&amp;nbsp;를&amp;nbsp;프레임워크의&amp;nbsp;핵심&amp;nbsp;근간으로&amp;nbsp;삼고&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프림&amp;nbsp;프레임워크에서&amp;nbsp;동작하는&amp;nbsp;코드는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;★&lt;b&gt;IoC/DI&amp;nbsp;방식에&amp;nbsp;따라&amp;nbsp;작성되어야&lt;/b&gt;★&amp;nbsp;스프링이&amp;nbsp;제공하는&amp;nbsp;가치를&amp;nbsp;제대로&amp;nbsp;누릴&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스피링이&amp;nbsp;직접&amp;nbsp;제공하는&amp;nbsp;모든&amp;nbsp;기술과&amp;nbsp;API,&amp;nbsp;심지어&amp;nbsp;컨테이너까지도&amp;nbsp; &lt;br /&gt;IoC/DI&amp;nbsp;방식으로&amp;nbsp;작성되어(만들어져)있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링을&amp;nbsp;바르게&amp;nbsp;이해하고&amp;nbsp;효율적으로&amp;nbsp;사용하는데 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;★기본이&amp;nbsp;되며&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;기술★&amp;nbsp;이다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;IoC&amp;nbsp;&amp;rarr;&amp;nbsp;-&amp;nbsp;객체&amp;nbsp;관리의&amp;nbsp;주체. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Inversion&amp;nbsp;of&amp;nbsp;Control&amp;nbsp;:&amp;nbsp;제어의&amp;nbsp;역전&amp;nbsp;(역제어) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;객체&amp;nbsp;생성과&amp;nbsp;관리를&amp;nbsp;직접하는&amp;nbsp;것이&amp;nbsp;아니라 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;외부(컨테이너)에서&amp;nbsp;만들어진&amp;nbsp;오브젝트(객체)를 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;제공받는&amp;nbsp;입장이&amp;nbsp;되는것. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Bean&amp;nbsp;:&amp;nbsp;스프링이&amp;nbsp;관리하는&amp;nbsp;대상 //&amp;nbsp;제품 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Bean&amp;nbsp;Factory&amp;nbsp;:&amp;nbsp;객체를&amp;nbsp;관리하는&amp;nbsp;주체 //&amp;nbsp;공장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;일반적으로&amp;nbsp;이&amp;nbsp;기능을&amp;nbsp;확장한&amp;nbsp;Application&amp;nbsp;Context&amp;nbsp;를&amp;nbsp;사용하게&amp;nbsp;된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Application&amp;nbsp;Context&amp;nbsp;:&amp;nbsp;Bean&amp;nbsp;Factory&amp;nbsp;의&amp;nbsp;확장&amp;nbsp;버전. //&amp;nbsp;공단 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;설정&amp;nbsp;정보&amp;nbsp;:&amp;nbsp;어떤&amp;nbsp;객체들이&amp;nbsp;관리&amp;nbsp;대상인지&amp;nbsp;설정한&amp;nbsp;정보&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XML,&amp;nbsp;Annotation&amp;nbsp;등을&amp;nbsp;이용한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;객체&amp;nbsp;의존도&amp;nbsp;관계도&amp;nbsp;표현되어&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;IoC&amp;nbsp;컨테이너(스프링&amp;nbsp;컨테이너보다&amp;nbsp;좀&amp;nbsp;더&amp;nbsp;구체적)&amp;nbsp;:&amp;nbsp;객체를&amp;nbsp;등록하고&amp;nbsp;관리하는&amp;nbsp;공간&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;middot;DI&amp;nbsp;&amp;rarr;&amp;nbsp;-&amp;nbsp;객체를&amp;nbsp;관리하는&amp;nbsp;방법&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;자바에서&amp;nbsp;객체를&amp;nbsp;생성하고&amp;nbsp;관리하는&amp;nbsp;방법은 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;모두&amp;nbsp;has-a&amp;nbsp;관계를&amp;nbsp;통해&amp;nbsp;처리해&amp;nbsp;왔기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이들은&amp;nbsp;모두&amp;nbsp;의존관계가&amp;nbsp;치밀하고&amp;nbsp;밀접한&amp;nbsp;상황일수&amp;nbsp;밖에&amp;nbsp;없다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;때문에...&amp;nbsp;이러한&amp;nbsp;강한&amp;nbsp;결합&amp;nbsp;상태는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;유연성을&amp;nbsp;떨어뜨리는&amp;nbsp;결과를&amp;nbsp;초래하게&amp;nbsp;된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이러한&amp;nbsp;결합&amp;nbsp;상태를&amp;nbsp;풀어주는&amp;nbsp;과정(방법)이&amp;nbsp;DI&amp;nbsp;이다. &lt;br /&gt;&amp;nbsp;-&amp;nbsp;Depency&amp;nbsp;Injection:&amp;nbsp;의존성&amp;nbsp;주입(의존관계&amp;nbsp;주입) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;의존관계&amp;nbsp;주입&amp;nbsp;:&amp;nbsp;의존&amp;nbsp;객체를...&amp;nbsp;이&amp;nbsp;객체를&amp;nbsp;사용하는&amp;nbsp;객체에... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;외부에서&amp;nbsp;주입하는&amp;nbsp;액션&amp;nbsp;(상태) &lt;br /&gt;&amp;nbsp;-&amp;nbsp;의존관계&amp;nbsp;:&amp;nbsp;A가&amp;nbsp;실행되기&amp;nbsp;위해서는&amp;nbsp;B를&amp;nbsp;필요로&amp;nbsp;하는&amp;nbsp;상태&amp;nbsp; &lt;br /&gt;&amp;nbsp;-&amp;nbsp;외존객체&amp;nbsp;:&amp;nbsp;A&amp;nbsp;입장에서&amp;nbsp;의존&amp;nbsp;객체는&amp;nbsp;B&amp;nbsp;(즉,&amp;nbsp;주입되는&amp;nbsp;객체) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;※&amp;nbsp;우선...&amp;nbsp;A&amp;nbsp;객체에&amp;nbsp;B객체의&amp;nbsp;주소를&amp;nbsp;넘겨줌으로써&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B객체를&amp;nbsp;사용하게&amp;nbsp;된다면... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A객체는&amp;nbsp;여전히&amp;nbsp;B&amp;nbsp;객체를&amp;nbsp;사용하는&amp;nbsp;데는&amp;nbsp;문제가&amp;nbsp;없고, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B객체는&amp;nbsp;A&amp;nbsp;객체와의&amp;nbsp;결합&amp;nbsp;상태가&amp;nbsp;느슨해진다고&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이때,&amp;nbsp;넘겨주는&amp;nbsp;방법은&amp;nbsp;생성자&amp;nbsp;또는&amp;nbsp;setter()&amp;nbsp;메소드를&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이용하는&amp;nbsp;방법이&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DI&amp;nbsp;를&amp;nbsp;위해&amp;nbsp;객체는&amp;nbsp;작은&amp;nbsp;객체부터&amp;nbsp;생성해서 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;큰&amp;nbsp;객체로&amp;nbsp;DI하는&amp;nbsp;과정을&amp;nbsp;반복적으로&amp;nbsp;거치게&amp;nbsp;된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이때,&amp;nbsp;완성된&amp;nbsp;오브젝트(객체)가&amp;nbsp;만들어질&amp;nbsp;때까지 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;객체를&amp;nbsp;관리할&amp;nbsp;주체(누군가가...)가&amp;nbsp;필요한데 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;그&amp;nbsp;역할을&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;바로&amp;nbsp;컨테이너인&amp;nbsp;것이다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;②&amp;nbsp;서비스의&amp;nbsp;추상화&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링을&amp;nbsp;사용하면&amp;nbsp;환경이나&amp;nbsp;서버,&amp;nbsp;특정&amp;nbsp;기술에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;종속되지&amp;nbsp;않고,&amp;nbsp;이식성이&amp;nbsp;뛰어나며&amp;nbsp;유연한&amp;nbsp;어플리케이션을&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;되는데&amp;nbsp;이를&amp;nbsp;가능하게&amp;nbsp;해주는&amp;nbsp;것이&amp;nbsp;바로&amp;nbsp;서비스&amp;nbsp;추상화&amp;nbsp;이다., &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;구체적인&amp;nbsp;기술과&amp;nbsp;환경에&amp;nbsp;종속되지&amp;nbsp;않도록 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;유연한&amp;nbsp;추상&amp;nbsp;계층을&amp;nbsp;두는&amp;nbsp;방법이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;③&amp;nbsp;AOP(Aspect&amp;nbsp;Oriented&amp;nbsp;Programming) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;AOP&amp;nbsp;는&amp;nbsp;어플리케이션&amp;nbsp;코드에&amp;nbsp;산재해서&amp;nbsp;나타나는&amp;nbsp;부가적인&amp;nbsp;기능(공통기능)을 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;독립적인&amp;nbsp;상태로&amp;nbsp;모듈화&amp;nbsp;하는&amp;nbsp;프로그래밍&amp;nbsp;모델이다., &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;AOP&amp;nbsp;를&amp;nbsp;이용해서&amp;nbsp;다양한&amp;nbsp;엔터프라이즈&amp;nbsp;서비스를&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;적용하고도&amp;nbsp;깔끔한&amp;nbsp;코드를&amp;nbsp;유지할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해준다&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기술&amp;nbsp;API &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링은&amp;nbsp;엔터프라이즈&amp;nbsp;어플리케이션&amp;nbsp;개발의&amp;nbsp;다양한&amp;nbsp;영역에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;바로&amp;nbsp;활용될&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;방대한&amp;nbsp;양의&amp;nbsp;기술&amp;nbsp;API&amp;nbsp;를&amp;nbsp;제공한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UI&amp;nbsp;작성은&amp;nbsp;물론이고,&amp;nbsp;웹&amp;nbsp;프리젠테이션&amp;nbsp;계층,&amp;nbsp;비즈니스&amp;nbsp;서비스&amp;nbsp;계층, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기반&amp;nbsp;서비스&amp;nbsp;계층,&amp;nbsp;도메인&amp;nbsp;계층,&amp;nbsp;데이터&amp;nbsp;액세스&amp;nbsp;계층&amp;nbsp;등에서 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;필요한&amp;nbsp;주요&amp;nbsp;기술을&amp;nbsp;스프링에서&amp;nbsp;일관된&amp;nbsp;방식으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지원해주는&amp;nbsp;전략&amp;nbsp;클래스를&amp;nbsp;제공한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링이&amp;nbsp;제공하는&amp;nbsp;API와&amp;nbsp;지원&amp;nbsp;기술은 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;모두&amp;nbsp;스프링&amp;nbsp;프로그래밍&amp;nbsp;모델에&amp;nbsp;따라&amp;nbsp;작성되었기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이를&amp;nbsp;가져다&amp;nbsp;쓰는&amp;nbsp;것&amp;nbsp;만으로도&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프림&amp;nbsp;프로그래밍&amp;nbsp;모델을&amp;nbsp;코드에&amp;nbsp;자연스럽게&amp;nbsp;적용할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스프링의&amp;nbsp;모든&amp;nbsp;기술은&amp;nbsp;표준&amp;nbsp;자바&amp;nbsp;엔터프라이즈&amp;nbsp;플랫폼&amp;nbsp;(JavaEE)에&amp;nbsp;기술을&amp;nbsp;두고&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;표준&amp;nbsp;기술과&amp;nbsp;더불어&amp;nbsp;유명&amp;nbsp;오픈소스&amp;nbsp;기술과&amp;nbsp;주요&amp;nbsp;상용&amp;nbsp;기술에&amp;nbsp;대한 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;지원&amp;nbsp;기능도&amp;nbsp;다양하게&amp;nbsp;제공한다. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;스프링&amp;nbsp;프레임워크&amp;nbsp;(Spring&amp;nbsp;Framework)의&amp;nbsp;주요&amp;nbsp;기능과&amp;nbsp;특징 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.&amp;nbsp;경량&amp;nbsp;컨테이너&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;자바&amp;nbsp;객체를&amp;nbsp;담고,&amp;nbsp;이들&amp;nbsp;자바&amp;nbsp;객체의&amp;nbsp;생성과&amp;nbsp;소멸의 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;라이프&amp;nbsp;사이클을&amp;nbsp;관리. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.&amp;nbsp;DI(Dependency&amp;nbsp;Injection) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;의존성(관계)&amp;nbsp;주입(삽입)을&amp;nbsp;지원. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정&amp;nbsp;파일을&amp;nbsp;통해&amp;nbsp;객체간의&amp;nbsp;의존&amp;nbsp;관계를&amp;nbsp;정의. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.&amp;nbsp;AOP(Ascept&amp;nbsp;Oriented&amp;nbsp;Progamming) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;관점&amp;nbsp;지향&amp;nbsp;프로그래밍을&amp;nbsp;지원. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;여러&amp;nbsp;모듈에&amp;nbsp;공통적으로&amp;nbsp;쓰이는&amp;nbsp;기능을&amp;nbsp;분리하여 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;각&amp;nbsp;모듈에&amp;nbsp;적용하는&amp;nbsp;것이&amp;nbsp;가능. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;4.&amp;nbsp;POJO(Plan&amp;nbsp;Old&amp;nbsp;Java&amp;nbsp;Object) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;가장&amp;nbsp;기본적인&amp;nbsp;자바&amp;nbsp;객체를&amp;nbsp;지원 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기존&amp;nbsp;작성&amp;nbsp;코드의&amp;nbsp;유지성을&amp;nbsp;향상. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;보통의&amp;nbsp;자바(빈)&amp;nbsp;객체 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;상속(Ⅹ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;인터페이스(Ⅹ) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;5.&amp;nbsp;트랜잭션&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JDBC나&amp;nbsp;JTA를&amp;nbsp;사용하는&amp;nbsp;설정&amp;nbsp;파일을&amp;nbsp;통해 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;트랜잭션을&amp;nbsp;관리하여&amp;nbsp;동일한&amp;nbsp;코드를&amp;nbsp;여러&amp;nbsp;환경에서 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;사용하도록&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;6.&amp;nbsp;다양한&amp;nbsp;프레임워크와의&amp;nbsp;조합 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myBatis(iBatis),&amp;nbsp;Hivernate,&amp;nbsp;Struts,&amp;nbsp;Struts2,&amp;nbsp;JPA,&amp;nbsp;JDO,&amp;nbsp;Quartz&amp;nbsp;등 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;다른&amp;nbsp;프레임워크&amp;nbsp;뿐&amp;nbsp;아니라&amp;nbsp;사용자가&amp;nbsp;만든&amp;nbsp;프레임워크와의&amp;nbsp;연동성을&amp;nbsp;제공한다. &lt;br /&gt;&lt;br /&gt;※&amp;nbsp;스프링&amp;nbsp;프레임워크(Spring&amp;nbsp;Framework)에서&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;개념 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;DI(Dependency&amp;nbsp;Injection,&amp;nbsp;의존성&amp;nbsp;주입,&amp;nbsp;의존관계&amp;nbsp;주입) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;객체를&amp;nbsp;생성하고&amp;nbsp;관리하는&amp;nbsp;의존성에&amp;nbsp;대해서&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;어떻게&amp;nbsp;처리하는가에&amp;nbsp;대한&amp;nbsp;개념&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;IoC(Inversion&amp;nbsp;of&amp;nbsp;Control,&amp;nbsp;제어의&amp;nbsp;역전) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;인스턴스의&amp;nbsp;생성부터&amp;nbsp;소멸까지의&amp;nbsp;인스턴스&amp;nbsp;생명주기&amp;nbsp;관리를 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;컨테이너가&amp;nbsp;대신하는&amp;nbsp;개념&amp;nbsp; &lt;/p&gt;</description>
      <category>Spring</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/27</guid>
      <comments>https://trip-to-network.tistory.com/27#entry27comment</comments>
      <pubDate>Mon, 8 Jan 2024 21:52:17 +0900</pubDate>
    </item>
    <item>
      <title>jQuery의 ajax() 활용 실습 (기초/사칙연산)</title>
      <link>https://trip-to-network.tistory.com/26</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AjaxTest01.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704201891617&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page contentType=&quot;text/html; charset=UTF-8&quot;%&amp;gt;
&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;UTF-8&quot;);
	String cp = request.getContextPath();
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
&amp;lt;title&amp;gt;AjaxTest01.jsp&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

	$(function()
	{
		$(&quot;#sendBtn&quot;).click(function()
		{
			// 테스트
			//alert(&quot;확인~&quot;);
			
			var params = &quot;name=&quot; + $.trim($(&quot;#name&quot;).val())
					   + &quot;&amp;amp;content=&quot; + $.trim($(&quot;#content&quot;).val());
			
			// ※ jQuery 의 ajax() 함수 사용(호출)
			/*
			$.ajax();
			$.ajax(
			{
				type:&quot;POST&quot;					// 데이터 전송 및 페이지 요청 방식
				,url:&quot;AjaxTest01_ok.jsp&quot;	// 요청 페이지 URL
				,data:params				// 요청 페이지 (AjaxTest01_ok.jsp)에서 수신하게 되는 데이터
				,success:동작				// 페이지요청 및 데이터 전달이 성공했을 때의 처리
				,beforeSend:반환값확인		// 요청 전 확인해야 할 항목 처리(true/false)
				,error:동작					// 처리과정에서 문제가 발생했을때 처리
			});
			*/
			$.ajax(
			{
				type:&quot;POST&quot;
				,url:&quot;AjaxTest01_ok.jsp&quot;
				,data:params					// url 지정 페이지로 넘길 값	// check~!!
				,success: function(args)
				{
					$(&quot;#resultDiv&quot;).html(args);
					
					$(&quot;#name&quot;).val(&quot;&quot;);
					$(&quot;#content&quot;).val(&quot;&quot;);
					$(&quot;#name&quot;).focus();
				}
				,beforeSend:showRequest			// 함수 호출이 아닌 반환값을 확인 하는 것이기 때문에 showRequest() Ⅹ //check~!
				,error:function(e)
				{
					alert(e.responseText);
				}
			});
			
		});
	});
	
	function showRequest()
	{
		if (!$.trim($(&quot;#name&quot;).val()))
		{
			alert(&quot;이름을 입력해야 합니다.&quot;);
			$(&quot;#name&quot;).focus();
			
			return false;
		}	
		
		if (!$.trim($(&quot;#content&quot;).val()))
		{
			alert(&quot;내용을 입력해야 합니다.&quot;);
			$(&quot;#content&quot;).focus();
			
			return false;
		}	
		
		return true;
	}
	

&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;h1&amp;gt;jQuery의 ajax() 활용 실습&amp;lt;/h1&amp;gt;
	&amp;lt;hr /&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	이름&amp;lt;input type=&quot;text&quot; id=&quot;name&quot; class=&quot;txt&quot; /&amp;gt;
	&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
	
	내용
	&amp;lt;textarea name=&quot;&quot; id=&quot;content&quot; rows=&quot;3&quot; cols=&quot;50&quot;&amp;gt;&amp;lt;/textarea&amp;gt;
	&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
	
	&amp;lt;input type=&quot;button&quot; value=&quot;등록하기&quot; id=&quot;sendBtn&quot; /&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;

&amp;lt;div id=&quot;resultDiv&quot;&amp;gt;
&amp;lt;/div&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; AjaxTest01_ok.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704201940696&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page contentType=&quot;text/html; charset=UTF-8&quot;%&amp;gt;
&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;UTF-8&quot;);
	String cp = request.getContextPath();
%&amp;gt;
&amp;lt;%

/* 	// AjaxTest01_ok.jsp
	
	String name = request.getParameter(&quot;name&quot;);
	String content = request.getParameter(&quot;content&quot;); */


%&amp;gt;
&amp;lt;%-- 이름 : &amp;lt;b&amp;gt;&amp;lt;%=name%&amp;gt;&amp;lt;/b&amp;gt;
&amp;lt;br&amp;gt;
내용 : &amp;lt;b&amp;gt;&amp;lt;%=content %&amp;gt;&amp;lt;/b&amp;gt;
&amp;lt;br&amp;gt; --%&amp;gt;

이름 : &amp;lt;b&amp;gt;${param.name }&amp;lt;/b&amp;gt;
&amp;lt;br&amp;gt;
내용 : &amp;lt;b&amp;gt;${param.content }&amp;lt;/b&amp;gt;
&amp;lt;br&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AjaxTest03.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704202506501&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page contentType=&quot;text/html; charset=UTF-8&quot;%&amp;gt;
&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;UTF-8&quot;);
	String cp = request.getContextPath();
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
&amp;lt;title&amp;gt;AjaxTest03.jsp&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

	$(function()
	{
		$(&quot;#sendButton&quot;).click(function()
		{
			var params = &quot;su1=&quot; + $.trim($(&quot;#su1&quot;).val())
					   + &quot;&amp;amp;su2=&quot; + $.trim($(&quot;#su2&quot;).val())
					   + &quot;&amp;amp;op=&quot; + $.trim($(&quot;#oper&quot;).val());
			
			$.ajax(
			{
				type:&quot;POST&quot;
				,url:&quot;ajaxtest03ok.do&quot;
				,data:params
				,success: function(args)
				{
					$(&quot;#result&quot;).html(args);
				}
				,beforeSend:showRequest
				//,beforeSend:function()			// 별다른 검증과정 없이 넘길려면 함수로 선언해서 진행해야함.
				//{									   beforeSend 에게 넘겨줘야하는 값이 함수기 때문이다.
				//	return true 	
				//}
				,error:function(e)
				{
					alert(e.responseText);
				}
			});
			
		});
		
	});
	
	function showRequest()
	{
		if ($(&quot;#su1&quot;).val()==&quot;&quot;)
		{
			alert(&quot;첫번째 정수를 입력해주세요&quot;);
			$(&quot;#su1&quot;).focus();			
			return false;
		}
		
		if ($(&quot;#su2&quot;).val()==&quot;&quot;)
		{
			alert(&quot;두번째 정수를 입력해주세요&quot;);
			$(&quot;#su2&quot;).focus();			
			return false;
		}
		
		return true;
	}


&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;h1&amp;gt;jQuery 의 ajax() 활용 실습&amp;lt;/h1&amp;gt;
	&amp;lt;hr /&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;input type=&quot;text&quot; id=&quot;su1&quot; class=&quot;txt txtNum&quot;/&amp;gt;
	
	&amp;lt;select id=&quot;oper&quot;&amp;gt;
		&amp;lt;option value=&quot;add&quot;&amp;gt;덧셈&amp;lt;/option&amp;gt;
		&amp;lt;option value=&quot;sub&quot;&amp;gt;뺄셈&amp;lt;/option&amp;gt;
		&amp;lt;option value=&quot;mul&quot;&amp;gt;곱셈&amp;lt;/option&amp;gt;
		&amp;lt;option value=&quot;div&quot;&amp;gt;나눗셈&amp;lt;/option&amp;gt;
	&amp;lt;/select&amp;gt;
	
	&amp;lt;input type=&quot;text&quot; id=&quot;su2&quot; class=&quot;txt txtNum&quot;/&amp;gt;
	&amp;lt;input type=&quot;button&quot; value=&quot; = &quot; id=&quot;sendButton&quot; class=&quot;btn&quot;/&amp;gt;	
&amp;lt;/div&amp;gt;
&amp;lt;br&amp;gt;

&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;div id=&quot;result&quot;&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;br /&amp;gt;
&amp;lt;br /&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;input type=&quot;radio&quot; name=&quot;rdo&quot;/&amp;gt;rdo1
	&amp;lt;input type=&quot;radio&quot; name=&quot;rdo&quot;/&amp;gt;rdo2
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;input type=&quot;checkbox&quot; name=&quot;chk&quot; /&amp;gt;chk1
	&amp;lt;input type=&quot;checkbox&quot; name=&quot;chk&quot; /&amp;gt;chk2
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;input type=&quot;text&quot; /&amp;gt;
&amp;lt;/div&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AjaxTest03_ok.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1704202542812&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page contentType=&quot;text/html; charset=UTF-8&quot;%&amp;gt;
&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;UTF-8&quot;);
	String cp = request.getContextPath();
%&amp;gt;
${result }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>jQuery &amp;amp; Ajax</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/26</guid>
      <comments>https://trip-to-network.tistory.com/26#entry26comment</comments>
      <pubDate>Tue, 2 Jan 2024 22:36:23 +0900</pubDate>
    </item>
    <item>
      <title>jQuery 의 load() 활용 실습</title>
      <link>https://trip-to-network.tistory.com/25</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;LoadTest01.html&lt;/p&gt;
&lt;pre id=&quot;code_1704199740935&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
&amp;lt;title&amp;gt;LoadTest01.html&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

	// ※ 『load()』
	//    『$(선택자).load(&quot;로드를 원하는 html 문서의 위치와 이름&quot;);』
	//     -- jQuery 의 기능이 수행되는 과정에서 다른 html 문서를 로드
	//     -- HTML 을 읽어들여서 DOM 에 삽입하는 기능을 수행
	
	$(document).ready(function()
	{
		$(&quot;#btn .btnLoad&quot;).click(function()
		{
			// 테스트
			//alert(&quot;확인&quot;);
			
			$(&quot;#ctlGrid&quot;).load(&quot;LoadTest02.html&quot;);
			//-- 『비동기』방식으로 페이지 로드
			
			window.alert(&quot;여기서 작성한 메세지가 먼저 출력된다.&quot;);
			//-- Line 22 보다 이 메세지 박스가 먼저 출력~!!
			//   이유는... 비동기~!!
			
		});
	});

&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;h1&amp;gt;jQuery 의 load() 활용 실습&amp;lt;/h1&amp;gt;
	&amp;lt;hr /&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;div id=&quot;btn&quot;&amp;gt;
		&amp;lt;div class=&quot;btnLoad&quot;&amp;gt;HTML 읽어오기 버튼&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;
	&amp;lt;br&amp;gt;
	
	&amp;lt;div id=&quot;ctlGrid&quot;&amp;gt;
	&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;


&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LoadTest02.html&lt;/p&gt;
&lt;pre id=&quot;code_1704199803431&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
&amp;lt;title&amp;gt;LodeTest02.html&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

load()에 대한 실습

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/25</guid>
      <comments>https://trip-to-network.tistory.com/25#entry25comment</comments>
      <pubDate>Tue, 2 Jan 2024 21:51:04 +0900</pubDate>
    </item>
    <item>
      <title>Ajax 의 기본 개념</title>
      <link>https://trip-to-network.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;■■■&amp;nbsp;AJAX(에이작스)&amp;nbsp;■■■&amp;nbsp;에이잭스,&amp;nbsp;아작스&amp;nbsp;등등 &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;개요 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJAX&amp;nbsp;는&amp;nbsp;XML&amp;nbsp;에&amp;nbsp;기반한&amp;nbsp;종합&amp;nbsp;기술로&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;비동기&amp;nbsp;자바스크립트&amp;nbsp;XML&amp;nbsp;(Asynchronous&amp;nbsp;Javascript&amp;nbsp;And&amp;nbsp;XML)&amp;nbsp;을&amp;nbsp;줄인말로&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;자바&amp;nbsp;스크립트로&amp;nbsp;HTTP&amp;nbsp;요청을&amp;nbsp;보내서&amp;nbsp;XML&amp;nbsp;응답을&amp;nbsp;받아&amp;nbsp;사용하는&amp;nbsp;기술이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJAX&amp;nbsp;는&amp;nbsp;하나의&amp;nbsp;독립된&amp;nbsp;기술이...&amp;nbsp;아니다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;화면은&amp;nbsp;HTML&amp;nbsp;+&amp;nbsp;CSS로&amp;nbsp;구성&amp;nbsp;및&amp;nbsp;작성하고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;화면에&amp;nbsp;대한&amp;nbsp;조작과&amp;nbsp;상호작용은&amp;nbsp;문객체&amp;nbsp;모델(Document&amp;nbsp;Object&amp;nbsp;Mode&amp;nbsp;:&amp;nbsp;DOM)&amp;nbsp;로&amp;nbsp;처리하고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;데이터&amp;nbsp;교환은&amp;nbsp;XML&amp;nbsp;형식으로&amp;nbsp;처리하며, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;데이버&amp;nbsp;변환과&amp;nbsp;검색은&amp;nbsp;XML&amp;nbsp;기술은&amp;nbsp;XSL&amp;nbsp;과&amp;nbsp;Xpath&amp;nbsp;를&amp;nbsp;사용하며, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;비동기&amp;nbsp;통신에는&amp;nbsp;웹&amp;nbsp;브라우저&amp;nbsp;안에&amp;nbsp;내장되어&amp;nbsp;있는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XMLHttpRequest&amp;nbsp;객체를&amp;nbsp;사용하고. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;모~~든&amp;nbsp;것을&amp;nbsp;하나로&amp;nbsp;묶어주는&amp;nbsp;개념으로&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Javascript&amp;nbsp;/&amp;nbsp;jQuery&amp;nbsp;를&amp;nbsp;사용하는&amp;nbsp;것. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이것을&amp;nbsp;AJAX&amp;nbsp;라고&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;특징 &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;비동기&amp;nbsp;자바&amp;nbsp;스크립트&amp;nbsp;XML &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;자바스크립트로&amp;nbsp;HTTP&amp;nbsp;요청을&amp;nbsp;보내서&amp;nbsp;XML&amp;nbsp;응답을&amp;nbsp;받아&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;처리&amp;nbsp;과정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;①&amp;nbsp;HTTP&amp;nbsp;요청을&amp;nbsp;보냄 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;②&amp;nbsp;XML&amp;nbsp;문서를&amp;nbsp;응답으로&amp;nbsp;받음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;③&amp;nbsp;자동으로&amp;nbsp;XML&amp;nbsp;객체가&amp;nbsp;생성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;④&amp;nbsp;자바스크립트는&amp;nbsp;XML&amp;nbsp;객체에&amp;nbsp;접근하여&amp;nbsp;다양한&amp;nbsp;작업을&amp;nbsp;수행 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;==&amp;gt;&amp;gt;&amp;nbsp;HTML+CSS,&amp;nbsp;DOM,&amp;nbsp;XML,&amp;nbsp;XSLT,&amp;nbsp;XPath,&amp;nbsp;XMLHttpRequest,&amp;nbsp;Javascript&amp;nbsp;를&amp;nbsp;합쳐서&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;○&amp;nbsp;장점 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;비동기&amp;nbsp;통신을&amp;nbsp;사용함으로써&amp;nbsp;데이터를&amp;nbsp;보내고&amp;nbsp;나서도&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;사용자는&amp;nbsp;다른&amp;nbsp;작업을&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;데이터만&amp;nbsp;들어가&amp;nbsp;있는&amp;nbsp;형식으로&amp;nbsp;응답을&amp;nbsp;받았기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;전통적인&amp;nbsp;웹&amp;nbsp;어플리케이션&amp;nbsp;방식에&amp;nbsp;비해&amp;nbsp;서버특&amp;nbsp;처리&amp;nbsp;속도가&amp;nbsp;빠르고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;전송&amp;nbsp;데이터&amp;nbsp;양도&amp;nbsp;훨씬&amp;nbsp;적다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;응답으로&amp;nbsp;받은&amp;nbsp;XML&amp;nbsp;문서를&amp;nbsp;XML&amp;nbsp;객체로&amp;nbsp;접근하여&amp;nbsp;스크립트로&amp;nbsp;조작하고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Xpath를&amp;nbsp;사용하여&amp;nbsp;XML&amp;nbsp;문서를&amp;nbsp;검색하거나&amp;nbsp;XSL&amp;nbsp;을&amp;nbsp;사용하여&amp;nbsp;변환을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;따라서&amp;nbsp;실행&amp;nbsp;속도가&amp;nbsp;빠르다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;불필요한&amp;nbsp;데이터&amp;nbsp;요청을&amp;nbsp;최소화&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;많은&amp;nbsp;일들이&amp;nbsp;클라이언트인&amp;nbsp;웹&amp;nbsp;브라우저에서&amp;nbsp;처리&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;단점 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;외부&amp;nbsp;검색&amp;nbsp;엔진이&amp;nbsp;웹&amp;nbsp;페이지를&amp;nbsp;검색할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;문제가&amp;nbsp;잇다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;AJAX&amp;nbsp;는&amp;nbsp;클라이언트&amp;nbsp;풀링&amp;nbsp;박싱으로&amp;nbsp;실시간&amp;nbsp;서비스를&amp;nbsp;제공할&amp;nbsp;수&amp;nbsp;없다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;AJAX&amp;nbsp;가&amp;nbsp;포함된&amp;nbsp;HTML&amp;nbsp;페이지가&amp;nbsp;속한&amp;nbsp;서버가&amp;nbsp;아닌&amp;nbsp;다른&amp;nbsp;서버로&amp;nbsp;요청을&amp;nbsp;보낼&amp;nbsp;수&amp;nbsp;없고, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;클라이언트&amp;nbsp;PC의&amp;nbsp;파일에&amp;nbsp;접근&amp;nbsp;할&amp;nbsp;수도&amp;nbsp;없다.&amp;nbsp;&amp;rarr;&amp;nbsp;실질적인&amp;nbsp;ajax&amp;nbsp;단점이&amp;nbsp;될&amp;nbsp;수는&amp;nbsp;없음! &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;○&amp;nbsp;기존&amp;nbsp;웹&amp;nbsp;사이트에서&amp;nbsp;AJAX를&amp;nbsp;사용하면&amp;nbsp;효과가&amp;nbsp;있는&amp;nbsp;경우&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;또는,&amp;nbsp;AJAX&amp;nbsp;어플리케이션으로&amp;nbsp;개발할&amp;nbsp;필요가&amp;nbsp;있는&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;웹&amp;nbsp;페이지를&amp;nbsp;전환하지&amp;nbsp;않고&amp;nbsp;현재&amp;nbsp;페이지에서&amp;nbsp;다른&amp;nbsp;동작을&amp;nbsp;수행하고자&amp;nbsp;할&amp;nbsp;대&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;불필요한&amp;nbsp;팝업을&amp;nbsp;사용하여&amp;nbsp;처리하는&amp;nbsp;작업을&amp;nbsp;다른&amp;nbsp;방법을&amp;nbsp;통해&amp;nbsp;대체하려&amp;nbsp;할&amp;nbsp;때&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;여러&amp;nbsp;번&amp;nbsp;불필요한&amp;nbsp;화면을&amp;nbsp;다시&amp;nbsp;출력할&amp;nbsp;때&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;특정한&amp;nbsp;데이터를&amp;nbsp;반복&amp;nbsp;사용하면서&amp;nbsp;다양한&amp;nbsp;작업을&amp;nbsp;수행할&amp;nbsp;때 &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;주의사항 &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;뒤로가기&amp;nbsp;버튼&amp;nbsp;사용의&amp;nbsp;어려움 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJAX&amp;nbsp;는&amp;nbsp;Javascript&amp;nbsp;를&amp;nbsp;사용하여&amp;nbsp;동작하기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;페이지&amp;nbsp;단위의&amp;nbsp;브라우저에서&amp;nbsp;사용자&amp;nbsp;경험(ux)와&amp;nbsp;다르게&amp;nbsp;작동하는&amp;nbsp;경우가&amp;nbsp;잇다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;특히,&amp;nbsp;뒤로가기&amp;nbsp;번틍의&amp;nbsp;기능&amp;nbsp;상실로&amp;nbsp;AJAX&amp;nbsp;를&amp;nbsp;유해한&amp;nbsp;기술로&amp;nbsp;매도하기도&amp;nbsp;한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(뒤로가기&amp;nbsp;버튼은&amp;nbsp;웹&amp;nbsp;서핑을&amp;nbsp;수행하는&amp;nbsp;사용자들이 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;일반&amp;nbsp;클릯&amp;nbsp;다음으로&amp;nbsp;많이&amp;nbsp;사용하는&amp;nbsp;기술이므로...) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;하지만,&amp;nbsp;이미&amp;nbsp;iframe&amp;nbsp;을&amp;nbsp;사용한&amp;nbsp;해결책이&amp;nbsp;제시된&amp;nbsp;바&amp;nbsp;있으며 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJAX&amp;nbsp;를&amp;nbsp;활용한&amp;nbsp;서비스&amp;nbsp;사용&amp;nbsp;경험이&amp;nbsp;증대되며&amp;nbsp;이런&amp;nbsp;문제는&amp;nbsp;줄어들고&amp;nbsp;잇다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;진행상황&amp;nbsp;파악의&amp;nbsp;어려움 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XMLHttpReauest&amp;nbsp;를&amp;nbsp;통해&amp;nbsp;통신하는&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;웹&amp;nbsp;페이지&amp;nbsp;로딩과는&amp;nbsp;달리&amp;nbsp;사용자에게&amp;nbsp;아무런&amp;nbsp;진행&amp;nbsp;정보가&amp;nbsp;주어지지&amp;nbsp;않는다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;그래서&amp;nbsp;아직&amp;nbsp;요청이&amp;nbsp;완료되지&amp;nbsp;않앗는데&amp;nbsp;사용자가&amp;nbsp;페이지를&amp;nbsp;떠나거나&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기다림을&amp;nbsp;참지&amp;nbsp;못한&amp;nbsp;사용자가&amp;nbsp;다른&amp;nbsp;기능을&amp;nbsp;수행함으로써&amp;nbsp;오작동을&amp;nbsp;일크림 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;우려가&amp;nbsp;발생하게&amp;nbsp;된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;사용자의&amp;nbsp;요청이&amp;nbsp;처리중에&amp;nbsp;있다는&amp;nbsp;표시를&amp;nbsp;화면에&amp;nbsp;보여주도록&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;중간&amp;nbsp;중간&amp;nbsp;&quot;loading&quot;&amp;nbsp;상태&amp;nbsp;표시를&amp;nbsp;통해&amp;nbsp;사용자의&amp;nbsp;요청이&amp;nbsp;처리중임을&amp;nbsp;알려주는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;방법을&amp;nbsp;예로&amp;nbsp;들&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이러한&amp;nbsp;상태는&amp;nbsp;XMLHttpRequest.readyState&amp;nbsp;의&amp;nbsp;상태를&amp;nbsp;통해&amp;nbsp;판단&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;또한,&amp;nbsp;이&amp;nbsp;때&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;이미지를&amp;nbsp;활용하기도&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;참고&amp;nbsp;사이트 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;http://www.w3.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.w3.org&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;http://www.w3schools.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.w3schools.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;○&amp;nbsp;AJAX&amp;nbsp;의&amp;nbsp;필요성&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;기존의&amp;nbsp;웹&amp;nbsp;브라우저는&amp;nbsp;서버로부터&amp;nbsp;페이지&amp;nbsp;단위로만&amp;nbsp;데이터를&amp;nbsp;수신하여&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있었다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;때문에&amp;nbsp;간단한&amp;nbsp;상호작용을&amp;nbsp;하려고&amp;nbsp;해도&amp;nbsp;페이지&amp;nbsp;전체를&amp;nbsp;로딩해야&amp;nbsp;했고 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이것은&amp;nbsp;대역폭&amp;nbsp;낭비를&amp;nbsp;초래하게&amp;nbsp;되었다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;하지만,&amp;nbsp;AJAX&amp;nbsp;를&amp;nbsp;사용하면&amp;nbsp;XML&amp;nbsp;파일&amp;nbsp;조각&amp;nbsp;단위로&amp;nbsp;데이터를&amp;nbsp;받아올&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;전체&amp;nbsp;페이지를&amp;nbsp;다시&amp;nbsp;로드하지&amp;nbsp;않아도&amp;nbsp;페이지&amp;nbsp;일부를&amp;nbsp;동적으로&amp;nbsp;갱신할&amp;nbsp;수&amp;nbsp;잇다. &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;AJAX&amp;nbsp;객체의&amp;nbsp;사용&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;AJAX&amp;nbsp;객체를&amp;nbsp;사용하려면&amp;nbsp;먼저&amp;nbsp;AJAX&amp;nbsp;생성&amp;nbsp;함수를&amp;nbsp;사용하여&amp;nbsp;AJAX&amp;nbsp;객체를&amp;nbsp;만들어야&amp;nbsp;한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;인터넷&amp;nbsp;익스플로러의&amp;nbsp;경우&amp;nbsp;『new&amp;nbsp;ActiveXObject(&quot;Microsoft.XMLHTTP&quot;)』를&amp;nbsp;실행하며 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;모질라&amp;nbsp;웹&amp;nbsp;브라우저의&amp;nbsp;경우&amp;nbsp;『new&amp;nbsp;XMLHttpRequest()』&amp;nbsp;를&amp;nbsp;실행하여&amp;nbsp;AJAX&amp;nbsp;객체를&amp;nbsp;생성한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;인터넷&amp;nbsp;익스플로러&amp;nbsp;7.0&amp;nbsp;이후부터는&amp;nbsp;모질라&amp;nbsp;웹&amp;nbsp;브라우저&amp;nbsp;처럼 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;『new XMLHttpRequest()』 를 통해 객체를 생성할 수 있다.&lt;/p&gt;</description>
      <category>jQuery &amp;amp; Ajax</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/24</guid>
      <comments>https://trip-to-network.tistory.com/24#entry24comment</comments>
      <pubDate>Tue, 2 Jan 2024 21:42:42 +0900</pubDate>
    </item>
    <item>
      <title>EL(Expression Lauguage)과 JSTL(JSP Standard Tag Library)</title>
      <link>https://trip-to-network.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;○ EL (Expression Lauguage : 표현 언어) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EL&amp;nbsp;은&amp;nbsp;JSTL&amp;nbsp;1.0&amp;nbsp;스펙에서&amp;nbsp;잠깐&amp;nbsp;소개&amp;nbsp;되었다가&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;2.0&amp;nbsp;부터&amp;nbsp;공식적으로&amp;nbsp;포함되었으며&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;페이지에&amp;nbsp;사용되는&amp;nbsp;자바&amp;nbsp;코드를&amp;nbsp;대신해서&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;액션&amp;nbsp;태그&amp;nbsp;엘리먼트의&amp;nbsp;속성에&amp;nbsp;값을&amp;nbsp;지정하는&amp;nbsp;역할을&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;예를&amp;nbsp;들어, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;someTags:aTag&amp;gt;&amp;nbsp;액션&amp;nbsp;태그&amp;nbsp;엘리먼트&amp;nbsp;속성은&amp;nbsp;attribute&amp;nbsp;이고&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;속성&amp;nbsp;값은&amp;nbsp;&amp;lt;%pageContent.getAttribute(&quot;aName&quot;)%&amp;gt;&amp;nbsp;인&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;someTags: aTag attribute=&amp;lt;%pageContent.getAttribute('aName')%&amp;gt;&quot;&amp;gt; 의 방식으로 표현해야 하지만 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;표현&amp;nbsp;언어&amp;nbsp;EL에서는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;표현한다 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;someTags:aTag&amp;nbsp;attribute=&quot;${aName}&quot;&amp;gt; &lt;br /&gt;&lt;br /&gt;○&amp;nbsp;JSTL&amp;nbsp;(JSP&amp;nbsp;Standard&amp;nbsp;Tag&amp;nbsp;Library)&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;에서는&amp;nbsp;XML&amp;nbsp;처럼&amp;nbsp;사용자가&amp;nbsp;태그를&amp;nbsp;정의해서&amp;nbsp;사용하는&amp;nbsp;것이&amp;nbsp;가능하며&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이와&amp;nbsp;같은&amp;nbsp;사용자&amp;nbsp;정의&amp;nbsp;태그를&amp;nbsp;커스텀&amp;nbsp;태그라고&amp;nbsp;하는데 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이들&amp;nbsp;중&amp;nbsp;자주&amp;nbsp;사용하는&amp;nbsp;것을&amp;nbsp;표준으로&amp;nbsp;만들어&amp;nbsp;놓은&amp;nbsp;것이&amp;nbsp;JSTL&amp;nbsp;이다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;Standard&amp;nbsp;Tag&amp;nbsp;Library&amp;nbsp;는&amp;nbsp;일반적인&amp;nbsp;웹&amp;nbsp;어플리케이션&amp;nbsp;기능인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;반복(iteration)과&amp;nbsp;조건,&amp;nbsp;데이터&amp;nbsp;관리,&amp;nbsp;포맷,&amp;nbsp;XML&amp;nbsp;조작,&amp;nbsp;데이터베이스&amp;nbsp;액세스를&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;구현하는&amp;nbsp;커스텀&amp;nbsp;태그&amp;nbsp;라이브러리&amp;nbsp;모음이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;의&amp;nbsp;스크립트와&amp;nbsp;HTML&amp;nbsp;코드를&amp;nbsp;혼용하여&amp;nbsp;사용하면 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;개발의 편의성을 제공하긴 하지만 코드의 복잡성을 증대시키는 문제가 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이와&amp;nbsp;같은&amp;nbsp;문제를&amp;nbsp;해결하기&amp;nbsp;위해&amp;nbsp;로직&amp;nbsp;부분의&amp;nbsp;JSP&amp;nbsp;코드를&amp;nbsp;태그로&amp;nbsp;대치시켜&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTML&amp;nbsp;과&amp;nbsp;같은&amp;nbsp;태그로&amp;nbsp;이루어진&amp;nbsp;코딩&amp;nbsp;방법이&amp;nbsp;제시&amp;nbsp;되었다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSTL&amp;nbsp;은&amp;nbsp;JSP&amp;nbsp;로직을&amp;nbsp;담당하는&amp;nbsp;부분인&amp;nbsp;if,&amp;nbsp;for,&amp;nbsp;while,&amp;nbsp;DB처리&amp;nbsp;등과&amp;nbsp;관련된 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;표준&amp;nbsp;커스텀&amp;nbsp;태그를&amp;nbsp;제공함으로&amp;nbsp;써 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;코드를&amp;nbsp;간결하고&amp;nbsp;가독성이&amp;nbsp;좋도록&amp;nbsp;하며 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;데이터&amp;nbsp;포맷,&amp;nbsp;반복&amp;nbsp;콘텐트&amp;nbsp;또는&amp;nbsp;조건&amp;nbsp;콘텐트&amp;nbsp;와&amp;nbsp;같은 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;전형적인&amp;nbsp;표현&amp;nbsp;레이어를&amp;nbsp;위한&amp;nbsp;표준&amp;nbsp;구현을&amp;nbsp;제공하기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;작성자들이&amp;nbsp;어플리케이션&amp;nbsp;개발에&amp;nbsp;집중하는데&amp;nbsp;도움이&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP(JSTL)&amp;nbsp;작성시&amp;nbsp;주의할&amp;nbsp;사항은 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;액션&amp;nbsp;태그도&amp;nbsp;그렇지만&amp;nbsp;JSTL&amp;nbsp;커스텀&amp;nbsp;태그도&amp;nbsp;XML&amp;nbsp;기반에서&amp;nbsp;작성되었기&amp;nbsp;때문에 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;모든&amp;nbsp;태그는&amp;nbsp;시작&amp;nbsp;태그와&amp;nbsp;종료태그의&amp;nbsp;쌍으로&amp;nbsp;이루어져야&amp;nbsp;한다는&amp;nbsp;것이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;기존의&amp;nbsp;컨텍스트에서&amp;nbsp;JSTL&amp;nbsp;을&amp;nbsp;사용하기&amp;nbsp;위해서는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;웹&amp;nbsp;어플리케이션의&amp;nbsp;WEB-INF/lib&amp;nbsp;디렉터리에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;필요한&amp;nbsp;라이브러리를&amp;nbsp;복사하여&amp;nbsp;붙여넣으면&amp;nbsp;된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSTL&amp;nbsp;의&amp;nbsp;주된&amp;nbsp;라이브러리&amp;nbsp;파일은&amp;nbsp;jstl.jar,&amp;nbsp;standard.jar&amp;nbsp;파일이고, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;jaxen-full.jar,&amp;nbsp;sxpath.jar,&amp;nbsp;jaxp-api.jar&amp;nbsp;파일등이&amp;nbsp;필요하다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;파일들을&amp;nbsp;적재하고&amp;nbsp;컨텍스트를&amp;nbsp;리로드&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;JSTL&amp;nbsp;을&amp;nbsp;사용하기&amp;nbsp;위한&amp;nbsp;환경&amp;nbsp;설정 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;『&lt;a href=&quot;https://jakarta.apache.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://jakarta.apache.org/&lt;/a&gt;』&amp;nbsp;에&amp;nbsp;접속 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;왼편에&amp;nbsp;구성된&amp;nbsp;메뉴&amp;nbsp;목록들&amp;nbsp;중&amp;nbsp;『Taglibs』&amp;nbsp;클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;『&lt;a href=&quot;https://tomcat.apache.org/taglibs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tomcat.apache.org/taglibs/&lt;/a&gt;』&amp;nbsp;페이지로&amp;nbsp;이동 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;왼편에&amp;nbsp;구성된&amp;nbsp;메뉴&amp;nbsp;목록들&amp;nbsp;중&amp;nbsp;『Standard』&amp;nbsp;클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;『&lt;a href=&quot;https://tomcat.apache.org/taglibs/standard/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://tomcat.apache.org/taglibs/standard/&lt;/a&gt;』&amp;nbsp;페이지로&amp;nbsp;이동&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;본문의&amp;nbsp;내용&amp;nbsp;중&amp;nbsp;『Standard&amp;nbsp;1.1&amp;nbsp;』항목의&amp;nbsp;『download』&amp;nbsp;클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;『&lt;a href=&quot;https://archive.apache.org/dist/jakarta/taglibs/standard/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://archive.apache.org/dist/jakarta/taglibs/standard/&lt;/a&gt;』&amp;nbsp;페이지로&amp;nbsp;이동 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;본문의&amp;nbsp;내용&amp;nbsp;중&amp;nbsp;『binaries』&amp;nbsp;클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;『&lt;a href=&quot;https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/&lt;/a&gt;』&amp;nbsp;페이지로&amp;nbsp;이동 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;middot;본문의&amp;nbsp;목록&amp;nbsp;중&amp;nbsp;『jakarta-taglibs-standard-1.1.2.zip&amp;nbsp;2004-10-25&amp;nbsp;20:57&amp;nbsp;&amp;nbsp;933K』&amp;nbsp;클릭 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;다운로드&amp;nbsp;대화&amp;nbsp;창&amp;nbsp;&amp;rarr;&amp;nbsp;파일&amp;nbsp;다운로드&amp;nbsp;및&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;다운로드&amp;nbsp;완료&amp;nbsp;및&amp;nbsp;압축&amp;nbsp;해제 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이후&amp;nbsp;...&amp;nbsp;(압축&amp;nbsp;해제&amp;nbsp;후)... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;『C:\Downloads\12_JSTL\jakarta-taglibs-standard-1.1.2\lib』&amp;nbsp;디렉터리&amp;nbsp;안에&amp;nbsp;있는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;『jstl.jar』&amp;nbsp;파일과&amp;nbsp;『standard.jar』&amp;nbsp;파일&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이렇게&amp;nbsp;두개의&amp;nbsp;jar&amp;nbsp;파일을 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;현재&amp;nbsp;작업할(작업중인)&amp;nbsp;프로젝트의&amp;nbsp;『WebContent&amp;nbsp;&amp;gt;&amp;nbsp;WEB-INF&amp;nbsp;&amp;gt;&amp;nbsp;lib&amp;nbsp;』&amp;nbsp;경로에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;복사하여&amp;nbsp;붙여넣기&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;다음으로.. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이클립스&amp;nbsp;환경&amp;nbsp;설정(window)&amp;nbsp;&amp;gt;&amp;nbsp;(Preferences)&amp;nbsp;클릭&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;Web&amp;nbsp;항목&amp;nbsp;&amp;gt;&amp;nbsp;JSP&amp;nbsp;Files&amp;nbsp;&amp;gt;&amp;nbsp;Editor&amp;nbsp;&amp;gt;&amp;nbsp;Templates&amp;nbsp;접근 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;리스트&amp;nbsp;항목들&amp;nbsp;중&amp;nbsp;(체크&amp;nbsp;박스는&amp;nbsp;건드리지&amp;nbsp;말고...) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new&amp;nbsp;JSP&amp;nbsp;File(html5)&amp;nbsp;항목&amp;nbsp;선택&amp;nbsp;후&amp;nbsp;수정(Edit&amp;nbsp;버튼&amp;nbsp;클릭) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이어&amp;nbsp;열리는&amp;nbsp;대화창에서&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;최초&amp;nbsp;디렉티브(page)&amp;nbsp;아래의&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;내용&amp;nbsp;추가 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;『&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;c&quot;&amp;nbsp;uri=&quot;&lt;a href=&quot;http://java.sun.com/jsp/jstl/core&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/core&lt;/a&gt;&quot;%&amp;gt;』 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;JSTL&amp;nbsp;사용&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSTL&amp;nbsp;은&amp;nbsp;태생이&amp;nbsp;커스텀&amp;nbsp;태그이기&amp;nbsp;때문에&amp;nbsp;JSP와&amp;nbsp;밀접한&amp;nbsp;관계가&amp;nbsp;잇다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application,&amp;nbsp;session,&amp;nbsp;request,&amp;nbsp;response,&amp;nbsp;pageContext&amp;nbsp;등의&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;내장&amp;nbsp;객체에&amp;nbsp;쉽게&amp;nbsp;접근하며,&amp;nbsp;그&amp;nbsp;외에도&amp;nbsp;파라미터,&amp;nbsp;쿠키,&amp;nbsp;헤더&amp;nbsp;등을&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;복잡한&amp;nbsp;코드를&amp;nbsp;사용하지&amp;nbsp;않고&amp;nbsp;쉽게&amp;nbsp;직관적으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;잇다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;또하느&amp;nbsp;기본적인&amp;nbsp;연산이나.&amp;nbsp;객체&amp;nbsp;비교등을&amp;nbsp;『.equals()』&amp;nbsp;메소드등을 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;사용하는&amp;nbsp;대신&amp;nbsp;『==』&amp;nbsp;과&amp;nbsp;같이&amp;nbsp;쉽게&amp;nbsp;구현하였으며, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;조건,&amp;nbsp;반복,&amp;nbsp;이동에&amp;nbsp;따르른&amp;nbsp;태그를&amp;nbsp;지원하기&amp;nbsp;떄문에&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;태그만으로도&amp;nbsp;반복&amp;nbsp;기능을&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSTL&amp;nbsp;의&amp;nbsp;처리&amp;nbsp;영역은&amp;nbsp;크게&amp;nbsp;4가지로&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;core, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sql&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(기본&amp;nbsp;핵심&amp;nbsp;기능)&amp;nbsp;(형식화)&amp;nbsp;(xml&amp;nbsp;처리)&amp;nbsp;(sql&amp;nbsp;처리) &lt;br /&gt;&lt;br /&gt;※&amp;nbsp;주요&amp;nbsp;분류&amp;nbsp;및&amp;nbsp;종류&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;○&amp;nbsp;Core &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기능&amp;nbsp;:&amp;nbsp;변수지원,&amp;nbsp;흐름제어,&amp;nbsp;URL&amp;nbsp;처리&amp;nbsp;등 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;접두어(prefix)&amp;nbsp;:&amp;nbsp;c &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;URL&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/jsp/jstl/core&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/core&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;○&amp;nbsp;xml &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기능&amp;nbsp;:&amp;nbsp;XML&amp;nbsp;코어,&amp;nbsp;흐름제어,&amp;nbsp;XML변환&amp;nbsp;등 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;접두어&amp;nbsp;(Prefix)&amp;nbsp;:&amp;nbsp;fmt&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;URL&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/jsp/jstl/xml&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/xml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;○&amp;nbsp;국제화(형식화) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기능&amp;nbsp;:&amp;nbsp;지역,&amp;nbsp;메세지&amp;nbsp;형식,&amp;nbsp;숫자및날짜형식&amp;nbsp;등 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;접두어&amp;nbsp;(Prefix)&amp;nbsp;:&amp;nbsp;fmt &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;URL&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/jsp/jstl/fmt&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/fmt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;○&amp;nbsp;데이터베이스&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기능:&amp;nbsp;SQL&amp;nbsp;지원 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;접두어&amp;nbsp;(Prefix)&amp;nbsp;:&amp;nbsp;sql &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;URL:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/jsp/jstl/sql&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/sql&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;○&amp;nbsp;Functions &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;기능:&amp;nbsp;컬렉션&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;접두어&amp;nbsp;(Prefix)&amp;nbsp;:&amp;nbsp;fn &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;URL&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;http://java.sun.com/jsp/jstl/functions&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sun.com/jsp/jstl/functions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;※&amp;nbsp;JSTL&amp;nbsp;에&amp;nbsp;taglib&amp;nbsp;추가 &lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;c&quot;&amp;nbsp;url=&quot;&lt;a href=&quot;http://java.sum.com/jsp/jstl/core&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sum.com/jsp/jstl/core&lt;/a&gt;&quot;&amp;nbsp;%&amp;gt; &lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;x&quot;&amp;nbsp;url=&quot;&lt;a href=&quot;http://java.sum.com/jsp/jstl/xml&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sum.com/jsp/jstl/xml&lt;/a&gt;&quot;&amp;nbsp;%&amp;gt; &lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;fmt&quot;&amp;nbsp;url=&quot;&lt;a href=&quot;http://java.sum.com/jsp/jstl/fmt&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sum.com/jsp/jstl/fmt&lt;/a&gt;&quot;&amp;nbsp;%&amp;gt; &lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;sql&quot;&amp;nbsp;url=&quot;&lt;a href=&quot;http://java.sum.com/jsp/jstl/sql&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sum.com/jsp/jstl/sql&lt;/a&gt;&quot;&amp;nbsp;%&amp;gt; &lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix=&quot;fn&quot;&amp;nbsp;url=&quot;&lt;a href=&quot;http://java.sum.com/jsp/jstl/functions&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://java.sum.com/jsp/jstl/functions&lt;/a&gt;&quot; %&amp;gt;&lt;/p&gt;</description>
      <category>EL &amp;amp; JSTL</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/23</guid>
      <comments>https://trip-to-network.tistory.com/23#entry23comment</comments>
      <pubDate>Thu, 21 Dec 2023 18:33:59 +0900</pubDate>
    </item>
    <item>
      <title>Servlet의 기초문법 2 (Test2.java / Test2.jsp / Test2_result.jsp)</title>
      <link>https://trip-to-network.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 제일 먼저 만나는 페이지는 Test2.jsp 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test2.jsp 페이지 구성은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1703149928604&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page contentType=&quot;text/html; charset=UTF-8&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;UTF-8&quot;);
	String cp = request.getContextPath();
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
&amp;lt;title&amp;gt;Test2.jsp&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;h1&amp;gt;서블릿에서 데이터 흐름&amp;lt;/h1&amp;gt;
	&amp;lt;hr /&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;
	&amp;lt;form action=&quot;&amp;lt;%=cp %&amp;gt;/test2&quot; method=&quot;post&quot;&amp;gt;
	이름&amp;lt;input type=&quot;text&quot; name=&quot;name&quot; class=&quot;txt&quot;/&amp;gt;&amp;lt;br&amp;gt;
	나이&amp;lt;input type=&quot;text&quot; name=&quot;age&quot; class=&quot;txt&quot;/&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
	
	&amp;lt;button type=&quot;submit&quot; class=&quot;btn&quot;&amp;gt;확인&amp;lt;/button&amp;gt;
	&amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 이름과 나이를 입력하고 확인 버튼을 누르면 WebApp21/test2 라는 페이지로 이동이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서 test2 라는 페이지를 호출하면 web.xml 에서 구성한 servlet 으로 이동하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구성한 servlet은 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1703150049843&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;!-- Test2 클래스 &amp;rarr; servlet 구성 --&amp;gt;
  &amp;lt;servlet&amp;gt;
  	&amp;lt;servlet-name&amp;gt;test2servlet&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;servlet-class&amp;gt;com.svt.Test2&amp;lt;/servlet-class&amp;gt;
  &amp;lt;/servlet&amp;gt;
  
  &amp;lt;servlet-mapping&amp;gt;
  	&amp;lt;servlet-name&amp;gt;test2servlet&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;url-pattern&amp;gt;/test2&amp;lt;/url-pattern&amp;gt;
  &amp;lt;/servlet-mapping&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;servlet-mapping 에 url-pattern 주소를 호출하면 servlet-name 이 test2servlet인 servlet을 찾아간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 있는 servlet으로 이동하면 class 주소가 있다. 이 클래스로 이동하여 동작을 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test2.java 로 이동하게 되면 HttpServlet 를 상속하는 Test2 클래스가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구성된 코드는 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1703150228468&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/*=======================
 	ServletSample.java
 ========================*/

package com.svt;

import java.io.IOException;

import javax.security.auth.message.callback.PrivateKeyCallback.Request;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test2 extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	// 사용자의 http 프로토콜 요청이 GET 방식일 경우 호출 되는 메소드
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGetPost(request, response);
	}	
	// 사용자의 http 프로토콜 요청이 POST 방식일 경우 호출 되는 메소드
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGetPost(request, response);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test2.jsp 파일에서 action 처리를 하면서 넘겨주는 메소드가 post 방식이냐 get방식이냐에 따라서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;doGet(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response) 메소드 혹은 doPost메소드(HttpServletRequest&amp;nbsp;request,&amp;nbsp;HttpServletResponse&amp;nbsp;response) 를 호출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Test2.jsp 파일에서 post 방식으로 넘겨줬기 때문에 doPost(HttpServletRequest request, HttpServletResponse response) 메소드를 호출한다.&amp;nbsp; 메소드 안에 doGetPost(request,&amp;nbsp;response) 를 호출하는데 이 메소드는 사용자 정의 메소드이다.&lt;/p&gt;
&lt;pre id=&quot;code_1703150541420&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;	// 사용자 정의 메소드
	protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		// GET 방식이든 POST 방식이든 
		// 어떤 방식의 요청에도 모두 처리 할 수 있는 사용자 정의 메소드
		
		// 서블릿 관련 코딩
		
		//  이전 페이지(Test2.jsp)로부터 넘어온 데이터 수신
		//  &amp;rarr; name, age
		
		// 한글 깨짐 방지
		request.setCharacterEncoding(&quot;UTF-8&quot;);
		
		// 데이터 수신
		String name = request.getParameter(&quot;name&quot;);
		String age = request.getParameter(&quot;age&quot;);
		
		// 업무 처리 
		String str = &quot;이름은 &quot; + name + &quot;, 나이는 &quot; + age + &quot;세 입니다.&quot;;

		// 처리한 업무 넘기기
		request.setAttribute(&quot;result&quot;, str); // ★★★★
		// 포워딩 하는 페이지에 값을 넘기기 위한 준비(설정)
		// 즉, str 값을 result 라는 이름으로 Test2_result.jsp 페이지로 
		// 넘기기 위한 준비
		
		// 포워딩~~!!★★★★★
		RequestDispatcher dispatcher = request.getRequestDispatcher(&quot;/Test2_result.jsp&quot;);
		dispatcher.forward(request, response);
		
	}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자에게 새로운 주소를 요청하게 하는 것이 아니라 내가 호다닥 만들어서 전달을 해주는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 사용자는 이사실을 알지 못한다....&lt;/p&gt;</description>
      <category>Servlet</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/22</guid>
      <comments>https://trip-to-network.tistory.com/22#entry22comment</comments>
      <pubDate>Thu, 21 Dec 2023 18:26:19 +0900</pubDate>
    </item>
    <item>
      <title>Servlet 의 기초 문법 1.(Test1.java)</title>
      <link>https://trip-to-network.tistory.com/21</link>
      <description>&lt;pre id=&quot;code_1703149810540&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/*=======================
 	Test1.java
 ========================*/

package com.svt;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test1 extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	// 사용자의 http 프로토콜 요청이 GET 방식일 경우 호출 되는 메소드
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGetPost(request, response);
	}	
	// 사용자의 http 프로토콜 요청이 POST 방식일 경우 호출 되는 메소드
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGetPost(request, response);
	}
	
	// 사용자 정의 메소드
	protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		// GET 방식이든 POST 방식이든 
		// 어떤 방식의 요청에도 모두 처리 할 수 있는 사용자 정의 메소드

		// ①
		/*
		response.setContentType(&quot;text/html; charset=UTF-8&quot;);
		PrintWriter pw = response.getWriter();
	
		pw.println(&quot;&amp;lt;html&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;title&amp;gt;&quot; + &quot;Test1.java&quot;+&quot;&amp;lt;/title&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;name: &quot; + &quot;홍길동&quot; + &quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;age : &quot; +19+&quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/html&amp;gt;&quot;);
		*/
		
		// ②
		/*
		String name = &quot;길현욱&quot;;
		int age = 21;
		
		response.setContentType(&quot;text/html; charset=UTF-8&quot;);
		PrintWriter pw = response.getWriter();
	
		pw.println(&quot;&amp;lt;html&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;title&amp;gt;&quot; + &quot;Test1.java&quot;+&quot;&amp;lt;/title&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;name: &quot; + name + &quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;age : &quot; + age +&quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/html&amp;gt;&quot;);
		*/
		
		//③
		
		//   『ServletConfig』
		// -- 컨테이너가 서블릿을 초기화할 때
		//    서블릿 당 하나씩 ServletConfig 을 생성하게 된다.
		ServletConfig config = getServletConfig();
		
		// 『web.xml』에 『&amp;lt;init-param&amp;gt;』	
		String name = config.getInitParameter(&quot;name&quot;);
		String age = config.getInitParameter(&quot;age&quot;);
		
		/*
		response.setContentType(&quot;text/html; charset=UTF-8&quot;);
		PrintWriter pw = response.getWriter();
	
		pw.println(&quot;&amp;lt;html&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;title&amp;gt;&quot; + &quot;Test1.java&quot;+&quot;&amp;lt;/title&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;name: &quot; + name + &quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;age : &quot; + age +&quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/html&amp;gt;&quot;);
		*/
		
		
		// ④
		
		//  『ServletContext』
		// -- ServletConfig 는 서블릿에 대한 환경을 설정하는 과정에서
		//    필요한 값들을 전달하는 형태로 주요 사용된다면....
		//    ServletContext는 서블릿에서 사용되는 컨텍스트를
		//    구성하는 형태로 활용된다.
		ServletContext context = getServletContext();
		
		String type = context.getInitParameter(&quot;type&quot;);
		
		response.setContentType(&quot;text/html; charset=UTF-8&quot;);
		PrintWriter pw = response.getWriter();
	
		pw.println(&quot;&amp;lt;html&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;title&amp;gt;&quot; + &quot;Test1.java&quot;+&quot;&amp;lt;/title&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/head&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;name: &quot; + name + &quot;&amp;lt;/h1&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;h1&amp;gt;age : &quot; + age +&quot;&amp;lt;/h1&amp;gt;&quot;);
		
		pw.println(&quot;&amp;lt;h1&amp;gt;type : &quot; + type +&quot;&amp;lt;/h1&amp;gt;&quot;);
		
		pw.println(&quot;&amp;lt;/div&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/body&amp;gt;&quot;);
		pw.println(&quot;&amp;lt;/html&amp;gt;&quot;);
		
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Servlet</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/21</guid>
      <comments>https://trip-to-network.tistory.com/21#entry21comment</comments>
      <pubDate>Thu, 21 Dec 2023 18:10:35 +0900</pubDate>
    </item>
    <item>
      <title>Servlet 의 개념</title>
      <link>https://trip-to-network.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;0. 웹 어플리케이션을 구축하기 위한 웹 프로그램을 구성하는 언어의 한 종류. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(JAVA&amp;nbsp;기반) &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;JSP&amp;nbsp;에서&amp;nbsp;정적인&amp;nbsp;부분들&amp;nbsp;담당하고,&amp;nbsp;Servlet&amp;nbsp;에서는&amp;nbsp;동적인&amp;nbsp;처리를&amp;nbsp;위한 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;부분으로&amp;nbsp;사용되어&amp;nbsp;보다&amp;nbsp;효율적인&amp;nbsp;웹&amp;nbsp;어플리케이션을&amp;nbsp;구축할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;jsp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;&amp;nbsp;단점.&amp;nbsp;MVC&amp;nbsp;패턴을&amp;nbsp;적용하기&amp;nbsp;힘들다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;servlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;&amp;nbsp;단점.&amp;nbsp;웹&amp;nbsp;페이지(view)&amp;nbsp;작성이&amp;nbsp;번거롭고&amp;nbsp;복잡하다.&amp;nbsp;(불편) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;servlet&amp;nbsp;+&amp;nbsp;jsp&amp;nbsp;&amp;nbsp;&amp;rarr;&amp;nbsp;&amp;nbsp;MVC&amp;nbsp;패턴&amp;nbsp;적용&amp;nbsp;및&amp;nbsp;웹&amp;nbsp;페이지(view)를&amp;nbsp;보다&amp;nbsp;편리하게&amp;nbsp;작성. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;단점.&amp;nbsp;구조가&amp;nbsp;복잡해지게&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;jsp&amp;nbsp;는&amp;nbsp;내부적으로&amp;nbsp;Web&amp;nbsp;Container&amp;nbsp;가&amp;nbsp;Servlet&amp;nbsp;으로&amp;nbsp;변경시켜준다. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;WEB-INF&amp;nbsp;는&amp;nbsp;환경&amp;nbsp;설정&amp;nbsp;파일이&amp;nbsp;저장되는&amp;nbsp;곳 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&amp;nbsp;외부에서는&amp;nbsp;접근&amp;nbsp;불가/&amp;nbsp;금지)&amp;nbsp;&amp;nbsp;check~! &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-lib:&amp;nbsp;라이브러리&amp;nbsp;파일을&amp;nbsp;저장(ojdbc6.jar,&amp;nbsp;jstl.jar&amp;nbsp;등) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-J2EE&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-J2SE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-classes&amp;nbsp;:&amp;nbsp;class&amp;nbsp;파일이&amp;nbsp;저장(servlet) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;classes&amp;nbsp;&amp;gt;&amp;nbsp;com&amp;nbsp;&amp;gt;&amp;nbsp;util&amp;nbsp;&amp;gt;&amp;nbsp;MyUtil.class &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;원래는&amp;nbsp;이렇게&amp;nbsp;만들어져야&amp;nbsp;하지만&amp;nbsp;이클립스가&amp;nbsp;자동으로&amp;nbsp;연결&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;실제&amp;nbsp;위치는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;C:\WebStudy\.metadata\.plugins\org.eclipse.wst.server.core &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;\tmp0\work\Catalina\localhost\WebApp20\org\apache\jsp &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*.jar&amp;nbsp;:&amp;nbsp;java &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*.war&amp;nbsp;:&amp;nbsp;web(프로젝트&amp;nbsp;아래&amp;nbsp;모든&amp;nbsp;것을&amp;nbsp;압축할&amp;nbsp;때) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*.ear&amp;nbsp;:&amp;nbsp;jar&amp;nbsp;+&amp;nbsp;war &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;web.xml&amp;nbsp;:&amp;nbsp;context&amp;nbsp;path의&amp;nbsp;환경&amp;nbsp;설정 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;『init()』과&amp;nbsp;『destroy()』&amp;nbsp;는&amp;nbsp;단&amp;nbsp;한번&amp;nbsp;호출&amp;nbsp;되며 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;service()&amp;nbsp;는&amp;nbsp;클라이언트의&amp;nbsp;요청이&amp;nbsp;있을&amp;nbsp;때&amp;nbsp;마다&amp;nbsp;호출된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;이제는&amp;nbsp;JSP&amp;nbsp;를&amp;nbsp;service()&amp;nbsp;메소드&amp;nbsp;내부에&amp;nbsp;코딩하는&amp;nbsp;것과&amp;nbsp;같다. &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;GenericServlet&amp;nbsp;이나&amp;nbsp;HttpServlet&amp;nbsp;을&amp;nbsp;활용한다. &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;URL&amp;nbsp;패턴을&amp;nbsp;지정하는&amp;nbsp;방법은&amp;nbsp;크게&amp;nbsp;3가지이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;『/a』 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;『/*』 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;『.do』 &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;web.xml&amp;nbsp;을&amp;nbsp;수정하면&amp;nbsp;서버를&amp;nbsp;꼭&amp;nbsp;재구동한&amp;nbsp;이후에&amp;nbsp;실행해야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;지금까지는&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP(입력)&amp;nbsp;&amp;rarr;&amp;nbsp;JSP(처리,&amp;nbsp;결과)&amp;nbsp;였으나 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;와&amp;nbsp;함께&amp;nbsp;Servlet&amp;nbsp;을&amp;nbsp;다루게&amp;nbsp;된&amp;nbsp;이후에는 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP(입력)&amp;nbsp;&amp;rarr;&amp;nbsp;Servlet(결과를&amp;nbsp;위한&amp;nbsp;처리)&amp;nbsp;&amp;rarr;&amp;nbsp;JSP(결과)&amp;nbsp;방식으로&amp;nbsp;구성된다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Servlet</category>
      <author>new민지();</author>
      <guid isPermaLink="true">https://trip-to-network.tistory.com/20</guid>
      <comments>https://trip-to-network.tistory.com/20#entry20comment</comments>
      <pubDate>Thu, 21 Dec 2023 18:08:11 +0900</pubDate>
    </item>
  </channel>
</rss>