<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>backyard.stars</title>
        <link>https://velog.io/</link>
        <description>개발자 지망생</description>
        <lastBuildDate>Thu, 22 Dec 2022 08:56:48 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>backyard.stars</title>
            <url>https://velog.velcdn.com/images/alice_hulotte/profile/6aff55c0-9acf-4b12-afae-d8b9ad1f48f8/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. backyard.stars. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/alice_hulotte" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Javascript 짤막수업 1]]></title>
            <link>https://velog.io/@alice_hulotte/Javascript-%EC%A7%A4%EB%A7%89%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Javascript-%EC%A7%A4%EB%A7%89%EC%88%98%EC%97%85</guid>
            <pubDate>Thu, 22 Dec 2022 08:56:48 GMT</pubDate>
            <description><![CDATA[<h2 id="1-변수에-담을수-있는-자료형">1. 변수에 담을수 있는 자료형</h2>
<ul>
<li>Boolean 타입</li>
<li>Null 타입</li>
<li>Undefined 타입</li>
<li>Number 타입</li>
<li>BigInt 타입</li>
<li>String 타입</li>
</ul>
<h2 id="2-jquery란">2. Jquery란?</h2>
<blockquote>
<p>JS에서 기능이 조금만 많아져도 코드가 복잡해지고,
DOM과 관련된 기능은 브라우저 이슈가 있어서 개발된 문법</p>
</blockquote>
<blockquote>
<p>자주 사용하는 기능을 함수(라이브러리)로 감싸서 쉽게 사용할수록 하고, DOM과 관련된 기능을 브라우저에서 상관없이 실행하도록 함</p>
</blockquote>
<h2 id="3-jquery의-기본-문법">3. Jquery의 기본 문법</h2>
<blockquote>
</blockquote>
<p>기본 문법 :
$(선택자).함수명(매개변수);</p>
<hr>
예 : $("p").css("fontSize","2em");
<br>
$을 Jquery.css ... 로 대체할수도 있다.


<h2 id="4-예제-1-jquery를-이용해서-리스트-삽입">4. 예제 1. Jquery를 이용해서 리스트 삽입</h2>
<pre><code class="language-javascript">&lt;!DOCTYPE html&gt;
&lt;html&gt;

   &lt;head&gt;
      &lt;title&gt; jQuery &lt;/title&gt;

      &lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js&quot;&gt;&lt;/script&gt;
      &lt;script&gt;

         $(document).ready(function(){

             $(&quot;#add&quot;).click(function(){
                 $(&#39;ul&#39;).append(&quot;&lt;li&gt;&quot;+$(&quot;#textinput&quot;).val() + &quot;&lt;/li&gt;&quot;);
                 console.log(&quot;List Appended&quot;);
              });
         });

      &lt;/script&gt;
   &lt;/head&gt;

   &lt;body&gt;      

           &lt;h1&gt;리스트 추가&lt;/h1&gt;
           &lt;hr&gt;
        &lt;div id=&quot;eDiv&quot;&gt; jQuery Event &lt;/div&gt;   
        &lt;input type=&quot;text&quot; id=&quot;textinput&quot;&gt;
        &lt;input type=&quot;button&quot; value=&quot;추가&quot; id=&quot;add&quot;&gt;&lt;br&gt;
        &lt;ul&gt;
            &lt;li id=&quot;list1&quot;&gt;안녕하세요&lt;/li&gt;
           &lt;/ul&gt;
   &lt;/body&gt;

&lt;/html&gt;
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 8일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-8%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-8%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Thu, 15 Dec 2022 09:13:46 GMT</pubDate>
            <description><![CDATA[<h2 id="1아래의-쿼리를-완성하시오">1.아래의 쿼리를 완성하시오.</h2>
<ul>
<li>커미션을 받는 사원과 급여가 일치하는 사원의 이름,부서번호,급여를 출력하라.<pre><code class="language-sql">select ename, deptno, sal 
from emp
where sal in (select sal from emp where comm is not null);</code></pre>
</li>
<li>Dallas에서 근무하는 사원과 직업이 일치하는 사원의 이름,부서이름, 및 급여를 출력하시오<pre><code class="language-sql">select ename, dname, sal
from emp, dept
where emp.deptno = dept.deptno and
dept.deptno = (select deptno from dept where loc=&#39;DALLAS&#39;);</code></pre>
</li>
<li>Scott과 동일한 급여 및 커미션을 받는 모든 사원의 이름, 입사일 및 급여를 출력하시오<pre><code class="language-sql">SELECT ENAME, HIREDATE, SAL
FROM EMP
WHERE SAL=(SELECT SAL
FROM EMP
WHERE ENAME=&#39;SCOTT&#39;)
AND NVL(COMM,0)=(SELECT NVL(COMM,0)
FROM EMP
WHERE ENAME=&#39;SCOTT&#39;);</code></pre>
</li>
<li>직업이 Clerk 인 사원들보다 더 많은 급여를 받는 사원의 사원번호, 이름, 급여를 출력하되,
결과를 급여가 높은 순으로 정렬하라<pre><code class="language-sql">select empno, ename, sal
from emp
where sal &gt; (select max(sal) from emp where job = &#39;CLERK&#39;)
order by sal desc;</code></pre>
</li>
<li>이름에 A가 들어가는 사원과 같은 직업을 가진 사원의 이름과 월급, 부서번호를 출력하라.<pre><code class="language-sql">select ename, sal, deptno
from emp
where job in (select job from emp where ename like &#39;%A%&#39;);
</code></pre>
</li>
</ul>
<pre><code>- New York 에서 근무하는 사원과 급여 및 커미션이 같은 사원의 사원이름과 부서명을 출력하라.
```sql
select e.ename, d.dname 
from emp e, dept d
where e.deptno = d.deptno and
e.sal in 
①(select e.sal from emp e, dept d 
where d.deptno = e.deptno and loc = &#39;NEW YORK&#39;) and
NVL(COMM, 0) in 
②(select nvl(comm, 0) from emp e, dept d 
where e.deptno = d.deptno and loc = &#39;NEW YORK&#39;);</code></pre><blockquote>
<p>해설 -&gt; emp테이블의 sal이  ①의 참조값에 속하는지 검사 후
emp테이블의 comm값을 NVL로 null값을 0으로 치환 해 준 뒤
②의 참조값에 속하는지 다시 검사해주었다.</p>
</blockquote>
<ul>
<li>Dallas에서 근무하는 사원과 직업 및 관리자가 같은 사원의 사원번호,사원이름,직업,월급,부서명,커미션을 출력하되 커미션이 책정되지 않은 사원은 NoCommission으로 표시하고,
커미션의 컬럼명은 Comm으로 나오게 출력하시오. (단, 최고월급부터 출력되게 하시오)<pre><code class="language-sql">SELECT E.EMPNO, E.ENAME, E.JOB, E.SAL, D.DNAME,
NVL((TO_CHAR(E.COMM)),&#39;NoCommision&#39;) AS &quot;COMM&quot;
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO
AND JOB IN(SELECT JOB
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO AND LOC=&#39;DALLAS&#39;)
AND MGR IN(SELECT MGR
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO AND LOC=&#39;DALLAS&#39;)</code></pre>
(도저히 모르겠어서 베낌)</li>
</ul>
<h2 id="2-아래의-용어에-대하여-설명하시오">2. 아래의 용어에 대하여 설명하시오.</h2>
<ul>
<li><p>인증</p>
<blockquote>
<p>유저가 누구인지 확인하는 절차, 로그인 하는 행위를 말한다.</p>
</blockquote>
</li>
<li><p>인가</p>
<blockquote>
<p>로그인 한 유저에 대한 권한을 확인하는 것</p>
</blockquote>
</li>
<li><p>권한</p>
<blockquote>
<p>사용자가 로그인하면 해당 사용자가 맞는지 확인하는 것</p>
</blockquote>
</li>
</ul>
<h2 id="3스프링-시큐리티에서-인증-및-권한-설정-방법을-설명하시오">3.스프링 시큐리티에서 인증 및 권한 설정 방법을 설명하시오.</h2>
<blockquote>
<p>SecurityConfig.java에서
role(역할)을 설정해준 뒤, antMatchers에서 접근할수있는 권한을 지정해준다.
<img src="https://velog.velcdn.com/images/alice_hulotte/post/f49fba3d-e10f-41ce-94b7-ba66e034e22b/image.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 7일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-7%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-7%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Wed, 14 Dec 2022 08:30:06 GMT</pubDate>
            <description><![CDATA[<h2 id="1httplocalhost8282boardtablelist">1.<a href="http://localhost:8282/board/tableList">http://localhost:8282/board/tableList</a></h2>
<p>paging처리된 list 를 출력하시오.(단 템플릿은 sb_admin 에 있던 tables.html) 
을 사용할것.</p>
<p>tables.html 소스 코드에서 id=&quot;dataTable&quot; 를 삭제할것 (템플릿 에서 제공하는 페이징 기능이 사라짐)</p>
<pre><code class="language-html">&lt;table class=&quot;table table-bordered&quot;
        id=&quot;dataTable&quot; width=&quot;100%&quot; cellspacing=&quot;0&quot;&gt;</code></pre>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/1b5174ce-99f8-4bc7-97e9-a5b61577189a/image.png" alt=""></p>
<h2 id="2-마이바티스에서-resultmap-의-용도및-사용법에-대하여-설명하시오">2. 마이바티스에서 resultmap 의 용도및 사용법에 대하여 설명하시오.</h2>
<blockquote>
<p>한 행에 여러가지의 정보가 필요할때 필요하는것이 resultMap Collection이다.
VO안에 VO가 있는 경우, 즉 하나의 객체가 여러 객체로 복잡하게 구성되어 있을 떄, 효과적으로 사용할 수 있다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/099103d2-dfb5-457b-b072-88b608759bf2/image.png" alt=""></p>
<p>↑ 사용례</p>
<h2 id="3아래의-쿼리를-처리-하시오">3.아래의 쿼리를 처리 하시오.</h2>
<ul>
<li><p>이름에 T가 들어가는 사원의 속한 부서에서 근무하는 모든 사원의
사원번호 및 이름을 출력하라.</p>
<pre><code class="language-sql">select empno, ename
from emp
where in (select ename from emp where ename like &#39;%T%&#39;);</code></pre>
</li>
<li><p>자신의 급여가 평균 급여보다 많은 모든 사원의 사원 번호, 이름, 급여를
표시하는 질의를 작성하고 급여를 기준으로 결과를 내림차순으로 정렬하라.</p>
<pre><code class="language-sql">select empno, ename, sal
from emp
where sal &gt; (select avg(sal) from emp)
order by sal desc;</code></pre>
</li>
<li><p>Smith와 동일한 부서에 속한 모든 사원의 이름 및 입사일을 출력하라.
단, Smith는 제외하고 출력하시오</p>
<pre><code class="language-sql">select ename, hiredate
from emp
where deptno in (select deptno from where ename = &#39;SMITH&#39;)
and ename != &#39;SMITH&#39;;
</code></pre>
</li>
</ul>
<p>```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 6일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-6%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-6%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Tue, 13 Dec 2022 08:42:53 GMT</pubDate>
            <description><![CDATA[<h2 id="1httplocalhost8282emplist---paging처리된-list-를-출력하시오">1.<a href="http://localhost:8282/emp/list">http://localhost:8282/emp/list</a>   paging처리된 list 를 출력하시오.</h2>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/5b752b41-e086-45ee-b362-762e3d5d84e1/image.png" alt=""></p>
<h2 id="2rownum-에-대하여-설명하시오">2.rownum 에 대하여 설명하시오.</h2>
<blockquote>
<p>select를 이용해 받아온 항목을 받아온 순서를 뜻하는 변수이다.</p>
</blockquote>
<h2 id="3아래의-쿼리를-완성하시오">3.아래의 쿼리를 완성하시오.</h2>
<ul>
<li>페이징을 위한 mvc_board 쿼리</li>
</ul>
<pre><code class="language-sql">SELECT * FROM 
(SELECT ROWNUM AS RNUM, A.* FROM 
(SELECT * FROM mvc_board order by bGroup desc, bStep asc) A 
WHERE ROWNUM &lt;= #{pageNum} * #{amount} ) 
WHERE RNUM &gt; (#{pageNum}-1) * #{amount} </code></pre>
<blockquote>
<p>설명 :</p>
</blockquote>
<ol>
<li><p>먼저 bgroup을 내림차순, bstep을 오름차순 정렬한 데이터를 A라 정의한다,</p>
</li>
<li><p>pagenum * amount 미만의 rownum을 조건으로 A의 모든것과 rownum(별명:rnum)을 받아오고</p>
</li>
<li><p>3번째 조건 pagenum * amount보다 rnum이 큰 것을 가져온다</p>
<ul>
<li>부서별로 부서이름, 부서위치, 사원 수 및 평균 급여를 출력하라.
그리고 각각의 컬럼명을 부서명,위치,사원의 수,평균급여로 표시하라.<pre><code class="language-sql">SELECT D.DNAME AS &quot;부서명&quot;, D.LOC AS &quot;부서위치&quot;,
COUNT(E.EMPNO) as &quot;사원 수&quot;, AVG(E.SAL) as &quot;평균 급여&quot;
FROM EMP E, DEPT D 
WHERE E.DEPTNO = D.DEPTNO 
GROUP BY D.DNAME, D.LOC;</code></pre>
</li>
</ul>
</li>
</ol>
<ul>
<li><p>관리자 번호 및 해당 관리자에 속한 사원들의 최저 급여를 출력하라.
단, 관리자가 없는 사원 및 최저 급여가 1000 미만인 그룹은 제외시키고 급여를 기준으로 출력 결과를 내림차순으로 정렬하라.</p>
<pre><code class="language-sql">select mgr, min(sal) from emp 
where mgr not null group by mgr
having min(sal) &gt;= 1000
order by min(sal) desc;</code></pre>
</li>
<li><p>관리자의 수를 출력하되, 관리자 번호가 중복되지 않게하라. 그리고,
컬럼명을 Number of Manager로 지정하여 출력하라.</p>
<pre><code class="language-sql">select distinct(count(mgr)) as &quot;Number of Manager&quot; from emp; </code></pre>
</li>
</ul>
<h2 id="4페이징-처리를-위한-순서를-정리하시오">4.페이징 처리를 위한 순서를 정리하시오.</h2>
<blockquote>
<p>backend 처리 -&gt; frontend 처리 -&gt; database query 정의</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 5일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-5%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-5%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Mon, 12 Dec 2022 08:05:14 GMT</pubDate>
            <description><![CDATA[<h2 id="1마이바티스를-활용하여-게시판을-완성하시오">1.마이바티스를 활용하여, 게시판을 완성하시오.</h2>
<blockquote>
<p>네</p>
</blockquote>
<h2 id="2아래의-를-설명하시오">2.아래의 @를 설명하시오.</h2>
<p>@Component</p>
<blockquote>
<p>@Component는 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 어노테이션이다.</p>
</blockquote>
<p>@Controller</p>
<blockquote>
<p>Spring에서의 MVC모델의 컨트롤러를 표시하는 어노테이션이다.</p>
</blockquote>
<p>@Service</p>
<blockquote>
<p>비지니스 로직을 수행하는 class라는것을 표시하는 어노테이션</p>
</blockquote>
<p>@Mapper</p>
<blockquote>
<p>단순히 이것이 Mapper의 역할을 한다는 선언을 해주는 어노테이션이며, Mybatis 방식에서 xml문을 java의 메소드와 연결시켜줄때 보통 사용한다.</p>
</blockquote>
<p>@SpringBootApplication </p>
<blockquote>
<p>@Configuration, @EnableAutoConfiguration, @CompentScan 3가지를 하나의 어노테이션으로 합친 것이다.</p>
</blockquote>
<p>@SpringBootTest</p>
<blockquote>
<p>@SpringBootTest를 사용하면 손쉽게 통합 테스트를 위한 환경을 준비해준다. @SpringBootTest는 모든 빈들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 실행한다.</p>
</blockquote>
<blockquote>
<p>대부분 설명하기 어려워서 구글링해서 긁어왔습니다.</p>
</blockquote>
<h2 id="3다음-sql-문을-작성하시오">3.다음 SQL 문을 작성하시오.</h2>
<ul>
<li>직업이 동일한 사람 수를 직업과 같이 출력하라.<pre><code class="language-sql">select job, count(job) from emp group by job;</code></pre>
</li>
<li>각 직업별로 급여 최저액.최고액,총액 및 평균액을 출력하라.<pre><code class="language-sql">select job, max(sal), min(sal), sum(sal), avg(sal) from emp group by job;</code></pre>
</li>
<li>Smith보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.<pre><code class="language-sql">select ename, hiredate from emp where hiredate &gt; (select hiredate from emp where ename=&#39;SMITH&#39;);</code></pre>
</li>
<li>모든 사원의 이름,직업,부서이름,급여 및 등급을 출력하라.<pre><code class="language-sql">select e.ename, e.job, d.dname, e.sal, s.grade from emp e, dept d, salgrade s
where e.deptno=d.deptno and e.sal between s.losal and s.hisal;</code></pre>
</li>
<li>Dallas에서 근무하는 모든 사원의 이름, 직업, 부서번호 및 부서이름을 출력하라.<pre><code class="language-sql">select ename, job, emp.deptno from emp, dept where dept.loc = &#39;DALLAS&#39; and emp.deptno = dept.deptno;</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 4일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-4%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-4%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Mon, 12 Dec 2022 06:36:03 GMT</pubDate>
            <description><![CDATA[<h2 id="1-마이바티스란">1. 마이바티스란?</h2>
<blockquote>
</blockquote>
<p>객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있습니다.</p>
<h2 id="2-아래의-순서대로프로젝트를-새로-생성후-mvc_board-리스트를-뽑아-내세요">2. 아래의 순서대로,프로젝트를 새로 생성후 mvc_board 리스트를 뽑아 내세요.</h2>
<p>1) pom.xml -&gt; 마이바티스 라이브러리 다운로드
2) VO 구현<br>3) Mapper interface 선언
4) xml 로 해당 mapper interface 구현
5) 테스트코드로 테스트</p>
<p>BoardVO.java</p>
<pre><code class="language-java">package edu.global.ex.vo;

import java.sql.Timestamp;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
//디버깅할때 파라미터값 순서대로 뿌려주는 역할을 한다.
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor

public class BoardVO {

    private int bid;
    private String bname;
    private String btitle;
    private String bcontent;
    private Timestamp bdate;
    private int bhit;
    private int bgroup;
    private int bstep;
    private int bindent;

}

</code></pre>
<p>BoardMapper.java</p>
<pre><code class="language-java">
import org.apache.ibatis.annotations.Mapper;
import edu.global.ex.vo.BoardVO;
import java.util.List;

@Mapper
public interface BoardMapper {
    public List&lt;BoardVO&gt; getList(); //목록보기
}
</code></pre>
<p>BoardMapper.xml</p>
<pre><code class="language-xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;

&lt;!DOCTYPE mapper PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
        &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&gt;
    &lt;mapper namespace=&quot;edu.global.ex.mapper.BoardMapper&quot;&gt;
    &lt;select id=&quot;getList&quot; resultType=&quot;edu.global.ex.vo.BoardVO&quot;&gt;
            &lt;![CDATA[
                select * from mvc_board order by bgroup desc, bstep asc
            ]]&gt;
    &lt;/select&gt;
&lt;/mapper&gt;
</code></pre>
<p>BoardMapperTest.java</p>
<pre><code class="language-java">
package edu.global.ex.mapper;

import static org.junit.jupiter.api.Assertions.*;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import edu.global.ex.vo.BoardVO;

@SpringBootTest
class BoardMapperTest {

    @Autowired

    //주입
    private BoardMapper boardMapper;

    @Test
    void testList() {

        System.out.println(boardMapper);

        List&lt;BoardVO&gt; boards = boardMapper.getList();

        for(BoardVO board : boards) {
            System.out.println(board);
        }
    }

    }



</code></pre>
<h2 id="3아래를-sql로-작성하시오">3.아래를 sql로 작성하시오.</h2>
<ul>
<li><p>모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를
표시하는 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.</p>
<pre><code class="language-sql">select substr((ename), 1,1) || substr(lower(ename),2 ,5), length(ename) as 길이 from emp ;</code></pre>
</li>
<li><p>사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은
사원의 커미션은 &#39;no commission&#39;으로 출력하라.</p>
<pre><code class="language-sql">select ename, NVL(to_char(comm), &#39;no commission&#39;) as cum from emp;</code></pre>
</li>
<li><p>모든 사원의 이름,부서번호,부서이름을 표시하는 질의를 작성하라.(DECODE)</p>
<pre><code class="language-sql">select ename, deptno, decode(deptno, 10, &#39;accounting&#39;, 20, &#39;research&#39;, 30, &#39;sales&#39;, 40, &#39;operations&#39;) from emp order by deptno;</code></pre>
</li>
<li><p>30번 부서에 속한 사원의 이름과 부서번호 그리고 부서이름을 출력하라.</p>
<pre><code class="language-sql">SELECT EMP.ENAME, EMP.DEPTNO, DEPT.DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.DEPTNO = 30;</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 3일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-3%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-3%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Thu, 08 Dec 2022 08:23:46 GMT</pubDate>
            <description><![CDATA[<h2 id="1-아래를-프로그래밍-하시오">1. 아래를 프로그래밍 하시오</h2>
<p><a href="http://localhost:8282/board/grade/%7Bkor%7D/%7Beng%7D/%7Bmath%7D">http://localhost:8282/board/grade/{kor}/{eng}/{math}</a></p>
<p>grade.jsp 에 평균과 총점이 나오도록 하시오.
단) lombok 이 쓰고, command 객체로 처리 할것.</p>
<p>Grade.java</p>
<pre><code class="language-java">import lombok.Data;

@Data
public class Grade {

    private int kor;
    private int eng;
    private int math;

    public Grade() {}

    public double getAvg() {
        return (kor+eng+math)/3.0;
    }
    public int getTotal() {
        return (kor+eng+math);
    }
}</code></pre>
<p>Controller.java</p>
<pre><code class="language-java">
@Controller(&quot;/board&quot;)
public class Controller{

    @GetMapping(&quot;/grade&quot;)
    public String testGrade(Grade grade){
        return &quot;grade&quot;;
    }

}</code></pre>
<p>grade.jsp</p>
<pre><code class="language-html">&lt;body&gt;
  국어점수 : ${grade.kor}&lt;br&gt;
  영어점수 : ${grade.eng}&lt;br&gt;
  수학점수 : ${grade.math}&lt;br&gt;
  &lt;hr&gt;
  성적 평균 : ${grade.total}&lt;br&gt;
  성적 총합 : ${grade.avg}&lt;br&gt;
&lt;/body&gt;</code></pre>
<h2 id="2foreign-key-와-primary-key-에-대하여-설명하시오">2.FOREIGN KEY 와 PRIMARY KEY 에 대하여 설명하시오.</h2>
<ul>
<li><h3 id="primary-key--기본키-">Primary key ( 기본키 )</h3>
<blockquote>
<ul>
<li>Null값이 될 수 없다.</li>
</ul>
</blockquote>
<ul>
<li>동일한 값이 저장될 수 없다.</li>
</ul>
</li>
<li><h3 id="foreign-key--외래-키-">Foreign key ( 외래 키 )</h3>
<blockquote>
<ul>
<li>두 릴레이션 간의 공통 키이나. 한 릴레이션쪽에서의 기본키가 다른 릴레이션에도 있는 속성을 외래 키라 한다.</li>
</ul>
</blockquote>
<h2 id="3아래-애너테이션에-대하여-설명하시오">3.아래 @애너테이션에 대하여 설명하시오.</h2>
</li>
<li><p>@Controller</p>
<blockquote>
<p>MVC모델의 컨트롤러 역할을 한다고 선언해주는 어노테이션</p>
</blockquote>
</li>
<li><p>@RequestMapping</p>
<blockquote>
<p>request된 요청값과 어노테이션 내에 설정해준 value값이 같을때 해당 클래스나 메소드가 실행되게 해주는 어노테이션
@RequestMapping(&quot;/a&quot;) 라면
localhost:&quot;포트번호&quot;/a로 들어오는 것을 실행해주는 역할이다.</p>
</blockquote>
</li>
<li><p>@GetMapping</p>
<blockquote>
<p>HTTP GET 요청을 처리하는 메서드를 맵핑(@RequestMapping) 하는 어노테이션</p>
</blockquote>
</li>
<li><p>@PathVariable</p>
<blockquote>
<p>URI에 들어간 변수값을 파라미터로 사용하는 어노테이션
.../{a}/{b}에
/1/2/등으로 넘겨줄 수 있다.</p>
</blockquote>
</li>
<li><p>@RequestParam</p>
<blockquote>
<p>URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있는 어노테이션이다.</p>
</blockquote>
</li>
</ul>
<h2 id="4-command-객체에-대하여-설명하시오">4. Command 객체에 대하여 설명하시오.</h2>
<blockquote>
<p>객체 class를 만들고 해당 객체에 타입과 변수명을 일치시켜 
Controller에서 그 객체를 사용하고 Model에 담아 뿌리게하는 객체이다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 2일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-2%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-2%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Wed, 07 Dec 2022 07:49:19 GMT</pubDate>
            <description><![CDATA[<h2 id="1-아래의-쿼리문을-완성하시오">1. 아래의 쿼리문을 완성하시오.</h2>
<ul>
<li>1981년 2월 20일 ~ 1981년 5월 1일에 입사한 사원의 이름,직업 및 입사일을 출력하라. 또한 입사일을 기준으로 해서 오름차순으로 정렬하라.<pre><code class="language-sql">select ename, job, hiredate from emp where hiredate 
between &#39;1981-02-20&#39; and &#39;1981-05-01&#39; asc hiredate; </code></pre>
</li>
<li>급여가 1500이상 ~ 2850이하의 범위에 속하지 않는 모든 사원의 이름 및 급여를 출력하라.<pre><code class="language-sql">select ename, sal from emp where (sal &lt; 1500) or (sal &gt; 2850);
select ename, sal from emp where not sal &gt; 1500 or sal &lt; 2850;</code></pre>
</li>
<li>사원번호가 7566인 사원의 이름 및 부서번호를 표시하는 출력하라.<pre><code class="language-sql">select ename, deptno from emp where empno=7566;</code></pre>
</li>
<li>급여가 2850 이상인 사원의 이름 및 급여를 표시하는 출력하라.<pre><code class="language-sql">select ename, sal from emp where sal&gt;=2850; </code></pre>
</li>
<li>EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게 출력하라.<pre><code class="language-sql">select distinct job from emp; </code></pre>
<h2 id="2-commit-과-rollback-에-대하여-설명하시오">2. commit 과 rollback 에 대하여 설명하시오.</h2>
<blockquote>
<p>commit -&gt; 변경사항을 저장하는 것</p>
</blockquote>
</li>
</ul>
<blockquote>
<p>rollback -&gt; commit 되기 전에 반영되지 않은 데이터들을 쿼리문 이전으로 되돌리는 것</p>
</blockquote>
<h2 id="3-스프링-legacy-와-스프링-부트의-차이는">3. 스프링 legacy 와 스프링 부트의 차이는?</h2>
<blockquote>
<p>Spring legacy -&gt; 설정하려면 일일히 .xml파일을 수정해주어야 함.</p>
</blockquote>
<blockquote>
<p>Sping Boot -&gt; 많은 사람들이 사용하던 설정 내용을 Pre-set으로 구성해서 제공되므로 손쉽게 의존성 기능들을 import해와서 사용할 수 있음.</p>
</blockquote>
<h2 id="4-스프링-부트로-hello-world-를-출력하시오">4. 스프링 부트로 hello world 를 출력하시오.</h2>
<pre><code class="language-java">@RestController
public class HelloOut {

    @GetMapping(&quot;/&quot;)
    public String hello() {
        return &quot;Hello World!&quot;;
    }
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 1일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/Spring-1%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/Spring-1%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Tue, 06 Dec 2022 16:21:44 GMT</pubDate>
            <description><![CDATA[<h2 id="1-아래의-쿼리문을-완성하시오">1. 아래의 쿼리문을 완성하시오.</h2>
<ul>
<li><p>30번 소속 사원들 중에서 급여를 가장 많이 받는 사람보다 더 많은 급여를 받는 사람의 이름과 급여를 출력하는 쿼리문</p>
<pre><code class="language-sql">select ename,sal from emp where sal &gt; (select max(sal) from emp where deptno = 30);</code></pre>
</li>
<li><p>연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력하는 쿼리문</p>
<pre><code class="language-sql">select ename from emp where deptno in (select deptno from emp where sal&gt;= 3000);</code></pre>
</li>
<li><p>사원들의 평균 급여보다 더 많은 급여를 받는 사원을 검색하는 쿼리문</p>
<pre><code class="language-sql">select ename, sal from emp where sal &gt;=(select avg(sal) from emp);</code></pre>
<h2 id="2-아래의-용어를-설명하시오">2. 아래의 용어를 설명하시오.</h2>
</li>
<li><p>DI</p>
<blockquote>
<p>DI(Dependency Injection) / 의존성 주입
의존적인 객체를 직접 생성하거나 제어하는 것이 아니라, 특정 객체에 필요한 객체를 외부에서 결정해서 연결하는 것을 뜻함</p>
</blockquote>
</li>
<li><p>Ioc 컨테이너</p>
<blockquote>
<p>Inversion of Control
객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 컨테이너, 
스프링 컨테이너라고도 한다.</p>
</blockquote>
</li>
<li><p>IoC / 제어 반전(역전)</p>
<blockquote>
<p>Inversion of Control
라이브러리는 내 코드가 라이브러리를 이용한다. 즉, 제어권이 내 코드에 있다. 반면 프레임 워크는 프레임 워크가 나의 코드를 실행한다. 즉, 제어권은 프레임워크에게 있다. 이를 보고 제어의 역전이라고 표현한다.</p>
</blockquote>
</li>
</ul>
<h2 id="3-메이븐이란">3. 메이븐이란?</h2>
<blockquote>
<p> Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 주는 역할을 한다.</p>
</blockquote>
<h2 id="4-스프링의-장점-및-단점에-대하여-설명하시오">4. 스프링의 장점 및 단점에 대하여 설명하시오.</h2>
<ul>
<li><p>장점</p>
<blockquote>
<p>개발자의 수준과 실력에 상관없이 일정 수준의 품질을 기대할 수 있다.
정형화되어있어 유지보수에 용이하다.</p>
</blockquote>
</li>
<li><p>단점</p>
<blockquote>
<p>초기 학습이 어렵고, 기능 자체가 너무 많아 무겁다</p>
</blockquote>
</li>
</ul>
<h2 id="5-스프링-프레임워크를-만든-사람은">5. 스프링 프레임워크를 만든 사람은?</h2>
<blockquote>
<p>로드 존슨이 개발해 2003년 6월 첫 출시했다</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 9일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-9%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-9%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Mon, 05 Dec 2022 07:43:19 GMT</pubDate>
            <description><![CDATA[<h2 id="1-아래의-쿼리문을-완성하시오">1. 아래의 쿼리문을 완성하시오.</h2>
<ul>
<li>각 사원의 급여가 몇 등급인지 살펴보는 쿼리문<pre><code class="language-sql">select * from emp, salgrade where sal between losal and hisal;</code></pre>
</li>
<li>이름이 KING인 사람의 부서명을 출력해 보는 쿼리문<pre><code class="language-sql">select dname from emp, dept where emp.deptno = dept.deptno and ename=&#39;KING&#39;;</code></pre>
</li>
<li>각 사원의 매니저의 이름을 같이 출력하시오.<pre><code class="language-sql">select e.ename as 사원, m.ename as 매니저명 from emp e, emp m where e.mgr=m.empno;</code></pre>
<h2 id="2cartesian-product-이란">2.CARTESIAN PRODUCT 이란?</h2>
</li>
</ul>
<blockquote>
<p>cartesian product(카티션 곱)이란 두 테이블을 곱해서 두 테이블을 합쳤을때의 모든 경우의 수를 말한다.</p>
</blockquote>
<h2 id="3jsp_mvc_board-수정modifydo를-프로그래밍-하시오">3.jsp_mvc_board 수정(modify.do)를 프로그래밍 하시오.</h2>
<blockquote>
<p>추후 예정</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 수업 8일차]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%88%98%EC%97%85-8%EC%9D%BC%EC%B0%A8</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%88%98%EC%97%85-8%EC%9D%BC%EC%B0%A8</guid>
            <pubDate>Fri, 02 Dec 2022 08:43:42 GMT</pubDate>
            <description><![CDATA[<h2 id="1group-by-에-대하여-설명하시오">1.group by 에 대하여 설명하시오.</h2>
<blockquote>
<p>group by는 조건절중 하나이며, group by절은 반드시 group 함수와 같이 쓰이며, 중복되지 않은 데이터를 보여주고자 할때 사용한다.</p>
</blockquote>
<h2 id="2아래의-sql-문을-작성하시오">2.아래의 sql 문을 작성하시오.</h2>
<ul>
<li><p>소속 부서별 평균 급여를 구하는 쿼리문</p>
<pre><code class="language-sql">select deptno, avg(sal) from emp group by deptno;</code></pre>
</li>
<li><p>소속 부서별 급여 총액과 평균 급여를 구하는 쿼리문</p>
<pre><code class="language-sql">select deptno, sum(sal), avg(sal) from emp group by deptno;</code></pre>
</li>
<li><p>부서별 사원의 수와 커미션을 받는 사원의 수를 계산하는 쿼리문</p>
<pre><code class="language-sql">select deptno, count(*), count(comm) from emp group by deptno;</code></pre>
</li>
<li><p>그룹 지어진 부서별 평균 급여가 2000 이상인 부서의 번호와 부서별 평균 급여를 출력하는 쿼리문</p>
<pre><code class="language-sql">select deptno, avg(sal) from emp group by deptno having avg(sal) &gt;= 2000; </code></pre>
</li>
<li><p>부서내 급여의 최대값과 최소값을 구하되, 최대 급여가 2900 이상인 부서만 출력하는 쿼리문</p>
<pre><code class="language-sql">select deptno, max(sal), min(sal) from emp group by deptno having max(sal) &gt;= 2900;</code></pre>
</li>
<li><p>사원들의 총 급여를 구하는 쿼리문</p>
<pre><code class="language-sql">select sum(sal) from emp;</code></pre>
</li>
<li><p>커미션(COMM) 총액을 구하는 쿼리문</p>
<pre><code class="language-sql">select sum(comm) from emp;</code></pre>
</li>
<li><p>급여 평균을 구하는 쿼리문</p>
<pre><code class="language-sql">select avg(sal) from emp;</code></pre>
</li>
<li><p>가장 높은 급여와 가장 낮은 급여를 구하는 쿼리문</p>
<pre><code class="language-sql">max(sal);
min(sal);</code></pre>
</li>
<li><p>사원 테이블의 사원들 중에서 커미션(COMM)을 받은 사원의 수</p>
<pre><code class="language-sql">select count(comm) from emp;</code></pre>
</li>
<li><p>사원 들의 job의 종류를 뽑아내시오.</p>
<pre><code class="language-sql">select distinct job from emp;</code></pre>
</li>
<li><p>담당 업무의 개수를 구하시오.</p>
<pre><code class="language-sql">select count(distinct job) from emp;</code></pre>
</li>
</ul>
<h2 id="3-board-게시판-db를-만들고-listjsp-를-model-2-방식으로-프로그래밍-하시오">3. board 게시판 DB를 만들고, list.jsp 를 model 2 방식으로 프로그래밍 하시오.</h2>
<blockquote>
<p>DAO, DTO는 기존 있던 파일들 사용, 쿼리문만 변경</p>
</blockquote>
<p>BCommand.java</p>
<pre><code class="language-java">import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface BCommand {
    //인터페이스이므로 메소드선언만 가능하다. 구현은 자손이 한다.
    void execute(HttpServletRequest request, HttpServletResponse response);
}
</code></pre>
<p>BListCommand.java</p>
<pre><code class="language-java">import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BListCommand implements BCommand {

    @Override
    public void execute(HttpServletRequest request, HttpServletResponse response) {
        BDao dao = new BDao();

        // 테이블에 있는 모든 데이터를 끌고 온다는 뜻
        List&lt;BDto&gt; dtos = dao.list();

        //forwarding될때까지 메모리에 살아있음을 반드시 기억해야한다.
        request.setAttribute(&quot;list&quot;, dtos);
    }

}
</code></pre>
<p>BController.java (서블릿 파일)</p>
<pre><code class="language-java">package edu.global.ex.dto;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 모든 url 들은 webServlet에서 받아내겠다는 뜻
@WebServlet(&quot;*.do&quot;)
public class BController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public BController() {
        super();

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //doGet메소드를 탈 시에 console에 기록하기 위해 넣었다.(디버깅위해)
        System.out.println(&quot;doGet() ..&quot;);
        actionDo(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //doPost메소드를 탈 시에 console에 기록하기 위해 넣었다.(디버깅위해)
        System.out.println(&quot;doPost() ..&quot;);
        actionDo(request,response);
    }

    private void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException {
        System.out.println(&quot;actionDo() ..&quot;);

        request.setCharacterEncoding(&quot;UTF-8&quot;);

        String viewPage = null;
        BCommand command = null;

        //위의 세 줄은 http://localhost:8282/jsp_mvc_board/list.do 에서 list.do를 꺼내기 위한 코드들.
        String uri = request.getRequestURI();
        String conPath = request.getContextPath();
        String com = uri.substring(conPath.length());

        System.out.println(&quot;경로 확인:&quot; + uri + &quot;:&quot; + conPath + &quot;:&quot; + com );

        if(com.equals(&quot;/List.do&quot;)) {
            command = new BListCommand();
            command.execute(request, response);
            viewPage =&quot;List.jsp&quot;;
        }


        /*
            클라이언트에게 list 는 list.jsp로 forwarding을 시키겠다는 의미이다.
            forwarding은 BListCommand클래스에서 메모리에 올린 request, response 객체 정보를 
            list.jsp에서 사용가능하다는 의미다. forwarding될때까지 정보가 살아있기 때문이다. 
            고로 list.jsp에서 forEach문을 사용하여 데이터를 꺼낼 수 있다.
       */

        RequestDispatcher dispatcher = request.getRequestDispatcher(viewPage);
        dispatcher.forward(request, response);

    }

}
</code></pre>
<p>list.jsp</p>
<pre><code class="language-jsp">    &lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table width=&quot;500&quot; border=&quot;1&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;번호&lt;/td&gt;
        &lt;td&gt;이름&lt;/td&gt;
        &lt;td&gt;제목&lt;/td&gt;
        &lt;td&gt;날짜&lt;/td&gt;
        &lt;td&gt;히트&lt;/td&gt;
    &lt;/tr&gt;
&lt;!-- 

        --이때 List는 BListCommand에서 메모리에 올린 list를 뜻함.
        포워딩시 살아있으므로 forEach문을 이용해 데이터를 꺼낼 수 있다.

 --&gt;
 &lt;c:forEach var=&quot;board&quot; items=&quot;${list}&quot;&gt;
     &lt;tr&gt;
         &lt;td&gt;${board.bid}&lt;/td&gt;
         &lt;td&gt;${board.bname}&lt;/td&gt;
         &lt;td&gt;${board.btitle}&lt;/td&gt;
         &lt;td&gt;${board.bdate}&lt;/td&gt;
         &lt;td&gt;${board.bhit}&lt;/td&gt;
     &lt;/tr&gt;
 &lt;/c:forEach&gt;

&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<h2 id="4-게시판-설계를-위한-설계도를-그리시오">4. 게시판 설계를 위한 설계도를 그리시오.</h2>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/1b5236e1-0677-48b5-8fd2-8a95f1050dfd/image.png" alt=""></p>
<h2 id="5-modelview-controller-에-대하여-설명하시오">5. model,view, controller 에 대하여 설명하시오.</h2>
<ul>
<li><p>Model : 애플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻하며, 또한 이러한 DATA, 정보들의 가공을 책임지는 컴포넌트이다.</p>
</li>
<li><p>Controller : 데이터와 사용자 인터페이스 요소들을 잇는 다리역할을 하며 사용자가 데이터에 접근하고 수정하는 것에 대한 &quot;이벤트&quot;들을 처리하는 부분을 뜻한다.</p>
</li>
<li><p>View : 데이터 및 객체의 입력, 그리고 보여주는 출력을 담당합니다. 데이터를 기반으로 사용자들이 볼 수 있는 화면을 뜻함</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 7일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-7%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-7%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Thu, 01 Dec 2022 09:15:06 GMT</pubDate>
            <description><![CDATA[<h2 id="1아래의-쿼리를-작성하시오">1.아래의 쿼리를 작성하시오.</h2>
<ul>
<li><p>현재 날짜를 문자형으로 변환하여 출력하는 쿼리문</p>
<pre><code class="language-sql">select to_char(sysdate, &#39;YYYY-MM-DD&#39;) from dual;</code></pre>
</li>
<li><p>사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문</p>
<pre><code class="language-sql">select hiredate, to_char(hiredate, &#39;YYYY-MM-DD DAY&#39;) from emp; </code></pre>
</li>
<li><p>현재 날짜와 시간을 출력하는 쿼리문</p>
<pre><code class="language-sql">select to_char(sysdate, &#39;YYYY-MM-DD HH24:MI:SS&#39;) from dual;</code></pre>
</li>
<li><p>DECODE를 이용해 담당업무(JOB) 컬럼을 추가</p>
<pre><code class="language-sql">select deptno, decode(deptno, 10, &#39;A&#39;,
20, &#39;B&#39;, 30, &#39;C&#39;, &#39;Default&#39;) as JOB from emp;</code></pre>
<blockquote>
<p>양식 : decode(분류할 컬럼, 항목A, &#39;값A&#39;, 항목B, &#39;값B&#39; .... A,B에 포함되지않는다면 값 B 뒤에 default값으로 &#39;값C&#39;를 설정해주면 된다.</p>
</blockquote>
</li>
<li><p>각 지역별 통화 기호를 앞에 붙이고 천 단위마다 콤마를 붙여서 출력하는 쿼리문</p>
<pre><code class="language-sql">select ename, sal, to_char(sal, &#39;L999,999&#39;) from emp;</code></pre>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/cb05957f-3aed-4e56-944c-6ed1e38aa704/image.png" alt=""></p>
<ul>
<li>1981년 2월 20일에 입사한 사원을 검색하는 쿼리문<pre><code class="language-sql">select * from emp where hiredate=&#39;1981-02-20&#39;;</code></pre>
</li>
<li>올해 며칠이 지났는지 현재 날짜에서 2016/01/01을 뺀 결과를 출력하는 쿼리문<pre><code class="language-sql">select Floor(sysdate-to_date(20160101, &#39;YYYYMMDD&#39;) from dual;</code></pre>
</li>
<li>각사원의 연봉을 계산을 하는 쿼리문<pre><code class="language-sql">select ename, (sal*12 + nvl(comm, 0)) as 연봉 from emp;</code></pre>
</li>
<li>&#39;20,000&#39;과 &#39;10,000&#39;의 차이를 알아보기 위해서 빼기(-)연산을 구하는 쿼리문<pre><code class="language-sql">select to_number(&#39;20,000&#39;, &#39;99,999&#39;)-to_number(&#39;10,000&#39;, &#39;99,999) from dual;</code></pre>
<h2 id="2-scope에-대하여-설명하시오">2. scope에 대하여 설명하시오.</h2>
</li>
</ul>
<blockquote>
<h3 id="scope의-종류엔-4가지가-있으며">scope의 종류엔 4가지가 있으며,</h3>
<p>Application, request, session, page가 이에 속한다.
각각의 데이터를 담고 있는 기한은</p>
</blockquote>
<ul>
<li>page : 페이지 내에서</li>
<li>request : forwarding 된 경우에만</li>
<li>session : 세션의 시간이 끝날때 까지</li>
<li>application : 하고있는동안 쭉 유지
이다.</li>
</ul>
<h2 id="3-아래를-프로그래밍-하시오">3. 아래를 프로그래밍 하시오.</h2>
<p>emp.jsp  Dao Dto 객체를 생성해서, el, jstl을 활용하되
empdto 객체를 session 영역에 저장한후, 해당 emp list 를 뿌리시오.</p>
<blockquote>
<p>EMPdao와 EMPdto는 어제자 글과 같은것을 import해서 사용했기 때문에 별도로 다시 적지 않겠습니다.</p>
</blockquote>
<pre><code class="language-jsp">&lt;body&gt;
&lt;%
    EMPdao empdao = new EMPdao();
    List&lt;EMPdto&gt; emps = empdao.empList();

    session.getAttribute(&quot;emps&quot;, emps);
%&gt;
&lt;c:foreach var=&quot;emp&quot; items=${emps}&gt;
    사번 : ${emp.empno}
    이름 : ${emp.ename}
    직종 : ${emp.job}
    매니저 : ${emp.mgr}
    고용일 : ${emp.hiredate}
    월급 : ${emp.sal}
    커미션 : ${emp.comm}
    부서번호 : ${emp.deptno}
&lt;c:foreach/&gt;
&lt;/body&gt;
</code></pre>
<h2 id="4-jstl-이란">4. JSTL 이란?</h2>
<blockquote>
<p>JSTL이란 JSP standard Tag Library의 약어로써,
썬 마이크로시스템에서
자주 사용되는 태그들을 간결하게 사용할수 있기 위해서 미리 정의된 라이브러리를 말하며
종류에는 c, fmt등이 있다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 6일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-6%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-6%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Wed, 30 Nov 2022 09:12:23 GMT</pubDate>
            <description><![CDATA[<h2 id="1-emp-테이블을-dao-dto-클래스로-만들어-뿌리시오">1. emp 테이블을 DAO, DTO 클래스로 만들어 뿌리시오.</h2>
<ul>
<li><p>dept 테이블을 DAO, DTO 클래스로 만들어 뿌리시오.</p>
<p>deptDAO.java</p>
</li>
</ul>
<pre><code class="language-java">import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class P52dao {
    private DataSource dataSource;

    public P52dao() {

        try {
            Context context = new InitialContext();
            dataSource = (DataSource) context.lookup(&quot;java:comp/env/jdbc/oracle&quot;);
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }

    public List&lt;P52dto&gt; deptList() {

        ArrayList&lt;P52dto&gt; depts = new ArrayList&lt;&gt;();

        Connection c1 = null;
        PreparedStatement p1 = null;
        ResultSet s1 = null;

        try {
            String query = &quot;select * from dept&quot;;
            c1 = dataSource.getConnection();
            p1 = c1.prepareStatement(query);
            s1 = p1.executeQuery();

            while(s1.next()) {
                int deptno = s1.getInt(&quot;deptno&quot;);
                String dname = s1.getString(&quot;dname&quot;); 
                String loc = s1.getString(&quot;loc&quot;);

                P52dto dto = new P52dto(deptno, dname, loc);
                depts.add(dto);
            }

        }catch(Exception e){

        }finally {
            try {
                if(s1 != null)
                    s1.close();
                if(p1 != null)
                    p1.close();
                if(c1 != null)
                    c1.close();

            }catch(Exception e) {
                e.printStackTrace();
            }
        }

        return depts;
    }
}
</code></pre>
<p>deptDTO.java</p>
<pre><code class="language-java">public class P52dto {
    private int deptno;
    private String dname;
    private String loc;

    public P52dto() {

    }

    public P52dto(int deptno, String dname, String loc) {
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }

    public int getDeptno() {
        return deptno;
    }
    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }


}

</code></pre>
<ul>
<li><p>emp 테이블의 총 월급합(모든 사원의 월급합)을 뿌리시오.</p>
<p>emp.jsp</p>
</li>
</ul>
<pre><code class="language-java">EmpDao empDao = new EmpDao();
List&lt;EmpDto&gt; emps = empDao.empList();

int totalSum = 0;

for(int i=0; i&lt;emps.size(); i++){
    totalSum += emps.get(i).getSal();
}

out.print(&quot;총 급여의 합 : &quot; + totalSum);</code></pre>
<h2 id="2-아래의-sql-구문을-작성하시오">2. 아래의 sql 구문을 작성하시오.</h2>
<p>-- 사원들의 입사일에서 입사 년도와 입사 달을 출력하는 쿼리문</p>
<pre><code>SELECT ENAME, substr(hiredate, 1, 2)년도, substr(hiredate, 4, 2)달 from emp;</code></pre><p>-- 각 직원들이 근무한 개월 수를 수하는 쿼리문</p>
<pre><code>select ename, months_between(sysdate, hiredate) 근무개월수 from emp;</code></pre><p>-- 입사한 달의 마지막 날을 구하는 쿼리문</p>
<pre><code>select hiredate, LAST_DAY(hiredate) from emp;</code></pre><p>-- 현재 날짜를 반환하는 쿼리문</p>
<pre><code>select sysdate from dual;</code></pre><h2 id="3cpconnection-pool에-대하여-설명하시오">3.CP(connection pool)에 대하여 설명하시오.</h2>
<blockquote>
<p>CP란 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가.
클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다.</p>
</blockquote>
<h2 id="4el에-대하여-설명하시오">4.EL에 대하여 설명하시오.</h2>
<blockquote>
<p>EL이란 Expression Language, 데이터를 표현하기 위한 언어라는 뜻이고. JSP 스크립트의 표현식(&lt;%= %&gt;을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어이다.</p>
</blockquote>
<h2 id="5-아래의-액션-태그를-el로-표현하시오">5. 아래의 액션 태그를 EL로 표현하시오.</h2>
<blockquote>
<p>&lt;jsp:getProperty name=&quot;member&quot; property=&quot;name&quot;/&gt;</p>
</blockquote>
<blockquote>
<p>${member.name}</p>
</blockquote>
<h2 id="64개의-scope-에-대하여-설명하시오예습">6.4개의 scope 에 대하여 설명하시오.(예습)</h2>
<ul>
<li>Application</li>
<li>Request</li>
<li>Session</li>
<li>Page</li>
</ul>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/d382b2bf-ec60-4ab3-9a4b-ec6a2005f12d/image.png" alt=""></p>
<ol>
<li><p>Application : 웹 어플리케이션이 시작되고 종료될때까지 변수가 유지될 경우 사용. </p>
<ul>
<li>하나의 애플리케이션 당 1개의 application 객체가 생성된다.</li>
<li>같은 애플리케이션 내의 요청되는 페이지들은 같은 객체를 공유하게 된다.</li>
<li>애플리케이션이 종료되면 객체는 반환된다.</li>
<li>모든 영역에서 공유할 수 있는 데이터 ( 제일 크니까. )</li>
</ul>
</li>
</ol>
<ol start="2">
<li><p>Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 ( 해당 객체가 소멸될때까지 사용 가능).</p>
<ul>
<li>서로 다른 페이지(리소스) 여도 객체(데이터)들을 공유 할 수 있음.</li>
<li>하나의 브라우저 당 1개의 session 객체가 생성된다(다른 브라우저에서 작업시 휘발). </li>
<li>이 속성의 객체는 세션 종료되는 순간 반환.</li>
<li>같은 브라우저 내에 요청되는 페이지들은 같은 객체를 공유하게 된다.</li>
</ul>
</li>
<li><p>Request : http요청을 WAS(톰캣)가 받아서 웹 브라우저에게 응답할 때 까지 살아있는 변수</p>
<ul>
<li>가장 많이 사용 되는 스코프 </li>
<li>페이지와 페이지 사이에 존재하고 하나의 관계에서만 사용 가능하다.</li>
<li>요청을 받아 응답할때까지만 객체가 유효한 영역. 페이지 넘길 때 리퀘스트 영역에 값을 올리고 그 올린 값을 누군가
다른애가 requset.parmeter 등으로 값을 뽑아 갈 수 있다( 다른 페이지에서는 사용 불가 ).</li>
<li>forward 또는 include 방식을 이용할 경우 여러 페이지에서도 요청정보가 유지되므로 여러 페이지에서 공유가능.</li>
</ul>
</li>
<li><p>Page : 페이지 내에서 지역변수 처럼 사용</p>
<ul>
<li>위 세가지 영역과는 다르게 page내장 객체가 아닌  JSP파일에 내장되어있는 pageContext객체를 통해 접근 할 수        있는 영역 page 내에서만 유효하다.</li>
<li>JSP파일에는 pageContext가 내장되어있다으며 이 객체는 page내에서만 유효하다.</li>
<li>pageContext는 모든 영역의 속성에 대한 접근이 가능 </li>
<li>JSP 파일 내에 &lt;% %&gt; 안에 변수를 사용하면 해당 JSP 파일에서만 유효한데 page 스코프에 정의된 객체이기 때문</li>
</ul>
</li>
</ol>
<p>  출처 : <a href="https://itjy2.tistory.com/30">https://itjy2.tistory.com/30</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 5일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-5%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-5%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Tue, 29 Nov 2022 09:29:36 GMT</pubDate>
            <description><![CDATA[<h2 id="1-emp-를-empjsp-로-출력하시오">1. emp 를 emp.jsp 로 출력하시오.</h2>
<h3 id="empjsp">emp.jsp</h3>
<pre><code class="language-jsp">
&lt;%@page import=&quot;java.sql.DriverManager&quot;%&gt;
&lt;%@page import=&quot;java.sql.ResultSet&quot;%&gt;
&lt;%@page import=&quot;java.sql.Statement&quot;%&gt;
&lt;%@page import=&quot;java.sql.Connection&quot;%&gt;
&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table align=&quot;center&quot; border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;empno&lt;/th&gt;
&lt;th&gt;ename&lt;/th&gt;
&lt;th&gt;job&lt;/th&gt;
&lt;th&gt;mgr&lt;/th&gt;
&lt;th&gt;hiredate&lt;/th&gt;
&lt;th&gt;sal&lt;/th&gt;
&lt;th&gt;comm&lt;/th&gt;
&lt;th&gt;deptno&lt;/th&gt;

&lt;!-- empno, ename, job, mgr, hiredate, sal, comm, deptno --&gt;
&lt;%
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    String driver = &quot;oracle.jdbc.driver.OracleDriver&quot;;
    String url = &quot;jdbc:oracle:thin:@localhost:1521:xe&quot;;
    String uid = &quot;scott&quot;;
    String upw = &quot;tiger&quot;;
    String query = &quot;select * from emp&quot;;
    //환경설정부분

    try{
        Class.forName(driver);
        connection = DriverManager.getConnection(url, uid, upw);
        statement = connection.createStatement();
        resultSet = statement.executeQuery(query);

        while(resultSet.next()) {
            String empno = resultSet.getString(&quot;empno&quot;);
            String ename = resultSet.getString(&quot;ename&quot;);
            String job = resultSet.getString(&quot;job&quot;);
            String mgr = resultSet.getString(&quot;mgr&quot;);
            String hiredate = resultSet.getString(&quot;hiredate&quot;);
            String sal = resultSet.getString(&quot;sal&quot;);
            String comm = resultSet.getString(&quot;comm&quot;);
            String deptno = resultSet.getString(&quot;deptno&quot;);

            //empno, ename, job, mgr, hiredate, sal, comm, deptno
            out.println(&quot;&lt;tr&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ empno +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ ename +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ job +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ mgr +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ hiredate +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ sal +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ comm +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;td&gt;&quot;+ deptno +&quot;&lt;/td&gt;&quot;);
            out.println(&quot;&lt;/tr&gt;&quot;);
        }

    }catch(Exception e){

    }finally{
        try{
            if(resultSet != null) resultSet.close();
            if(statement != null) statement.close();
            if(connection != null) connection.close();
        } catch(Exception e){}
    }

%&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;

</code></pre>
<h2 id="2-dml-ddl-dcl-에-대하여-설명하시오">2. DML, DDL, DCL 에 대하여 설명하시오.</h2>
<ul>
<li><p>DML : Data Manipulation Language </p>
<blockquote>
<p>번역하면 데이터 조작어이며,
테이블의 데이터를 조회하거나 검색하는 SELECT, 테이블에 들어가있는 데이터에 변형을 가하는 INSERT, UPDATE, DELETE등이 있다.</p>
</blockquote>
</li>
<li><p>DDL : Data Definition Language</p>
<blockquote>
<p>번역하면 데이터 정의어이며,
테이블의 데이터 구조를 정의하는데 사용되는 명령어이다.
속해있는 명령어로는 CREATE, ALTER, DROP, RENAME, TRUNCATE등이 있다.</p>
</blockquote>
</li>
<li><p>DCL : Data Control Language</p>
<blockquote>
<p>번역하면 데이터 정의어이며,
테이블의 데이터에 접근할수있는 권한을 주거나 박탈할때 사용한다. 속해있는 명령어로는 GRANT와 REVOKE가 있다.</p>
</blockquote>
</li>
</ul>
<h2 id="3아래의-함수에-대하여-설명하시오">3.아래의 함수에 대하여 설명하시오.</h2>
<ul>
<li>ABS</li>
<li>floor</li>
<li>round</li>
<li>TRUNC</li>
<li>MOD</li>
</ul>
<blockquote>
<p>ABS : 절대값을 구하는 함수 
floor : 소숫값을 버리는 함수
round : round(입력한 수, n번째 자리수에서 반올림)
TRUNC : trunc(입력한 수, n번째 자리수에서 버림)
MOD : 나머지를 구하는 함수(프로그래밍 언어의 %와 동일)</p>
</blockquote>
<h2 id="4ddl-에서-truncate-과-drop-의-차이는">4.ddl 에서 TRUNCATE 과 drop 의 차이는?</h2>
<ul>
<li><p>drop </p>
<blockquote>
<p>drop은 데이터 테이블 객체 자체를 삭제시켜 내부의 프레임과 데이터를 모두 삭제시킨다.</p>
</blockquote>
</li>
<li><p>truncate</p>
<blockquote>
<p>truncate는 데이터 테이블 객체의 프레임은 남겨두고, 내부의 데이터값만 완전히 삭제시키는 명령어이다.</p>
</blockquote>
</li>
</ul>
<h2 id="5bean-의-개념에-대하여-설명하시오">5.bean 의 개념에 대하여 설명하시오.</h2>
<h2 id="6-아래의-3종-세트를-설명하시오">6. 아래의 3종 세트를 설명하시오.</h2>
<ul>
<li><p>Connection : 데이터베이스 연결</p>
<blockquote>
<p>사용예)
DriverManager.getConnetion(JDBC URL, 계정 아이디, 비밀번호)
DriverManager에서 커넥션 생성(연결시킴)</p>
</blockquote>
</li>
<li><p>Statement : SQL문 실행</p>
<blockquote>
<p>사용예)
connection.createStatement();
connection객체에서 Statement를 생성시켜서 ResultSet객체에 넣어줌.</p>
</blockquote>
</li>
<li><p>Resultset : 데이터베이스 연결 해제</p>
<blockquote>
<p>사용예)
statement.executeQuery(실행할 쿼리문);
statement객체를 받아와서 실제로 쿼리문을 받아온 후 담아둠.</p>
</blockquote>
</li>
</ul>
<h2 id="7아래를-참고-하여-이름국영수-데이터-멤버로-갖는-클래스자바-빈-java-bean를-만든후">7.아래를 참고 하여 이름,국,영,수 데이터 멤버로 갖는 클래스(자바 빈 java Bean)를 만든후,</h2>
<h2 id="아래와-같이-액션-태그를-활용하여-총점과-평균이-나오도록-하시오개별진척도-1번">아래와 같이 액션 태그를 활용하여 총점과 평균이 나오도록 하시오.(개별진척도 1번)</h2>
<pre><code class="language-java">
class Student {

    public Student() {}

    private String name;
    private int kor;
    private int eng;
    private int math;

    public int getKor() {
        return kor;
    }

    public int setKor() {
        this.kor = kor;
    }
    .... name, eng, math의 Getter, Setter 함수

    public int getTotal() {
        return kor+eng+math;
    }
    // 총점 구하는 메소드
    public double getAverage() {
        return (kor+eng+math)/3.0;
    }
    // 평균 구하는 메소드

}
</code></pre>
<p>ScoreForm.jsp</p>
<pre><code class="language-jsp">&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form action=&quot;StudentBean.jsp&quot;&gt;

        이름 :     &lt;input type=&quot;text&quot; name=&quot;name&quot;&gt;&lt;br&gt;
        국어 점수 : &lt;input type=&quot;number&quot; name=&quot;kor&quot;&gt;&lt;br&gt;
        영어 점수 : &lt;input type=&quot;number&quot; name=&quot;eng&quot;&gt;&lt;br&gt;
        수학 점수 : &lt;input type=&quot;number&quot; name=&quot;math&quot;&gt;&lt;br&gt;
        &lt;input type=&quot;submit&quot; value=&quot;전송&quot;&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>StudentBean.jsp</p>
<pre><code class="language-jsp">&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;jsp:useBean id=&quot;student&quot; class=&quot;edu.kosmo.ex.Student&quot;/&gt;
&lt;!-- 자바빈을 참조함(edu.kosmo.ex 패키지에 있는 Student 객체 참조)
       Student student = new edu.kosmo.ex.Student();와 같은 역할을 한다.
--&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;jsp:setProperty name=&quot;student&quot; property=&quot;name&quot;  param=&quot;name&quot;/&gt;
&lt;jsp:setProperty name=&quot;student&quot; property=&quot;kor&quot;  param=&quot;kor&quot;/&gt;
&lt;jsp:setProperty name=&quot;student&quot; property=&quot;eng&quot;  param=&quot;eng&quot;/&gt;
&lt;jsp:setProperty name=&quot;student&quot; property=&quot;math&quot;  param=&quot;math&quot;/&gt;

이름 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;name&quot;/&gt;&lt;br&gt;
국어 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;kor&quot; /&gt;&lt;br&gt;
영어 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;eng&quot;/&gt;&lt;br&gt;
수학 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;math&quot; /&gt;&lt;br&gt;
총점 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;total&quot;/&gt;&lt;br&gt;
평균 : &lt;jsp:getProperty name=&quot;student&quot; property=&quot;average&quot; /&gt;&lt;br&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 4일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-4%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-4%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Mon, 28 Nov 2022 08:58:32 GMT</pubDate>
            <description><![CDATA[<h2 id="1-아래의-쿼리를-완성하시오">1. 아래의 쿼리를 완성하시오.</h2>
<ul>
<li><p>사원테이블(DEPT)에서 급여 (SAL)가 3000 이상인 사원을 출력하는 쿼리문</p>
<p>  SELECT ENAME FROM EMP WHERE DEPT SAL &gt;= 3000;</p>
</li>
<li><p>부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력</p>
<p>  SELECT * FROM EMP WHERE DEPTNO = 20;</p>
</li>
<li><p>이름(ENAME)이 FORD인 사람의 사번(empno), 이름(ename), 급여(SAL)를 출력하는 쿼리문</p>
<p>  SELECT EMPNO, ENAME, SAL FROM EMP WHERE ENAME=&#39;FORD&#39;; </p>
</li>
<li><p>1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE HIREDATE &gt; &#39;1982-01-01&#39;;</p>
</li>
<li><p>부서번호가 10번이고 job 이 매니져인 사람을 출력</p>
<p>  SELECT * FROM EMP WHERE DEPTNO=10 AND JOB=&#39;MANAGER&#39;;</p>
</li>
<li><p>부서번호가 10번 이거나(또는) job 이 매니져인 사람을 출력</p>
<p>  SELECT * FROM EMP WHERE DEPTNO=10 OR JOB=&#39;MANAGER&#39;;</p>
</li>
<li><p>부서번호가 10번 부서가 아닌 사원</p>
<p>  SELECT * FROM EMP WHERE NOT DEPTNO=10;
  SELECT * FROM EMP WHERE DEPTNO !=10;
  SELECT * FROM EMP WHERE DEPTNO &lt;&gt; 10;</p>
</li>
<li><p>급여가 2000~3000 사이의 사원을 검색하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE BETWEEN 2000 AND 3000;</p>
</li>
<li><p>급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE NOT BETWEEN 2000 AND 3000;</p>
</li>
<li><p>1980년에 입사한 사원을 출력하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE HIREDATE BETWEEEN &#39;1980-0101&#39; AND &#39;1980-1231&#39;;</p>
</li>
<li><p>커미션(COMM)이 300 혹은 500 혹은 1400인 사원이 있는지 검색하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE COMM IN (300, 500, 1400);</p>
</li>
<li><p>커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원이 있는지 검색하는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE COMM NOT IN (300, 500, 1400);</p>
</li>
<li><p>이름이 F로 시작하는 사람을 찾는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE ENAME LIKE &#39;F%&#39;;</p>
</li>
<li><p>위치 상관 없이 이름 중에 A가 들어있는 사람을 찾는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE ENAME LIKE &#39;%A%&#39;;</p>
</li>
<li><p>이름이 N으로 끝나는 사람을 찾는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE ENAME LIKE &#39;%N&#39;;</p>
</li>
<li><p>이름의 두 번째 글자가 A인 사원을 찾는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE ENAME LIKE &#39;_A%&#39;;</p>
</li>
<li><p>이름의 세 번째 글자가 A인 사원을 찾는 쿼리문</p>
<p>  SELECT * FROM EMP WHERE ENAME LIKE &#39;__A%&#39;;</p>
</li>
</ul>
<h2 id="2-rdbms의-종류는">2. RDBMS의 종류는?</h2>
<h3 id="span-stylecolorcyanrdbms의-종류에는span"><span style=color:cyan>RDBMS의 종류에는</span></h3>
<ul>
<li>mySQL</li>
<li>MariaDB</li>
<li>ORACLE</li>
<li>SQL SERVER(Microsoft사 제품) / MS-SQL등이 있다.</li>
</ul>
<h2 id="3쿠키란-무엇인가요">3.쿠키란 무엇인가요?</h2>
<blockquote>
<p>쿠키란 웹 서버가 웹 브라우저에게 보내어 저장했다가, 서버의 부가적인 요청이 있을때 다시 서버로 보내주는 문자열 정보이다.
서버가 아닌 클라이언트에 저장된다.</p>
</blockquote>
<h2 id="4세션이란-무엇인가요">4.세션이란 무엇인가요?</h2>
<blockquote>
<p>사용자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료해서 연결을 끝내는 시점까지, 같은 사용자로부터 오는 일련의 요청을 하나로 보고, 그 상태를 일정하게 유지하는 기술이다.
즉, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.</p>
</blockquote>
<h2 id="5-아래의-cookie_setjsp-파일에-대하여-cookie-get-를-클릭하면-모든-쿠키-값을-출력하는-cookie_getjsp를-만드시오-개별진척도-1번">5. 아래의 cookie_set.jsp 파일에 대하여 cookie get 를 클릭하면 모든 쿠키 값을 출력하는 cookie_get.jsp를 만드시오. (개별진척도 1번)</h2>
<ul>
<li>풀이는 아래와 같다.</li>
<li>cookie_set.jsp파일을 생성하여 아래와 같이 코딩한다.</li>
</ul>
<p>cookie_set.jsp</p>
<pre><code>&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
    Cookie cookie = new Cookie(&quot;CookieN&quot;,&quot;CookieV&quot;);
    cookie.setMaxAge(60*60);

    response.addCookie(cookie);//response안에다가 cookie를 보냄
%&gt;

&lt;a href=&quot;cookie_get.jsp&quot;&gt;cookie get&lt;/a&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><p> cookie_get.jsp</p>
<pre><code class="language-jsp">&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
    Cookie[] cookies = request.getCookies();

    for(int i=0; i&lt;cookies.length(); i++) {
        String str = cookies[i].getName();
        if(str.equals(&quot;CookieN&quot;)){
            out.println(&quot;cookies[&quot;+i+&quot;] name : &quot; + cookies.getName() + &quot;&lt;br&gt;&quot;);
            out.println(&quot;cookies[&quot;+i+&quot;] value : &quot; + cookies.getValue() + &quot;&lt;br&gt;&quot;);
            out.println(&quot;&lt;br&gt;&quot;);
        }
    }
%&gt;

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h2 id="6아래의-session_setjsp-파일에-대하여-session-get-를-클릭하면-모든-세션-값을-출력하는-session_getjsp를-만드시오">6.아래의 session_set.jsp 파일에 대하여 session get 를 클릭하면 모든 세션 값을 출력하는 session_get.jsp를 만드시오.</h2>
<ul>
<li>풀이는 아래와 같다. </li>
<li>session_set.jsp파일을 생성하여 아래와 같이 코딩한다.</li>
</ul>
<p>session_set.jsp</p>
<pre><code>&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
    session.setAttribute(&quot;sessionName&quot;,&quot;sessionValue&quot;);
    session.setAttribute(&quot;myNum&quot;,12345);
%&gt;

&lt;a href=&quot;session_get.jsp&quot;&gt;session get&lt;/a&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><p>session_get.jsp</p>
<pre><code class="language-jsp">
&lt;%@page import=&quot;java.util.Enumeration&quot;%&gt;
&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
    Enumeration e1 = session.getAttributeNames();

    int i = 0;

    while(e1.hasMoreElements()){
        i++;
        String name = e1.nextElement().toString();
        String value = (String)session.getAttribute(name).toString();

        out.println(&quot;name : &quot; + name + &quot;&lt;br&gt;&quot;);
        out.println(&quot;value : &quot; + value + &quot;&lt;br&gt;&quot;);

        }

%&gt;

&lt;a href=&quot;session_get.jsp&quot;&gt;session get&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바 프로그래밍 1차 과제(콘솔 게시판)]]></title>
            <link>https://velog.io/@alice_hulotte/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1%EC%B0%A8-%EA%B3%BC%EC%A0%9C%EC%BD%98%EC%86%94-%EA%B2%8C%EC%8B%9C%ED%8C%90</link>
            <guid>https://velog.io/@alice_hulotte/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1%EC%B0%A8-%EA%B3%BC%EC%A0%9C%EC%BD%98%EC%86%94-%EA%B2%8C%EC%8B%9C%ED%8C%90</guid>
            <pubDate>Sun, 27 Nov 2022 15:00:11 GMT</pubDate>
            <description><![CDATA[<p>Post.java </p>
<pre><code class="language-java">
package java_1st_assignment;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class Post {
    String title;
    String content;
    String postWriter;
    String date;

    Scanner sc = new Scanner(System.in);

    public Post() { // 생성자

        System.out.print(&quot;제목 &gt;&quot;);
        this.title = sc.nextLine();
        System.out.print(&quot;내용 &gt;&quot;);
        this.content = sc.nextLine();
        System.out.print(&quot;작성자 &gt;&quot;);
        this.postWriter = sc.nextLine();
        System.out.println(&quot;글이 등록되었습니다.&quot;);
        System.out.println(&quot;메인화면으로 돌아갑니다.&quot;);
        LocalDateTime time = LocalDateTime.now();
        date = time.format(DateTimeFormatter.ofPattern(&quot;yyyy년 MM월 dd일 hh시 mm분 ss초&quot;));
    }

    public void postInformation() {
        System.out.println(title + &quot; &quot; + postWriter + &quot; &quot; + date);
    }

    public void postContent() {
        System.out.println(&quot;제목 : &quot; + title);
        System.out.println(&quot;내용 : &quot; + content);
        System.out.println(&quot;글쓴이 : &quot; + postWriter);
        System.out.println(&quot;작성 시간 : &quot; + date);
        System.out.println(&quot;글을 읽어왔습니다.&quot;);
    }

}

</code></pre>
<p>CLIBoard.java</p>
<pre><code class="language-java">package java_1st_assignment;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class CLIBoard {

    static ArrayList&lt;Post&gt; articles = new ArrayList&lt;&gt;();

    static Scanner sc = new Scanner(System.in);

    static boolean board_onoff = true;

    public static void main(String[] args) {

        mainShow();
        listShow();
        while (board_onoff) {
            int selected_number = sc.nextInt();
            switch (selected_number) {

            case 1: // 글 목룍 보여주기
                readPostShow();
                listShow();
                break;
            case 2: // 글 등록하기
                doPost();
                mainShow();
                listShow();
                break;
            case 3: // 글 내용 확인하기
                readPost();
                listShow();
                break;
            case 4: // 글 삭제하기
                doPostRemove();
                break;
            case 0:
                System.out.println(&quot;게시판을 종료합니다.&quot;);
                board_onoff = false;
                break;
            }
        }

    }

    public static void mainShow() { // 최상단 목록
        System.out.println(&quot;==================&quot;);
        System.out.println(&quot;번호   제목   작성자   작성일&quot;);
        System.out.println(&quot;----------------------&quot;);
    }

    public static void listShow() { // 0~4 리스트 보여주기
        System.out.println(&quot;1. 목록 2. 등록 3. 내용 4. 삭제 0. 종료 &gt;&gt;&quot;);
    }

    public static void doPost() { // 글 등록
        System.out.println(&quot;제목, 내용, 작성자를 입력해주세요.&quot;);
        articles.add(new Post());
    }

    public static void doPostRemove() {

        System.out.println(&quot;삭제할 글 번호를 입력해주세요.&quot;);
        int remove_number = sc.nextInt();
        articles.remove(remove_number-1);
        System.out.println(&quot;글이 삭제되었습니다.&quot;);
    }

    public static void readPostShow() { // 글 목록을 불러옴+

        System.out.println(&quot;글번호 제목 내용 작성일시&quot;);
        int post_count = 1;

        if(articles == null) {
            System.out.println(&quot;글 내역이 없습니다.&quot;);
        }

        for (Iterator&lt;Post&gt; itr = articles.iterator(); itr.hasNext();) {

            System.out.print(post_count++ + &quot; &quot;);
            itr.next().postInformation();
        }

        System.out.println(&quot;글 목록을 읽어왔습니다.&quot;);
    }

    public static void readPost() {
        System.out.println(&quot;읽어올 글 번호를 입력해주세요&quot;);
        int read_post_number = sc.nextInt();
        articles.get(read_post_number-1).postContent();
    }

}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 3일차 수업 ]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-3%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-3%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Fri, 25 Nov 2022 09:14:14 GMT</pubDate>
            <description><![CDATA[<h2 id="1내장-객체에-대하여-설명하시오">1.내장 객체에 대하여 설명하시오.</h2>
<blockquote>
<p>내장 객체란 JSP가 서블릿 형태로 자동 변환된 코드 내에 자동으로 포함되어 있는 멤버변수, 메서드 매개변수 등의 각종 참조 변수들을 말한다.</p>
</blockquote>
<blockquote>
<p>내장 객체에는 request, response, out등의 객체가 있다.
예 : out.print(&quot;Hello World&quot;);</p>
</blockquote>
<h2 id="2-redirect--forward-의-차이는">2. redirect , forward 의 차이는?</h2>
<blockquote>
<p>redirect와 forward의 공통점으로는 둘다 작업중인 페이지에서 다른 페이지로 이동할때 사용되는 방식이다.</p>
</blockquote>
<ul>
<li>redirect 방식</li>
</ul>
<blockquote>
<p>Redirect는 Web Container로 명령이 들어오면, 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내립니다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 해당 주소로 이동합니다. 다른 웹 컨테이너에 있는 주소로 이동하며 새로운 페이지에서는 Request와 Response객체가 새롭게 생성됩니다.</p>
</blockquote>
<ul>
<li>forward 방식</li>
</ul>
<blockquote>
<p>Forward는 Web Container 차원에서 페이지의 이동만 존재합니다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없습니다. 그렇기 때문에 웹 브라우저에는 최초에 호출한 URL이 표시되고, 이동한 페이지의 URL 정보는 확인할 수 없습니다. 또한 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 Request 객체와 Response 객체를 공유합니다. </p>
</blockquote>
<h2 id="3-다음을-설명하시오">3. 다음을 설명하시오.</h2>
<p>-액션 태그의 정의와 종류는?</p>
<blockquote>
<p>액션 태그란, jsp에서 &lt;% %&gt;와 같이 일일히 스크립트릿(표현식)을 사용하지 않고, 태그를 이용해서 표현하는 방식이다.</p>
</blockquote>
<p>액션태그의 종류는 많지만 대표적으로 3개가 있으며 각각</p>
<ul>
<li><p>forward</p>
<blockquote>
<p>현재의 페이지에서 다른 페이지로 전환해주고자 할때 사용하는 태그 ( 예 : &lt;jsp:forward ..... &gt;</p>
</blockquote>
</li>
<li><p>include</p>
<blockquote>
<p>현재의 페이지에서 다른 페이지를 삽입해주고자 할때 사용하는 태그
예 : &lt;jsp:include page=&quot;abc.jsp&quot;/&gt; </p>
</blockquote>
</li>
<li><p>param</p>
<blockquote>
<p>forward 및 include태그에 데이터 전달을 목적으로 사용되는 태그
예 : </p>
</blockquote>
</li>
</ul>
<pre><code class="language-jsp">
&lt;jsp:forward page=&quot;a.jsp&quot;&gt;
    &lt;jsp:param name=&quot;id&quot;value=&quot;abcde&quot;&gt;
    &lt;jsp:param name=&quot;pw&quot;value=&quot;1234&quot;&gt;
&lt;/jsp:forward&gt;
</code></pre>
<p>이 태그는 id값에 abcde라는 파라미터, pw값에 1234라는 파라미터를 삽입해준다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 2일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-2%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-2%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Thu, 24 Nov 2022 09:02:36 GMT</pubDate>
            <description><![CDATA[<h2 id="1-jspservlet-에서-한글처리-방식은-다국어-처리">1. jsp/servlet 에서 한글처리 방식은? (다국어 처리)</h2>
<blockquote>
<p>Tomcat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식이기 때문에 한글이나 이외 문자들이 깨짐 현상이 발생하기 때문에</p>
</blockquote>
<blockquote>
<p>get방식으로는 server.xml을 수정해서 UTF-8 또는 EUC-KR로 인코딩해주어야 한다.</p>
</blockquote>
<blockquote>
<p>post방식으로는 doPost 메소드 안에 request객체나 response객체에
setCharacterEncoding 메소드 객체를 활용해서 UTF-8로 지정을 해주어야 한다.</p>
</blockquote>
<h2 id="2-아래를jsp-태그-설명하시오">2. 아래를(JSP 태그) 설명하시오.</h2>
<ul>
<li>&lt;%@ %&gt;</li>
<li>&lt;%-- --%&gt;</li>
<li>&lt;%! %&gt;</li>
<li>&lt;%= %&gt;</li>
<li>&lt;% %&gt;</li>
<li><a href="jsp:action">jsp:action</a></jsp:action></li>
</ul>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/2aa3262e-2356-4085-9dee-df1a87398b55/image.png" alt=""></p>
<h2 id="3-구구단을-세로로-나타내도록-jsp-로-짜시오">3. 구구단을 세로로 나타내도록 jsp 로 짜시오</h2>
<h3 id="p-stylecolorredgugudanjspp"><p style=color:red>gugudan.jsp</p></h3>
<pre><code class="language-jsp">
&lt;table border=&quot;1&quot;&gt;
      &lt;tr&gt;
         &lt;%
            for(int i=2;i&lt;10;i++){
               out.print(&quot;&lt;th width=100&gt;&quot;+i+&quot;단&lt;/th&gt;&quot;);
            }
         %&gt;
      &lt;/tr&gt;
      &lt;%
         for(int i=1;i&lt;10;i++){
      %&gt;
       &lt;tr&gt;
         &lt;%
            for(int j=2;j&lt;10;j++){
               out.print(&quot;&lt;td align=center&gt;&quot;+ j + &quot;*&quot; + i + &quot;=&quot; + (j*i)+&quot;&lt;/td&gt;&quot;);
            }
         %&gt;
      &lt;/tr&gt; 
      &lt;% 
         }
      %&gt;

   &lt;/table&gt;</code></pre>
<h2 id="4-국어영어수학의-총점과-평균을-웹상에서-나오도록-하시오">4. 국어,영어,수학의 총점과 평균을 웹상에서 나오도록 하시오.</h2>
<p>-grade.html 국어 영어 수학 점수 입력
-/grade 에서 총점과 평균을 계산하여 전송</p>
<h3 id="gradehtml">grade.html</h3>
<pre><code class="language-html">
&lt;form action=&quot;grade&quot; method=&quot;post&quot;&gt;
    국어 점수 : &lt;input type=&quot;text&quot; id=&quot;kor&quot;&gt;&lt;br&gt;
    영어 점수 : &lt;input type=&quot;text&quot; id= &quot;eng&quot;&gt;&lt;br&gt;
    수학 점수 : &lt;input type=&quot;text&quot; id= &quot;math&quot;&gt;&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;input type=&quot;submit&quot; value=&quot;전송&quot;&gt;
    &lt;input type=&quot;reset&quot; value=&quot;초기화&quot;&gt;
&lt;/form&gt;</code></pre>
<h3 id="gradejava">Grade.java</h3>
<pre><code class="language-java">int kor, eng, math;

    public Grade (int kor, int eng, int math) {
        this.kor = kor;
        this.eng = eng;
        this.math = math;
    }

    public int totalGrade() {
        return kor+eng+math;
    }
    public double totalAverage() {
        (return kor+eng+math)/3.0;
    }

</code></pre>
<h3 id="graderesultjava서블릿-파일">GradeResult.java(서블릿 파일)</h3>
<h4 id="길이상-dopost부분만-작성">(길이상 doPost부분만 작성)</h4>
<pre><code class="language-java">    response.setContentType(&quot;text/html; charset=EUC-KR&quot;);
    response.setCharacterEncoding(&quot;EUC-KR&quot;);

    PrintWriter out = response.getWriter();

    int kor = Integer.valueOf(request.getParameter(&quot;kor&quot;));
    int eng = Integer.valueOf(request.getParameter(&quot;eng&quot;));
    int math = Integer.valueOf(request.getParameter(&quot;math&quot;));


    Grade g1 = new Grade(kor, eng, math);

    out.println(&quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&quot;);
    out.println(&quot;평균&quot; + g1.totalAverage());
    out.println(&quot;&lt;br&gt;&quot;);
    out.println(&quot;총합&quot; + g1.totalGrade());
    out.println(&quot;&lt;/body&gt;&lt;/html&gt;&quot;);
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSP 프로그래밍 1일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/JSP-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Wed, 23 Nov 2022 08:58:27 GMT</pubDate>
            <description><![CDATA[<h2 id="1-hellojsp-가-컴파일-되는-과정에-대하여-설명하시오">1. hello.jsp 가 컴파일 되는 과정에 대하여 설명하시오.</h2>
<p><img src="https://velog.velcdn.com/images/alice_hulotte/post/791ceead-ecdb-4930-99f6-c2ae957948a7/image.png" alt=""></p>
<blockquote>
<p>jsp파일을 tomcat이 파일명_jsp.java로 변환해주고, 
 class파일로 다시 변환해서 서버 페이지가 읽을수 있게 한다.</p>
</blockquote>
<h2 id="2-servlet에-대하여-설명하시오">2. Servlet에 대하여 설명하시오.</h2>
<blockquote>
<p>일반적으로 웹 페이지는 정적으로 이루어져있으나, 동적인 페이지를 작성하기 위해서 필요한 자바 프로그램이다.
간단히 말해서, Servlet이란 자바를 사용하여 웹을 만들기 위해 필요한 기술입니다. 
클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주어야 하는데, 이러한 역할을 한다. </p>
</blockquote>
<h2 id="3-webxml에-대하여-설명하시오">3. web.xml에 대하여 설명하시오.</h2>
<blockquote>
<p>web.xml 은 URL 경로와 해당 경로의 요청을 처리하는 서블릿 사이의 매핑을 정의한다.</p>
</blockquote>
<h2 id="4-html-이란-무엇인가">4. html 이란 무엇인가?</h2>
<blockquote>
<p>Hyper Text Markup Language의 줄임말으로, 명시되어있는 규격에 따라서 웹브라우저에 양식을 보내면 그대로 출력하는 언어이다.</p>
</blockquote>
<h2 id="5get-방식과-post-방식에-대하여-설명하시오-필수-⭐️">5.get 방식과 post 방식에 대하여 설명하시오. (필수!) ⭐️</h2>
<blockquote>
<p>get방식은, URL에 직접적으로 정보를 전달하는 방식이며 보안성이 약하다.</p>
</blockquote>
<blockquote>
<p>post방식은 헤더를 통해서 정보가 전송되는 방식으로 보안성이 강하다.</p>
</blockquote>
<h2 id="6-컨텍스트-패스context-path란-무엇인가">6. 컨텍스트 패스(Context Path)란 무엇인가?</h2>
<blockquote>
<p>WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 path이다.
이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가 됩니다.</p>
</blockquote>
<h2 id="7-아래의-객체에-대하여-설명하시오">7. 아래의 객체에 대하여 설명하시오.</h2>
<ul>
<li>HttpServletRequest request</li>
<li>HttpServletResponse response</li>
</ul>
<blockquote>
<p>HttpServletRequest 객체 : 클라이언트의 요청 객체</p>
</blockquote>
<blockquote>
<p>HttpServletResponse 객체 : 클라이언트의 응답 객체</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바 프로그래밍 22일차 수업]]></title>
            <link>https://velog.io/@alice_hulotte/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-22%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</link>
            <guid>https://velog.io/@alice_hulotte/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-22%EC%9D%BC%EC%B0%A8-%EC%88%98%EC%97%85</guid>
            <pubDate>Tue, 22 Nov 2022 09:06:32 GMT</pubDate>
            <description><![CDATA[<h2 id="1-11-채팅을-짜시오">1. 1:1 채팅을 짜시오.</h2>
<p>파일 4개, 일단 보고 카피</p>
<p>Sender.java</p>
<pre><code class="language-java">
class Sender extends Thread {

 String name;
 Socket socket;
 DataOutputStream out;

 Sender(Socket socket) {

    try{ 
        out = new DataOutputStream(socket.getOutputStream());
        name = &quot;[&quot; + socket.getInetAddress() + &quot;:&quot; + socket.getPort() + &quot;]&quot;;
    }
    catch(Exception e){
    }

 }

 @Override

 public void run () {
     Scanner scanner = new Scanner(System.in);

    while(out != null){
        try{
            out.writeUTF(name + scanner.nextLine();

     }catch(Exception e){}
    }
}
</code></pre>
<p>Receiver.java</p>
<pre><code class="language-java">
Socket socket;
DataInputStream in;

Receiver(Socket socket) {
    try{
    in = new DataInputStream(socket.getInputStream());
    }catch(Exception e){
    }
}

public void run() {

      while(in != null){
     try{
         System.out.println(in.readUTF());

     }catch(Exception e) {
     }
    }
}
</code></pre>
<p>TCPServer.java</p>
<pre><code class="language-java">
class TCPServer {

    public static void main(String[] args) {

    ServerSocket serversocket = null;
    Socket socket = null;

    serversocket = new ServerSocket(7777);
    // 포트번호 지정
    socket = serversocket.accept();

    Sender sender = new Sender(socket);
    Receiver receiver = new Receiver(socket);

    sender.start();
    receiver.start();

    }
    catch(Exception e){
    }
    }
   }
}
</code></pre>
<p>TCPClient.java</p>
<pre><code class="language-java">
class TCPClient {

    public static void main(String[] args) {

        String serverIP = &quot;127.0.0.1&quot;;

        System.out.println(&quot;서버에 연결되었습니다.&quot;);

        Socket socket = new Socket(serverIP, 7777); // IP와 포트

        Sender sender = new Sender(socket);
        Receiver receiver = new Receiver(socket);

        sender.start();
        receiver.start();

    }
}
</code></pre>
<h2 id="2-아래의-용어에-대하여-설명하시오">2. 아래의 용어에 대하여 설명하시오.</h2>
<ul>
<li><p>Web Server (= HTTP Server)</p>
<blockquote>
<p>웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램</p>
</blockquote>
</li>
<li><p>WAS (Web Application Server)</p>
<blockquote>
<p>인터넷에서 HTTP를 이용해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)로 볼 수 있다.</p>
</blockquote>
<h2 id="3port-number-포트-번호-란">3.Port Number (포트 번호) 란?</h2>
</li>
</ul>
<blockquote>
<p>포트는 &#39;논리적인 접속장소&#39;이며, 네트워크 상에서 통신을 할때 IP를 토대로 해당 서버가 있는 컴퓨터에 접근한다.
컴퓨터에는 여러가지 서버가 동시에 구동될 수 있고, 그 서버중에 어느 서버에 접속해야하는지 컴퓨터에 알려주어야 하기때문에 포트번호가 존재한다.
포트 번호는 컴퓨터 상에서 실행되고 있는 서버를 구분하기 위해서
16비트의 논리적인 할당으로 0<del>65536까지로 구분지어지며, 이 중에 0</del>1023번 포트까지는 이미 어떤 포트가 사용할지가 미리 정해져있다.
예를들어 http통신에는 80번 포트를 사용한다.</p>
</blockquote>
<h2 id="4-프로토콜protocol이란-무엇이며프로토콜의-종류는">4. 프로토콜(Protocol)이란 무엇이며,프로토콜의 종류는?</h2>
<blockquote>
<p>프로토콜이란 원거리 통신 장비 사이의 통신 규약을 뜻한다.
프로토콜의 종류에는 HTTP, FTP, SMTP, www등이 있다.</p>
</blockquote>
<h2 id="5웹서버-종류는">5.웹서버 종류는?</h2>
<blockquote>
<p>Apache Tomcat</p>
</blockquote>
<ul>
<li>무료 오픈소스로, 세계에서 가장 널리 쓰이는 웹서버이며,  servlet과 JSP에 주로 사용된다.</li>
</ul>
<blockquote>
<p>NgniX</p>
</blockquote>
<ul>
<li>현재 전세계 점유율 1위의 웹서버이며, 가볍고 높은 성능으로 점점 점유율을 올리는 중이다.</li>
</ul>
<blockquote>
<p>ZEUS </p>
</blockquote>
<ul>
<li>티맥스소프트에서 개발한 국산 웹 서버이다</li>
</ul>
<blockquote>
<p>IIS </p>
</blockquote>
<ul>
<li>Microsoft사에서 개발해서 Microsoft사의 다른 프로그램(mySQL등과 호환이 가능하다는 장점이 있다)</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>