[2023.12.01] 개발자 교육 50일 차 : 강의-서블릿&JSP 실습 [구디 아카데미]

DaramGee·2023년 12월 1일
0

오늘 정리

JSP와 서블릿은? Java 서버 측에서 사용하는 기술로, JSP는 HTML 태그 안에 Java 코드를 작성하여 서버에서 쉽게 Java 코드를 실행하는 방법이며, 서블릿은 Control 역할을 수행하여 요청 정보를 관리하고 응답을 관리합니다.

forward는? 서블릿이나 JSP에서 다른 서블릿이나 JSP로 제어를 이동시키는 것이고, redirect는? 다른 URL로 이동하는 것이다.

강의 내용

[JSP&서블릿 함께 사용하는 것 이해하기]

✔서블릿이 뭐지?

서블릿은 단독으로 사용하는 것 보다 HTML이나 JSP 페이지와 같이 사용 多(JSP가 View)

서블릿만 사용하면, html 태그들 한 줄 한 줄 다 println 하는거야??? no way… 😅JSP 반드시 필요하다

서블릿은 Control!!

📌주요 포인트

  • 서블릿 클래스는 HttpServlet을 상속받는다
  • 기본 메소드 doGet, doPost with throws IOException
  • HttpServletRequest에서 요청 정보 관리(파라미터 값으로 전달된 정보 관리)
  • HttpServletResponse에서 응답을 관리
  • 어노테이션 @WebServlet(공개주소) → 😽톰캣이 해당 경로로 찾아서 실행해준다.(또는 WEB-INF폴더에 xml 파일에 태그 생성)
  • 주요 기본처리 코드
response.setContentType(유형);
request.setCharacterEncoding(인코딩 이름);
response.setCharacterEncoding(인코딩 이름);
PrintWriter out = response.getWriter();

✔JSP는 뭐지?

Java Server Pages로 HTML 태그 안에 Java 코드를 작성 → 서버에서 쉽게 Java코드를 실행하는 방법

📌주요 포인트

  • JSP 태그
선언문(디클러레이션=Declaration)
<%! 
전변, 메소드 선언 자리, 인스턴스화 못 함
플랫폼 독립적이어서 서버마다 자바 클래스 이름의 명명규칙 다름 
공통코드, DB 연동하는 코드, 재사용성 고려한 메소드라면 XXX.java 
%>

스크립트릿(=Scriptlet)
<%
자바코드 입력하는 공간
지역변수 : service()코드가 생성되니까 메소드 안에서 선언한 변수이니까 
%>

표현식(익스프레션=Expression)
메소드 영역에서 사용하는 출력구문 
페이지 지시문
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

java코드 실행 부분
<%= java.util.Calendar.getInstance().getTime() %>

✔JSP & Servlet 활용하여 데이터 전송하기!

  • JSP에 전달하고 결과를 forward하여 표시 ⇒ URL 주소 변경 x

forward를 사용하여 결과를 JSP에 표시, 서블릿에서 화면의 표시 할 필요 x

doGet or doPost로 값을 얻어 forward 메소드로 포워드하기

변수 = "HttpServletRequest".getAttribute(이름);
RequestDispatcher dispatcher = app.getRequestDispatcher("/ hello.jsp");
try {
    dispatcher.forward(request, response);
} catch (ServletException e) {
    out.println(e);
}
  • redirect를 이용하여 결과를 표시 ⇒ URL 주소 변경 o

forward 보다 더 쉽게 사용 가능, 아래와 같이 메소드를 호출 how? 세션!!

"HttpServletRequest".sendRedirect(리다이렉트 주소); 
HttpSession session = request.getSession();
session.setAttribute("input", param);
session.setAttribute("result", result);
<% = session.getAttribute ( "result") %>
<% = session.getAttribute ( "input") %>

[JSP 스크립트 종류]

선언문(디클러레이션=Declaration)
<%! 
전변, 메소드 선언 자리, 인스턴스화 못 함
플랫폼 독립적이어서 서버마다 자바 클래스 이름의 명명규칙 다름 
공통코드, DB 연동하는 코드, 재사용성 고려한 메소드라면 XXX.java 
%>

스크립트릿(=Scriptlet)
<%
자바코드 입력하는 공간
지역변수 : service()코드가 생성되니까 메소드 안에서 선언한 변수이니까 
%>

표현식(익스프레션=Expression)
메소드 영역에서 사용하는 출력구문 

오라클 데이터를 JSP로 띄워보기(아래 프로시저)

🤔how?? 주요 포인트
클라이언트의 요청으로 인한 서버의 진행 흐름에 대한 전체적인 이해 필요

  • 스프링 작업
    • testList.jsp 파일(HTML 안의 JAVA 코드)
    • TestServlet.java 파일 : doGet() 메소드가 있는 클래스, View 계층과 연결되는 지점
  • 프로그램 구성
    • TestDao.java 파일 : DB의 프로시저가 저장되어있는 클래스
    • com/mybatis/MapperConfig.xml : 오라클 연동 관련 설정 파일 with MyBatis
      • MyBatis 작동 순서
    • com/mybatis/mapper/test.xml : 오라클 및 사용자 정의 프로시저 저장 파일(login1, empcursor, currentTime)
    • com.example.demo.ch5/TestServlet.java : 해당 프로시저 실행 테스트 클래스 with doPost()
  • 완료 후 포스트맨에 등록 (서블릿 230918, 프로시저 테스트)

에러코드
200 : 오케이
302 : 한 번 요청한 url get 방식으로 또 요청했을 때 - 서버까지 전달 x
404 에러 : url 오타, 경로 오류
405 에러 : Restful API 메소드 이름 오타
500 : Exception, 런타임에러, 반드시 트러블 슈팅 해야함.


[My Gym 실습]

  • 카카오지도 API 활용
  • 프로그램 클래스 구성
    • gym.jsp : 전체적인 페이지 구성, & 카카오맵 API 구현(with 현재위치 찾기 함수) & footer, header 배치
    • gym_footer.jsp : copy write 부분
    • gym_header.jsp : 내비게이션 바 with 부트스트랩(내비게이션 바)
    • bootstrap_common.jsp : 부트스트랩 스크립트 참조 클래스
    • main.css : 화면구현 관련 css 설정 모음

강의 마무리

  • CRUD 해보기
  • 게시판 or 라이브러리 활용하여 프로젝트 해보기!! → 성장속도 높여보기 🌱 🌳

0개의 댓글