2025년 8월 13일 수요일(56일차)

Jeonghoon·2025년 8월 13일

jeonghoon's Study

목록 보기
58/128

🌍 Web 개발 절차 & 핵심 개념 정리


🚀 [ WEB 절차 ]

📁 1️⃣ 패키지 구성

구분경로설명
🧩 자바 파일src → main → java → [홈페이지명]MVC 패키지 구성 (Controller, Service, Repository 등)
📄 JSP 파일src → main → webappJSP 패키지 구성
⚙️ 기타 파일src → main → resources- static : css, js, img
- sql : 샘플 SQL
- application.properties : Spring 설정 파일

🧠 2️⃣ 기본 클래스 세팅

AppStart, Controller, Service, Dto, Repository 등 필수 구성요소 세팅


🧩 3️⃣ 공통 클래스 코드 구성

클래스명역할
SuperRepositoryDB 연결 등 공통 코드 구현 후, 일반 Repository에서 상속
DtoLombok 활용 / DB 테이블과 일치하는 구조로 작성

📜 4️⃣ API 명세서 작성

  • Controller 기반으로 작성
  • Service / Repository는 비즈니스 로직이므로 매개변수 달라도 무관

⚙️ 5️⃣ 기능 구현 단계

계층역할
DaoDB 통신
Service비즈니스 로직 구현
Controller세션 관리 및 매핑
테스트JS 연결 전 Talend API 활용

🌐 [ 프로토콜 (Protocol) ]

네트워크에서 데이터를 주고받기 위한 규약 / 규칙

프로토콜의미설명 / 비고
🧭 IPInternet Protocol네트워크 상의 컴퓨터 식별 번호
🔢 PortPort Number컴퓨터 내 프로그램 식별 번호
주요 포트: 3306(MySQL), 8080(Tomcat), 21(FTP), 53(DNS)
포트 확인: netstat -ano
🌍 DNSDomain Name ServiceIP를 사람이 이해할 수 있는 문자로 변환
IP 찾기: nslookup 도메인주소
📄 HTTPHyperText Transfer ProtocolHTML/XML 문서 통신 규약
🔒 HTTPSHTTP + SecureSSL 보안이 적용된 HTTP
📧 SMTPSimple Mail Transfer Protocol메일 전송 규약 (문자 서비스는 유료)
📁 FTPFile Transfer Protocol파일 전송 규약
🛡️ SSLSecure Sockets Layer암호화 보안 기술

🔐 [ 세션 (Session) ]

🧩 Tomcat의 세션

항목설명
💾 저장 위치Tomcat 서버 메모리
🎯 목적데이터 관리, 인증 및 권한 관리
💡 사용 예시로그인 상태, 비회원 장바구니, 사용자 설정값, 웹게임 등
🧍 특징브라우저(크롬, 엣지 등)마다 별도의 세션 객체 할당

💻 코드 예시

HttpServletRequest request;
request.getRemoteAddr();       // 클라이언트 IP 정보
request.getRemotePort();       // 클라이언트 Port 정보
request.getHeader("User-Agent"); // 브라우저 정보

HttpSession session = request.getSession();
session.getId();                  // 세션 식별번호
session.getCreationTime();        // 생성 시간 (ms)
session.getLastAccessedTime();    // 마지막 접근 시간 (ms)
session.getMaxInactiveInterval(); // 유효시간 (s)

📦 세션 속성 관리 (Map 구조)

동작코드설명
속성 추가session.setAttribute("key", value);세션에 데이터 저장
속성 가져오기session.getAttribute("key");Object 타입으로 반환

🍃 [ Lombok ]

어노테이션기능
@Data@Getter + @Setter + @ToString 등 포함

💡 스프링 빈 주입 예시

private final SampleService sampleService;

@Autowired
public MemberController(SampleService sampleService){
    this.sampleService = sampleService;
}

🔁 [ 중복검사 코드 구현 ]

  • type(속성명)과 data(속성값)를 받아 DB에서 중복 여부 검사
  • type은 SQL ?로 처리 불가 → 문자열 결합으로 직접 삽입
public boolean check(String type, String data){
    try {
        String SQL = "select * from member where " + type + " = ? ";
        PreparedStatement ps = conn.prepareStatement(SQL);
        ps.setString(1, data);
        ResultSet rs = ps.executeQuery();
        if (rs.next()) {
            // 중복이면 true
            return true;
        }
    } catch (SQLException e) {
        System.out.println(e);
    }
    // 중복이 아니면 false
    return false;
}

0개의 댓글