전체 글

전체 글

    intelliJ에서 SpringMVC 생성하기

    intelliJ에서 SpringMVC 생성하기

    이 글은 https://nesoy.github.io/articles/2017-02/SpringMVC Nesoy 님의 흐름을 바탕으로 제가 새롭게 캡쳐해서 올린 글입니다. 이클립스는 검색하면 많이 나오기에 intellij만 정리합니다. 먼저 new project에서메이븐 프로젝트를 생성합니다 프로젝트 이름은 artifactId입니다.적당히 입력해줍니다. 컨텐트 루트를 바꾸고 싶으신 분은 바꿔줍시다. 생성됬으면 프로젝트 이름 우클을 하여 add Framework support를 선택해 줍니다. 스프링 MVC 패턴을 선택하여 진행합시다. 그러면 디렉토리 형식에 조금 변화가 있을 것입니다. 그 후 web 디렉토리 우클을 하여'views' 폴더를 하나 만들어 줍시다. 그리고 web 아래있는 index.jsp를 v..

    JSP Filter

    JSP에서 필터라는 개념을 생각해보자 필터는 당연 무엇인가를 거르는 속성이 있어야 한다. 간단한 예제코드를 보자 public class TestFilter implements Filter { public TestFilter() { } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println(">>> TestFilter::doFilter() 실행 전"); // pass the request along the filter chain chain.doFilter..

    Ajax - Asynchronous JavaScript And XML (2/2)

    Ajax - Asynchronous JavaScript And XML (2/2)

    가장 많이 사용하는 jQuery의 $.ajax 방식에 대해 알아보도록 하자 일단 코드를 짜봤다. jQuery Ajax $.ajax() 함수 ajax get ajax post 결과 출력 get방식이던, post 방식이던 디렉토리에 포함된 txt 파일 or jsp를 서버로 보내 그 결과값을 받는 형식의 코드다 이미지는 어떤 것이든 상관없고 txt파일의 내용은 이러하다 jQuery Ajax load() 함수 테스트 여기는 단락(p1)입니다... post에서 보내는 jsp 파일의 형식은 이렇게 된다. ID: ${param.id} PW: ${param.pw} 이 코드를 실행하면 이런 페이지가 뜬다. get방식을 하면 간단하다. 텍스트 정보와, 텍스트 정보에 포함된 이미지를 불러오는 코드로 인해디렉토리에 저장된 이..

    Ajax - Asynchronous JavaScript And XML (1/2)

    Ajax - Asynchronous JavaScript And XML (1/2)

    Ajax는 비동기 웹통신 방식이다. 안드로이드를 배웠다면, 안드로이드의 어싱크탱크와 유사하다고 보면 된다. 사용자가 웹에서 작업을 할 때 보통 반응이 오면 웹페이지의 형식이 바뀐다. Ajax는 이를 웹페이지 변화 없이 가능하게 한다. 예를 들어보자 이는 네이버의 회원가입 페이지이다. 아이디를 불가능하게끔 입력해보자 그러면 이런 메시지가 뜬다. 이러한 메시지는 즉시 발생하는 것이며, 웹페이지의 변화없이 발생한다. Ajax가 적용된 웹페이지 인 것이다. 회원가입하는 사용자 입장에서 틀릴 때마다 틀린 정보를 알려주면서웹을 갱신해버리면 이전에 알맞게 쓴 항목까지도 새로 써야하니 짜증이 이만저만이 아닐 것이다. Ajax는 이러한 고민을 해결해주는 훌륭한 도구이다. Ajax의 적용원리는 아래와 같다. /* Ajax..

    eclipse Web project를 intellij로 가져오기

    eclipse Web project를 intellij로 가져오기

    단순 실수로 인해 오전 내내 삽질한 것을 이리 뒤집고 저리 뒤집고 하다가 해결해서 기록한다 중간에 프로젝트가 꺼져서 다른 프로젝트로 교체도 햇으나흐름은 같다. 먼저 그냥이클립스 프로젝트를 열도록 하자(import를 해도 상관은 없다) 그러면 크고 아름다운 빨간줄이리 죽죽 그어져 있을 것이다.걱정하지 말자 곧 해결될 것이다 먼저새로 프로젝트를 열었으면 없겠지만 혹시나 class 디렉토리가 있다면 지워주도록 하자. 다시 만들어서 쓸 것이다. 우선 파일의 프로젝트 스트럭쳐에 들어간다. 모듈의 디펜던시에 들어가면빨간줄이 죽죽 그어진 참조파일들이 있을 것이다.(개발 환경에 따라 다를 수 있다. 없다면 무시해도 상관없다) 이것을 모두 없애버리고자신에게 필요한 참조파일들을 추가해주도록 하자. 난 오라클과 jstl, ..

    JSP에서 쿠키와 세션

    쿠키는 웹 사이트가 있는 서버에 의해 사용자의 컴퓨터에 저장되는 정보를 뜻한다짧은 시간 사용되는 것이 일반적인 정보데이터인데의도적으로 유효시간을 늘릴 수도 있다. 세션은 서버가 브라우저의 상태를 저장하는 웹데이터 컨테이너 같은 느낌이다.사용자가 브라우저에서 로그인한다면 일반적으로 로그인한 정보를 세션에 저장한다.그 세션의 주소값을 브라우저에게 보내주고브라우저는 그 세션의 주소값을 읽고 주기적으로 접속하여세션에 저장된 데이터를 사용한다.로그인이 계속 유지될 수 있는 이유도 그것이다. 세션의 유효시간은 서버 소프트웨어마다 차이는 있지만일반적으로 30분이다.(일반적으로 설치 시 설정이 가능하다)마지막 세션 접근 시기부터 30분이 지나면 서버는세션에 접근한 데이터가 더이상 없다고 판단하고세션을 지워버린다. 사용..

    intellij에서 JSTL 에러

    JSTL을 배우고 이클립스에서 할 때는 JSTL의 작성에 필요한이 두 라이브러리 파일을 lib에 추가하고 이 코드를 사용 jsp의 헤더 사이에 끼워만 주면 바로 사용이 가능했다.(사실 안끼워주어도 되긴 할 것이다.) intellij에서도 HTML 파일 내에서만 JSTL을 사용할 경우 project structure의 modules에 라이브러리 파일을 추가해주는 것만으로별 문제 없이 사용이 가능했다 하지만 아파치 톰캣 등 서버 환경을 이용할 때 문제가 생겼다 서버를 사용하는 개발 환경에서는 프로젝트의 라이브러리에 추가해주는 것만으로는 라이브러리 참조를 빌려오지 못하는 듯 HTTP Status 500 - The absolute uri: http://java.sun.com/jsp/jstl/core cannot..

    MVC Model2 패턴 / 간이 게시판 제작 기록 (4/4)

    마지막으로 검색 방법에 대해 다루도록 하겠다 사실 여지껏 한 페이지 만들기에는 회원 테이블, 정보조회도 들어가있지만 게시글 조회와 거의 99% 똑같다 걍 빼도록 한다. 먼저 게시글 검색의 형태이다 코드는 이런 형태가 된다. 작성자 글제목 글제목 + 내용 보통 검색페이지는 작성자, 글 제목, 글제목과 내용으로 분류된다 때문에 이러한 방식으로 구성하였고 board-search 서블릿의 doGet이 받아서처리할 수 있게끔 form을 구성해준다 private BoardService boardService; public BoardSearchServlet() { super(); boardService = BoardServiceImple.getInstance(); } protected void doGet(HttpSe..

    MVC Model2 패턴 / 간이 게시판 제작 기록 (3/4)

    이 페이지에서는 수정과 삭제를 다루도록 하겠다. 게시글 추가가 가능했다면 수정 기능도 거의 비슷하다 먼저 수정 jsp에 접근할 공간을 찾아보자게시글을 수정한다면, 게시글을 표현해주는 구체적인 페이지가 좋겠고그 페이지는 상세 페이지가 좋을 것이다. 상세 페이지의 코드는 생략하도록 한다. SQL 코드의 차이를 제외하면 조회 코드와 거의 유사하다. 수정 페이지는 대략 이런페이지로 구성되어있다.. 수정 버튼을 클릭하게 되면 이러한 구체적인 페이지로 넘어가게끔 한다. 제목과 내용 항목은 모두 readonly 형태로 구성한다 작성시간은 자동으로 수정될 것이며제목과 내용 이외의 항목이 수정되는 것은 너무나 부자연스럽다. 이젠 jsp를 살펴보자상세페이지에서 버튼을 만들어준다.게시글 수정 게시글을 수정했을 시 컨트롤러를..

    MVC Model2 패턴 / 간이 게시판 제작 기록 (2/4)

    본격적으로 게시판을 만들 것이다. 먼저 논리의 흐름대로 만들 것이다. 먼저 데이터베이스에 들어있는 자료를 뽑아오는 조회 클래스를 만들도록 하자. private BoardService boardService; public BoardMainServlet() { super(); boardService = BoardServiceImple.getInstance(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("BoardMainServlet::doGet() 호출"); // 게시글 전체 검색 List list = ..

    MVC Model2 패턴 / 간이 게시판 제작 기록 (1/4)

    이 페이지에서는 mvc 모델2 패턴을 이용하여데이터베이스와 연동하여 간이 게시판을 만들것이다. 필요한 개발 환경은 오라클 데이터베이스개발 툴(이클립스 또는 intellij 등)아파치 톰캣과 같은 서버 구현 환경이다 게시판이라고 부르기도 민망한 수준이지만어느 게시판이나 뼈대는 이와 유사할 것이라고 생각한다. 이러한 방식으로 만들 것이다.(모델은 화살표로 표시하면 너무 번잡해질 것 같아서 뺏다) 웹 프로젝트는 이렇게 된다. 1 은 먼저 컨트롤러이다. doGet과 doPost를 이용해유저에게 적당한 jsp로 연결시켜주는 역할을 한다. 2는 모델 클래스이다.게시판에 필요한 게시글 번호, 이름, 내용, 유저아이디, 게시날짜를 모델화한 클래스이다. 3은 서비스 인터페이스와, 그를 구현한 클래스이다.이 페이지에서는 ..

    Oracle SQL Database developer 12c 계정 생성

    11g와 달라서 2시간 동안 빅엿을 먹었기에 계정 생성 시행착오를 여기에 기록한다 상태: 실패 -테스트 실패: Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 처음에는 이 에러가 뜰 것이다. 이 에러는 ready 상태가 아닌 SID를 사용했기에 발생하는 오류이다. ctrl + r + cmd + lsnrctl services 를 한다 여기서 상태:ready인 sid를 이용하면 해결된다. 난 scott을 사용하기로 했다. 이걸 바꿔주면 앞으로 java상의 모든 코드의 sql문은 이 주소로 사용해줘야 한다. O..

    MVC Model1 패턴을 적용한 JDBC 접근 방법 정리

    이 페이지에서는 JSP 에서 오라클을 활용한 MVC Model1 패턴의 활용 방법에 대해서 정리하고자 한다 오라클을 활용하기 위해선 당연하게도Oracle Developer가 필요하다. 미리 설치해두도록 하자. 그 후 잔세팅(검색을 활용하자)을 끝낸다 가장 먼저 할일은 오라클 데이터베이스의 라이브러리를 가져오는 일이다.오라클 데이터베이스의 라이브러리는 오라클 데이터베이스 설치 폴더에서 찾을 수 있다, 기본 설치경로는 위와 같을 것이다.각자 맞는 버전의 jar 파일을 가져오면 된다.나는 ojdbc6_g.jar를 가져왔다, 이클립스의 경우 이 경로에 복사 붙여넣기만 해도큰 문제없이 라이브러리를 가져와 참조할 수 있다. 근데 intellij idea 의 경우이게 안된다. 이렇듯 라이브러리를 참조하지 못해서 모든..

    JSTL 정리 (2/2)

    여기서부터는 다국어 내용을 처리하는 부분이다. core 선언 이외에 별도의 선언이 필요하다. fmt을 선언한뒤 URL을 가져온다. 1. 코딩 JSTL 태그 submit 결과 표시 이름: ${param.userName} 1. 결과 간단한 출력코드이나fmt:requestEncoding 을 이용하여 인코딩을 해주었다. 2. 코딩 JSTL 태그 2. 결과 통화나 숫자, 백분률을 표현할 때 필요한 코드이다. 3. 코딩 JSTL 태그 ${now} 3. 결과 시간을 표시하는 메소드이다.pattern을 통해 형식도 설정 해주는 것이 가능하다.형식은 자바의 date 함수와 같은 것으로 보인다. 4. 코딩 JSTL <f..

    JSTL 정리 (1/2)

    JSTL을 사용하기 위해서는 먼저 jar 파일 다운로드가 필요하다. https://tomcat.apache.org/download-taglibs.cgi 링크의 하단에 impl 과 spec의 jar 파일 두개만 다운받으면 된다. 그 후 WEB-INF 파일 아래 Lib 디렉토리를 생성후복사 붙여넣기를 한다 이클립스의 경우 이러한 과정만으로도 JSTL 코드를 사용할 수 있지만intellij idea의 경우 따로 모듈에서 라이브러리를 추가해줘야 한다. 파일의 project structure를 클릭 후 모듈(modules) 페이지에서 라이브러리 추가 버튼을 누른 뒤Lib 경로의 jar 파일을 추가해준다 이 과정이 끝나면 JSTL를 사용할 준비는 끝났다. jsp 페이지에서 위의 방식처럼 입력을 완료해주면 모든 준비..

    JSP에서 내장객체

    JSP 내장 객체: JSP가 컴파일되서 변환된 서블릿 클래스의 _jspService() 메소드가 갖고 있는 변수들request: 클라이언트가 보낸 요청(request)에 대한 정보를 갖고 있는 객체response: 서버가 클라이언트로 보내는 응답(response) 정보를 갖고 있는 객체pageContext: 브라우저에서 보이는 현재 페이지session: 상태 유지 관리를 위한(session) 정보application: 서블릿의 context 정보config: 서블릿의 설정 정보out: 클라이언트로 보내는 문자열을 쓰기 위한 출력 스트림page: page 내부 객체는 JSP 페이지 그 자체를 나타내는 객체exception: exception 내장 객체는 JSP 페이지에서 예외가 발생하였을 경우 예외를 처리..

    IntellJ idea에서 hot swapping 설정하기

    IntellJ idea에서 hot swapping 설정하기

    이클립스를 사용할 때는 몰랐는데intellij idea를 사용하다보니 파일을 수정 후에 새로고침만으로는 업뎃이 안되고 서버를 껏다 다시 켜야되더라재기동이 10초 정도라도 기다리는게 너무 귀찮다 그래서 찾아보니 hot swapping이라는게 있다. JRebel을 이용하는 사람도 있는 모양이지만 상용 소프트웨어다 저렴한 도구를 사용하도록 하자 spring-loaded 라는 jar 파일을 VM 옵션에 추가해줌으로서 서버 재기동 없이 업뎃이 가능해진다. 내부 동작은 잘 모르겠지만 상당히 편한 도구임에는 틀림없다. 먼저 http://mvnrepository.com/artifact/org.springframework/springloaded/1.2.7.RELEASE 해당링크에서 다운을 받고 적당한 폴더에 저장한다. ..