전체 글

전체 글

    [Eclipse] 웹 프로젝트 생성 (dynamic web project) (feat.JSP & Servlet)

    [Eclipse] 웹 프로젝트 생성 (dynamic web project) (feat.JSP & Servlet)

    📌웹 프로젝트 생성하기 💡JSP 1. 그림과 같이 Project Explorer 뷰에서 마우스 우측 버튼 클릭한 후 차례대로 선택해준다. 2. Project name을 각자 지정하고 ( ex) JspProject ) [Finish] 버튼을 클릭한다. 2-1. 만약 Project 생성 후에 WebContent 폴더가 있는 경우 2-1번은 스킵해도 된다. (WebContent 안보이는 경우) 2번 이미지에서 [Next] 클릭해준다. 그리고 [Next]로 넘기다가 ContentDirectory 입력 칸에 WebContent를 넣어주면된다. 3. [WebContent] > [New] > [JSP File] > File Name : Test로 생성 4. 생성된 Test.jsp 에서 " " 사이에 "테스트" 문자열..

    Spring 스프링(Spring) 설치하기 (feat. Eclipse)

    📌스프링(Spring) 이클립스에 설치하기 1. [이클립스(Eclipse)] 실행 > 상단에 있는 [Help] 클릭 > [Eclipse Marketplace] 클릭 2. [sts] 검색 > 아래 빨간 네모 박스 설치 Spring Tools 3과 아래에 있는 Spring Tools 4의 차이점은 무엇일까? Spring Tools 4은 Spring Boot만 존재한다. 때문에 나는 Spring을 배우는 입장이니 Spring Tools 3을 설치하였다. 3. [Confirm]을 눌러 설치하여 동의하고 [Finish]를 누른다. 4. [Select All] 클릭 > [Trust Selected] 클릭 5. 다 설치되면 [Restart Now] 클릭 하여 Eclipse 다시 시작 📌스프링(Spring) 프로젝트 ..

    Spring AOP(Aspect Oriented Programming) (+AOP 실습)

    Spring AOP(Aspect Oriented Programming) (+AOP 실습)

    AOP: 관점 지향 프로그래 AOP:Aspect Orented Programming는 관점 지향 프로그래밍이라고 말하는데 여기서 관점이란 관심사라는 말로 쓰인다. 이러한 관심사의 예로는 프로그램의 실행 시간이 얼마인지 측정하거나 트랜잭션을 적용하는 것 등이 있다. 이러한 관심사들은 '핵심 로직'은 아니지만, 코드를 완전하게 만들기 위해서는 필요한 것들이다. 과거에는 핵심 로직(비즈니스 로직)을 구현하면서 내부에 필요한 관심사를 두어 처리하는 방식을 사용했다면 AOP는 과거 개발자가 작성했던 '관심사 + 핵심로직(비즈니스 로직)'을 분리해서 별도의 코드로 작성하도록 하고(관심사의 분리) 실행할 때 이를 결합하는 방식으로 접근하였다. 관심사와 핵심로직은 코드를 컴파일 혹은 실행 시점에 결합이 된다. 실제 실..

    [Java] SOLID: 객체 지향 설계 5원칙

    📌SOLID: 객체 지향 설계 5원칙 https://yeo-computerclass.tistory.com/246 [Java] 객체 지향(OOP)의 4대 특성 📌객체 지향(OOP)의 4대 특성 캡슐화: 정보 은닉 상속: 재사용 추상화: 모델링 다형성: 사용 편의 💡추상화: 모델링 추상이란? 나에게 추상적이란 뜻은 구체적의 반대. 즉, 구체성이 없어서 무언 yeo-computerclass.tistory.com 바로 전의 객체 지향(OOP)의 4대 특성에 대해 설명을 하였다. 객체 지향의 4대 특성을 올바르게 사용하는 방법, 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 원칙이 있다. 그것이 바로 객체 지향 설계 5원칙이며 5가지 원칙의 앞머리 알파벳을 따서 SOLID라 한다. SRP(..

    [Java] 객체 지향(OOP)의 4대 특성

    📌객체 지향(OOP)의 4대 특성 캡슐화: 정보 은닉 상속: 재사용 추상화: 모델링 다형성: 사용 편의 💡추상화: 모델링 추상이란? 나에게 추상적이란 뜻은 구체적의 반대. 즉, 구체성이 없어서 무언가로 표현하기 어려운 것이라는 뜻으로 받아들였다. 나처럼 추상적이란 정의를 이런 뜻으로 받아들이고 있으면 추상화란 의미를 이해하기 힘들 것이다. 정의를 다시 살펴보도록 하겠다. 추상이란 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용이다. 여기서 공통되는 특성이나 속성 따위를 추출한다는 말에 주목을 하여야 한다. 왜 피카소의 그림을 추상화라 부르고 수학이 추상적인 학문이라 할까? 피카소의 추상화 경우, 눈에 보이는 그대로의 모습이 아닌 작가가 마음속에 느껴지는 그 사람의 특징을..

    [Java] 프로그램 메모리 저장 방식

    [Java] 프로그램 메모리 저장 방식

    📌프로그램이 메모리 사용하는 방식 데이터 저장 영역 = 스태틱 영역 + 스택 영역 + 힙 영역 💡main 메소드 실행될 때 데이터 저장 영역 JRE는 프로그램안에 main() 메소드가 있나 확인한다. main() 메소드 존재가 확인되면 JVM에 전원을 넣어 부팅한다. JVM은 목적 파일을 받아 목적 파일을 실행한다. JVM은 java.lang 패키지를 데이터 영역의 스태틱 영역에 가져다 놓는다. 개발자가 작성한 모든 클래스와 import 패키지를 스태틱 영역에 가져다 놓는다. main() 메소드 구동 위해 스택 프레임이 스택 영역에 할당된다. 정확히 말하면 클래스 정의를 시작하는 중괄호를 제외한 모든 여는 중괄호를 만날 때마다 스택 프레임이 하나씩 스택 영역에 할당된다. 메소드의 인자를 저장할 변수 공간..

    MyBatis 동적 SQL 사용 (예시. 항목 별 정렬)

    MyBatis 동적 SQL 사용 (예시. 항목 별 정렬)

    동적 SQL 필요성 MyBatis의 동적 SQL 기능 --1 select * from board; --2 select * from board where title = 'winter'; --3 select * from board where title = 'winter' and content = 'summer'; 위 쿼리 세 개는 게시판에서 SELECT문을 사용하여 데이터를 추출하고 있습니다. 위 세 쿼리들은 조건절만 다르기 때문에 MyBatis의 동적 SQL 기능을 사용하면 세 개의 SQL문을 한 개의 SQL문으로 구현이 가능합니다. 태그 SQL 문 SQL 문 태그 사용법 SQL 문 예제 --예제1 SELECT * FROM board title = #{title} and content = #{content..

    [mybatis] mybatis 설정 파일

    📌mybatis 설정 파일 mybatis 프레임워크 자체 커넥션풀(Connection Pool)을 구축할 수 있다. 여러 개의 DB 연결 정보를 설정해 두고 실행 상황(운영, 개발 등)에 따라 사용할 DB를 지정할 수 있다. 실행 성능을 높이기 위해 SELECT 결과를 캐싱해 둘 수 있다. SQL 맵퍼 파일에서 사용할 값 객체(VO)에 대해 별칭을 부여할 수 있다. 바로 이런 mybatis 프레임워크의 동작 환경을 설정하는 파일이 바로 mybatis 설정 파일이다. 💡 루트 엘리먼트 mybatis 설정 파일의 루트 엘리먼트는 configuration 이다. configuration의 자식 엘리먼트 엘리먼트 용도 properties 프로퍼티 파일이 있는 경로 설정 를 사용하여 개별 프로퍼티 정의도 가능하다..

    [mybatis] SQL mapper(맵퍼) 파일

    mybatis의 가장 중요한 목적 중 하나는 DAO로부터 SQL 문을 분리하는 것이다. 이렇게 분리된 SQL문은 SqlSession에서 사용한다. 다음 코드는 전 포스팅에 작성한 SQL 맵퍼 파일이다. 📌SQL mapper MySqlProjectDao.xml select PNO, PNAME, STA_DATE, END_DATE, STATE from PROJECTS order by PNO desc insert into PROJECTS(PNAME,CONTENT,STA_DATE,END_DATE,STATE,CRE_DATE,TAGS) values (#{title},#{content},#{startDate},#{endDate},0,now(),#{tags}) select PNO, PNAME, CONTENT, STA_D..

    [mybatis] mybatis 적용

    [mybatis] mybatis 적용

    https://yeo-computerclass.tistory.com/231 [JSP & Servlet] 프로젝트 관리 글을 작성하면서 DataBinding 하는 부분은 빼고 작성하도록 하겠다. 이 부분은 작성하지 않아도 코드를 수정하여 충분히 구현할 수 있을 것이라 본다. 📌테이블 생성 멤버(Members) 테이블 CREATE TABLE m yeo-computerclass.tistory.com JSP & Servlet으로 구현한 프로젝트 관리에 mybatis를 적용해보도록 하겠다. 📌mybatis 흐름도 위 프로젝트 관리에서 mybatis를 이용하여 프로젝트 목록을 가져오는 흐름을 설명하도록 하겠다. 아래에 계속 설명을 보다가 이해를 돕기 위해서 mybatis 흐름도를 계속 보길 바란다. MySqlPro..

    [mybatis] mybatis(마이바티스)란? (mybatis 환경세팅)

    [mybatis] mybatis(마이바티스)란? (mybatis 환경세팅)

    mybatis란? mybatis는 JDBC 프로그래밍을 단순화하기 위해 만들어졌다. mybatis의 핵심 개발과 유지보수가 쉽도록 소스 코드에 박혀있는 SQL을 별도의 파일로 분리하는 것이다. 단순하고 반복적인 JDBC 코드를 캡슐화하여 데이터베이스 프로그래밍을 간결하게 만드는 것이다. ▶ProjectDao.java try { connection = ds.getConnection(); stmt = connection.prepareStatement("UPDATE PROJECTS SET " + " PNAME=?," + " CONTENT=?," + " STA_DATE=?," + " END_DATE=?," + " STATE=?," + " TAGS=?" + " WHERE PNO=?"); stmt.setString..

    퍼시스턴스 프레임워크(Persistence Framework)란?

    📌퍼시스턴스 프레임워크(Persistence Framework)란? 자세한 설명에 앞서 단도직입적으로 말하면 퍼시스턴스 프레임워크(persistence framework)를 사용하면 직접 JDBC API를 호출하지 않고도 DB에 있는 데이터를 다룰 수 있다. 퍼시스턴스 프레임워크(persistence framework)가 JDBC API를 대신 호출해주기 때문에 개발자가 JDBC 프로그래밍으로부터 해방되게 해준다. 💡퍼시스턴스(Persistence) 퍼시스턴스(Persistence)는 데이터의 지속성을 의미한다. 즉 애플리케이션을 종료하고 다시 실행하더라도 이전에 저장한 데이터를 다시 불러올 수 있는 기술이다. 💡프레임워크(Framework) '라이브러리(Library)'가 개발에 필요한 도구들을 단순히..

    [JSP & Servlet] 프로젝트 관리

    글을 작성하면서 DataBinding 하는 부분은 빼고 작성하도록 하겠다. 이 부분은 작성하지 않아도 코드를 수정하여 충분히 구현할 수 있을 것이라 본다. 📌테이블 생성 멤버(Members) 테이블 CREATE TABLE members( mno INT PRIMARY KEY, --회원일련번호 email VARCHAR(40) NOT NULL,--이메일 pwd VARCHAR(100) NOT NULL, --암호 mname VARCHAR(50) NOT NULL,--이름 cre_date DATETIME NOT NULL,--가입일 mod_date DATETIME NOT NULL --마지막암호변경일 ) COMMENT '회원기본정보'; CREATE UNIQUE INDEX UIX_MEMBERS ON members( --회..

    필터(Filter) 사용하기

    필터(Filter)란? 필터는 서블릿 실행 전후에 어떤 작업을 하고자 할때 사용하는 기술이다. 예를 들어 서블릿이 실행되기 전 자원이 필요하다거나, 모든 각 서블릿에 한글 인코딩 , 시간 측정등과 같은 반복적으로 처리해야 하는 공통 작업을 미리 필터에서 처리하여 번거로움이 줄어든다. 필터는 용도에 따라 2 가지로 나뉜다. 요청 필터 인코딩 기능 사용자 인증 및 권한 검사 요청 시 요청 관련 로그 작업 응답 필터 서비스 시간 측정 응답 결과에 대한 암호화 작업 필터 관련 API javax.servlet.Filter init(): 필터 생성 시 컨테이너에 의해 호출되어 초기화 작업을 수행 doFilter(): 요청/응답 시 컨테이너에 의해 호출되어 기능을 수행 destory(): 필터 소멸 시 컨테이너에 의..

    요청(request) URL 정보 추출하기

    HttpServletRequest의 메소드로 URL 정보 추출 요청 URL에서 특정 정보만 추출하는 HttpServletRequest의 메소드는 다음과 같다. 메소드 설명 반환값 getRequestURL() 요청 URL 리턴(단, 매개변수 제외) http://localhost:8080/web/member/list.do getRequestURI() 서버 주소를 제외한 URL /web/member/list.do getContextPath() 웹 애플리케이션 경로 /web getServletPath() 서블릿 경로 /member/list.do getQueryString() 요청 매개변수 정보 pageNo=1&pageSize=10 사용 예) 클라이언트가 요청한 서블릿의 경로를 알고 싶으면 getServletPa..

    커넥션풀(Connection Pool) (DataSource와 JNDI) (feat. MySQL)

    커넥션풀(Connection Pool) (DataSource와 JNDI) (feat. MySQL)

    📌DB Connection Pool JDBC를 통해 연동하였을 때, 웹 클라이언트에서 요청할 때마다 DB 서버에 연결하기 위해 Connection 객체를 얻어야 한다. SQL 작업을 할 때마다 DB Connection 객체를 생성한다면, 실행 속도가 느려지고 많은 Gabage가 생성될 것이다. 실행 속도가 느려지는 이유는 Connection을 맺을 때마다 DB 서버는 사용자 인증과 권한 검사를 수행하고 요청 처리를 위한 준비 작업을 해야 하기 때문이다. 이런 문제를 해결하기 위해 DB Connection Pool이 등장하였다. DB ConnectionPool을 이용하면, 각 요청에 대해 별도의 Connection 객체를 사용하기 때문에 다른 작업에 영향을 주지 않는다. 또한 사용한 DB Connectio..

    데이터 보관소(네 가지 객체 보관소)

    데이터 보관소(네 가지 객체 보관소)

    데이터 보관소 서블릿 기술은 데이터를 공유하기 위한 방안으로 네 가지 종류의 데이터 보관소를 제공한다. 각각의 데이터 보관소는 공유 범위를 기준으로 구분된다. 자세하게 설명하기 앞서 간단한 코드로 가볍게 설명하도록 하겠다. ... ServletContext ctx = getServletContext(); HttpSession session = request.getSession(); ctx.setAttribute("context", ctxValue); session.setAttribute("session", sessValue); request.setAttribute("request", reqValue); 이와 같이 ServletContext / HttpSession / HttpServletRequest 객..

    HTTP 상태코드

    HTTP 상태코드

    📌HTTP 상태코드 소개 💡상태코드란? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다. 1xx (Informational): 요청이 수신되어 처리중 (거의 사용 안함) 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동(작업)이 필요 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 클라이언트는 상위 상태코드로 해석해서 처리한다 따라서 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 된다 ex) 299 ??? -> 2xx ..

    HTTP 메소드 활용

    HTTP 메소드 활용

    📌클라이언트에서 서버로 데이터 전송 💡데이터 전달 방식 1.쿼리 파라미터를 통한 데이터 전송 GET 주로 검색어를 넣거나 정렬 조건을 넣을때 사용한다. 2.메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 주문, 리소스 등록, 리소스 변경에 사용한다. 💡데이터 전송하는 4가지 경우 1. 정적 데이터 조회 이미지, 정적 텍스트 문서 전달 조회는 GET 사용 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능하다. 쿼리 파라미터로 추가적인 데이터 전달 없이 경로만 넣으면 그냥 이미지 리소스를 만들어서 보내준다. 2. 동적 데이터 조회 주로 검색, 게시판 목록에서 정렬 필터(검색어) 등에 사용한다. 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 ..

    HTTP 메소드 - GET,POST,PUT,PATCH,DELETE

    HTTP 메소드 - GET,POST,PUT,PATCH,DELETE

    HTTP 메소드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단이다. 📌GET GET 메소드는 데이터를 읽거나 검색하는 등 리소스를 조회할 때 사용한다. 그냥 단순히 리소스를 조회할 때만 사용하는 것이므로 데이터를 수정하는 연산에는 사용하면 안된다. 리소스 조회하는 메소드이기 때문에 요청시에 Body값이 비워져있다. 만약 특정 데이터를 조회하고 싶어서 GET방식에서 보낼 데이터가 있을 때에는 URL 주소에 파라미터를 붙여서 보내면 된다. 아래 [더보기]를 클릭하여 이미지를 참고하면 알 수 있듯이 데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다. 더보기 1. 클라이언트가 100번째 회원 정보 달라고 요청한다. 2. 서버는 해당하는 데이터를 가져와 응답 메시지를..

    HTTP 요청(request)/응답(response) 메시지 구조

    HTTP 요청(request)/응답(response) 메시지 구조

    📌HTTP 메시지 구조 💡요청 라인(Request-Line) HTTP 요청 메시지의 첫 라인은 메소드와 요청하는 자원, 프로토콜 버전으로 구성 된다. 메소드 요청하는 자원에 대해 웹 서버에게 내리는 명령이다. 종류로는 GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS 등이 있다. 요청 URI 요청하는 자원의 식별자이다. 즉 HTML이나 이미지, 동영상, 애플리케이션 등이 있는 가상의 경로이다. 웹 서버는 이 식별자를 사용하여 해당 자원을 찾는다. HTTP 버전 요청 정보가 어떤 버전에 맞추어 작성했는지 웹 서버에게 알려주기 위함이다. ※HTTP 요청 메시지에서 body 본문 위 이미지에서 초록색 테두리고 되어 있는 것은 요청 헤더의 끝을 표시하는 공백 라인이..

    HTTP 프록시란?

    HTTP 프록시란?

    📌프록시 서버(Proxy Server)란? 프록시 서버란 클라이언트와 서버 사이에서 통신을 중계해 주는 컴퓨터나 프로그램을 말한다. 프록시 서버의 주된 용도 중 하나는 빠른 전송을 위하여 서버의 응답 결과를 캐시에 저장해 두는 것이다. 예를 들어 클라이언트가 요청한 응답 결과를 캐시에 저장해 둔 경우 다음에 다시 요청을 하였을 때 외부 서버에 요청을 전달하지 않고 즉시 캐시에 저장된 내용을 전달하기 때문에 클라이언트는 빠른 응답 결과를 받을 수 있게 된다. 프록시 서버의 두 번째 용도는 바로 보안이다. 프록시 서버를 이용하면 외부로 전달되는 데이터를 검사하여 보안을 정도를 올릴 수 있다. 📌HTTP 모니터링 웹 브라우저와 웹 서버 사이에 주고받는 데이터를 들여다보기 위해서는 HTTP 프록시 프로그램이 필..

    HTTP 프로토콜이란?

    HTTP 프로토콜이란?

    웹 어플리케이션은 웹을 기반으로 구동되기 때문에 웹 프로그래밍을 하려면 웹 브라우저와 웹 서버 간의 통신 프로토콜을 이해해야 한다. 이 프로토콜을 HTTP(Hyper-Text Transfer Protocol)이라고 부른다. 📌HTTP(Hyper-Text Transfer Protocol) 프로토콜이란? HTTP 프로토콜은 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙이다. 우리가 웹 페이지를 불러올 때, 웹 브라우저는 HTTP 요청 형식에 따라 웹 서버에 데이터를 보낸다. 그럼 웹 서버는 웹 브라우저가 보낸 데이터를 분석하여 요청 받은 일을 처리하여 응답한다. 즉 HTTP 요청 형식에 따른 데이터를 분석하였을 때, 이미지 파일을 요청하는 것이면 해당 파일을 찾아서 보내주고, HTML 파일을 요청하면 찾아..

    [이클립스] Github(깃허브)에서 source(소스) clone(가져오기)

    [이클립스] Github(깃허브)에서 source(소스) clone(가져오기)

    📌이클립스에 Github 저장소 등록하기 1. [Window] → [Show View] →[Other...] 메뉴를 선택한다. 2.[Git] → [Git Repositories] 선택 3.[Git Repositories] 뷰 → [Clone a Git repository] 링크를 클릭한다. 4.Clone할 Github의 저장소를 입력해준다. 5.Clone할 Source Branch를 선택한다. 위 이미지는 branch가 'master' branch만 있는 이미지 입니다. 6.Clone한 파일을 저장할 폴더를 지정한다. Clone이 끝난 후 모든 파일을 Import하고 싶으면 위에 파란박스를 체크하면 됩니다. 위에 파란박스를 체크하지 않고 프로젝트를 Import하려면 아래를 마저 읽으면 된다. 📌프로젝트 ..

    [JSP & Servlet] 회원 관리 - View

    📌회원가입 뷰 페이지 joinForm.jsp 회원 가입 아이디 : 비밀번호 : 이름 : 나이 : 성별 : 남자 여자 이메일 주소 : 제출 다시 작성 📌로그인 뷰 페이지 loginForm.jsp 로그인 아이디 : 비밀번호 : 로그인 회원가입 📌회원 목록 List 뷰 페이지 MemberLisr.jsp 관리자 모드-회원 목록 ${member.MEMBER_ID} 삭제 📌회원 상세 정보 뷰 페이지 memberInfo.java 아이디 : ${member.MEMBER_ID } 비밀번호 : ${member.MEMBER_PW} 이름 : ${member.MEMBER_NAME} 나이 : ${member.MEMBER_AGE} 성별 : ${member.MEMBER_GENDER} 이메일 주소 : ${member.MEMBER_EM..

    [JSP & Servlet] 회원 관리 - Service / DAO

    📌회원가입 요청 비즈니스 로직 처리 MemberJoinService.java package service; import vo.MemberBean; import static db.JdbcUtil.*; import java.sql.Connection; import dao.MemberDAO; public class MemberJoinService { public boolean joinMember(MemberBean member) { boolean joinSuccess = false; //회원 가입 성공 여부 MemberDAO memberDAO = MemberDAO.getInstance(); Connection con = getConnection(); memberDAO.setConnection(con); int..

    [JSP & Servlet] 회원 관리 - Action

    📌Action 인터페이스 Action.java Action 인터페이스를 만들어 모든 Action 클래스들에서 execute 메소드를 정의하도록 만듦 package action; import javax.servlet.http.*; import vo.ActionForward; public interface Action { public ActionForward execute(HttpServletRequest request,HttpServletResponse response) throws Exception; } 📌회원가입 요청 MemberJoinAction.java package action; import java.io.PrintWriter; import javax.servlet.http.HttpServletR..

    [JSP & Servlet] 회원 관리 - controller

    📌컨트롤러 클래스 MemberFrontController.java 앞서 설명했듯이 모든 클라이언트의 요청을 한 컨트롤러 파일이 받아서 제어하는 FrontController 패턴을 구현할 것이다. package controller; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import action.Action; imp..

    [JSP & Servlet] 회원 관리 - 테이블 생성 및 vo(Value Object) + 기본 세팅

    뷰 페이지에서 JSTL을 사용할 것이기 때문에 라이브러리(lib)에 JSTL 라이브러리를 추가해야 한다. (하단 링크 참고) 게시판과 쇼핑몰 만들기 때와 마찬가지로 FrontController 패턴을 사용할 것이다. 이곳에서 모든 요청이 들어오면 뿌려준다. 즉, FrontController에 요청이 전송되어 오면 요청에 맞게 처리할 수 있도록 Controller(Action 클래스)를 호출하여준다. https://yeo-computerclass.tistory.com/179 📌테이블 생성 CREATE TABLE member( MEMBER_ID VARCHAR(16), MEMBER_PW VARCHAR(16), MEMBER_NAME VARCHAR(16), MEMBER_AGE INT, MEMBER_GENDER V..

    html href 속성을 이용하여 넘길 때 한글 처리

    앞서 쇼핑몰 만든 것을 봤을 때, hreft 속성을 이용하여 name 속성 값을 파라미터 방식으로 전송하는 코드를 확인할 수 있다. 이때, 정상적인 작동을 하지 않는 경우가 있다. 그 이유는 바로 한글 처리를 고려해주지 않아서이다. IE11에서 링크 방식으로 파라미터 값이 전송될 때는 자동 인코딩이 되지 않아 서버 단에서 한글 파라미터를 받으면 한글이 깨진다. 때문에 한글 처리를 위해서 다음 작업들을 해야 한다. 만약 정상적으로 작동하면 이 부분은 PASS해도 된다. Cart.java private String encodingName; public String getEncodingName(){ try{ encodingName = URLEncoder.encode(name,"UTF-8"); } catch(E..