40일차

김윤정·2024년 8월 13일

코딩

목록 보기
40/60
post-thumbnail

1. get 방식과 post 방식에 대하여 설명하시오. (필수!) ⭐️

  • get 방식

    형태: http//localhost:8282/java_hello3?name=제목&contents=내용

  • post 방식

  1. get방식과 달리 긴 내용(데이터)을 url에 노출하지 않고 바디 영역(html 바디 아님) 안에 숨겨서 들어갑니다.(보안이 필요한 상황에 적합)
  2. 전송 길이에 제한이 없음 → 비교적 많은 양의 민감한 데이터를 보내야 할 때 사용합니다.

2. 컨텍스트 패스(Context Path)란 무엇인가? (예습)

  • WAS(Web Application Server)에서 웹 어플리케이션을 구분하기 위한 path

  • JSP에서 contacst는 project를 뜻합니다 (contacst = project)
    (다른 분야에서는 contacst가 전혀 다른 의미로 사용되기 때문에 주의해야합니다)

3. 아래의 객체에 대하여 설명하시오.(예습)

  • HttpServletRequest request,
  • HttpServletResponse response

HttpServletRequest request

  • HttpServletRequest 의 역할은 사용자 이름 및 암호와 같이 웹 클라이언트가 보낸 데이터 를 수신하는 것으로 request 정보를 서블릿에게 전달하기 위한 목적으로 사용합니다

  • HTTP 헤더와 HTTP 바디로 구성되어 있다.

  • Header정보, parameter, cookie, url, uri 등의 정보를 읽어들이는 메소드를 가진 클래스

  • bodydml steam을 읽어들이는 메소드를 가짐

  • 메소드 정보

HttpServletResponse

  • HttpServletResponse 의 역할은 웹 클라이언트에 데이터를 보내는 것

  • WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServleResponse객체를 생성하여 서블릿에게 전달 → 서블릿은 HttpServletResponse에 content type, 응답 코드, 응답 메세지 등을 담아서 전송합니다

  • 서블릿에 속성을 설정 하는 많은 setXXX () 메서드가 제공됩니다.

  • ServletResponse interface (javax.servlet.ServletResponse)

  • HttpServletResponse interface (javax.servlet.http.HttpServletResponse)

  • 좋아요공감
  • 공유하기게시글 관리
  • 구독하기

4. 아래의 용어에 대하여 설명하시오.

- DDL
데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어.

- DML
정의된 데이터베이스에 입력된 레코드를 조회하거나 수정, 삭제하는 역할을 하는 언어

- DCL
데이터베이스에 접근하거나 객체에 권한을 주는 역할을 하는 언어

5.아래의 쿼리를 작성하시오.

이름에 T가 들어가는 사원의 속한 부서에서 근무하는 모든 사원의
사원번호 및 이름을 출력하라.

select empno, ename from emp where deptno in (select deptno from emp where ename like '%T%');

자신의 급여가 평균 급여보다 많은 모든 사원의 사원 번호, 이름, 급여를
표시하는 질의를 작성하고 급여를 기준으로 결과를 내림차순으로 정렬하라.

select empno,ename,sal
from emp
where sal>(select avg(sal)from emp) order by sal desc ;

Smith와 동일한 부서에 속한 모든 사원의 이름 및 입사일을 출력하라.
단, Smith는 제외하고 출력하시오

select ename,hiredate from emp where deptno=(select deptno from emp where ename='SMITH')and ename != 'SMITH';

사원들의 평균 급여보다 더 많은 급여를 받는 사원을 검색하는 쿼리문

select *
from emp
where sal>(select avg(sal)from emp);

연봉을 3000이상 받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 정보를 출력하는 쿼리문

select * from emp where deptno in (select deptno from emp where sal>=3000);

Smith보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.

select ename,hiredate from emp where hiredate>(select hiredate from emp where ename='SMITH');

Smith와 동일한 부서에 속한 모든 사원의 이름 및 입사일을 출력하라.

select ename,hiredate from emp where deptno=(select deptno from emp where ename='SMITH')and ename != 'SMITH';

DDL 구문

기존 테이블(EMP)과 동일한 내용과 구조를 갖는 emp04 테이블을 만드는 쿼리문

create table emp04 as select * from emp;

기존테이블에 컬럼을 추가 하는 명령어는?

alter add

기존테이블에 컬럼의 크기를 변경하는 명령어는?

alter modify

6. 아래를 프로그램을 짜시오. (별찍기)

1)

  • input 박스에 숫자를 하나 넣어 서버로 전송한다.
  • 응답으로 별을 찍어 준다.
    예)input box 에 5를 입력후 전송
  • 아래와 같이 석탑을 찍어 클라이언트에 전송



@WebServlet("/star2")
public class Star2 extends HttpServlet {.....
protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		int num = Integer.valueOf(request.getParameter("num"));

		for (int i = 0; i <num ; i++) {
			for (int j = 0; j <= i; j++) {

				out.print("*");
			}
			out.print("<br>");

		}
	}

}

2)

  • input 박스에 숫자를 하나 넣어 서버로 전송한다.
  • 응답으로 별을 찍어 준다.
    예)input box 에 5를 입력후 전송
  • 아래와 같이 석탑을 찍어 클라이언트에 전송


@WebServlet("/star")
public class Star extends HttpServlet {.....
protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		int num = Integer.valueOf(request.getParameter("num"));

		for (int i = 1; i <= num; i++) {

			for (int j = i; j <= num; j++) {
				out.print("*");
			}
			out.print("<br>");

		}
	}

}

7. 아래의 요구 사항에 맞추어 프로그래밍 하시오.

-sevlet_lotto 프로젝트 생성
lotto.html 에서 6개의 번호및 전송 버튼을 만든다.
-/lottoResult 로 치고 들어오면 LottoServelt 파일에서 랜덤숫자 6개를 생성후
입력된 숫자와 랜덤생성된 숫자를 비교한후, 맞는 숫자 틀린숫자를 뿌려준다.

@WebServlet("/lottoResult")
public class LottoSevlet extends HttpServlet {.....
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();

		int n1= Integer.valueOf(request.getParameter("n1"));
		int n2= Integer.valueOf(request.getParameter("n2"));
		int n3= Integer.valueOf(request.getParameter("n3"));
		int n4= Integer.valueOf(request.getParameter("n4"));
		int n5= Integer.valueOf(request.getParameter("n5"));
		int n6= Integer.valueOf(request.getParameter("n6"));
		
		Set<Integer> useLotto = new HashSet<>();
		useLotto.add(n1);
		useLotto.add(n2);
		useLotto.add(n3);
		useLotto.add(n4);
		useLotto.add(n5);
		useLotto.add(n6);
		
		
		Set<Integer> Lotto = new HashSet<>();

		final int COUNT = 6;

		while (Lotto.size() < COUNT) {
			Lotto.add((int) (Math.random() * 45 + 1));
		}
		
		Set<Integer> sameSet = new HashSet<>();
		Set<Integer> differSet = new HashSet<>();
		
		for (Integer useNum : useLotto) {
			for (Integer n : Lotto) {
				
				if(useNum == n)
					sameSet.add( useNum);
				else
					differSet.add(useNum);
			}
		}
			for (int n : sameSet) {
			differSet.remove(n);
		}
		
		
		out.print("<html>");
		out.print("<body>");
		out.print("당첨번호: "+Lotto+"<br>");
		out.print("맞는 숫자: "+sameSet+"<br>");
		out.print("다른 숫자: "+differSet+"<br>");
		out.print("</body>");

		out.print("</html>");
		out.close();
		
		doGet(request, response);
	}

}












0개의 댓글