MarkdownPad Document Controller의 리턴타입 void @responsebody Interceptor 모든 페이지마다 동일한 기능을 제어할 수 있다. 예를 들어, 사용자가 클릭을 하고 그 후에 서버가 처리하는 시간을 구할 수도 있다. 이 페이지에서 어떤 url이 인기가 제일 많은지 체크하고 싶을 때, url혹은 uri를 체크해서 db에 쌓을 수도 있다. 즉, 인터셉터는 필터가 할 수 있는 일을 다 할 수 있다. Q. 그렇다면 필터와 다른 것이 무엇인가? 바로 처리시점이다. filter의 경우 : 브라우저는 필터로 요청을 한 뒤에 서블릿으로 간다. Spring의 경우 : 브라우저는 필터로 요청을 한 뒤에(여기까지는 필터와 동일하다) spring의 dispatcher servlet이 받..
#예외 처리하기일반적으로 나는 에러들: 브라우저에서 잘못하는 에러들은 4로 시작한다(400, 403, 404, 405): 서버 에러들은 5로 시작한다(500) → Internal Server Error라고 부름.일반적으로 나는 에러들을 처리할 수 있는 페이지를 만들어준다.web.xml에 정의해주는 방법과 handler로 정의하는 방법이 있다. 1) web.xml 수정 를 400, 404, 500을 추가해준다.필수 속성들 : (1) error-code : 에러 코드(2) location : 에러 코드가 났을 때 보여줄 페이지 경로 2) jsp 생성(400.jsp, 404.jsp, 500.jsp) 3) 실행페이지의 용량이 충분하지 않으면은 IE는 404.jsp를 띄워주지 않는다.주석을 넣거나 이미지를 넣어주..
#커맨드 객체 값 검증하기검증(Validation Check)을 위해서 Annotation을 추가한다.@Email, @NotEmpty 등이 있다.@Valid 라는 Annotation을 적으면 결과를 Errors로 받을 수 있다.(반드시 @Valid와 Errors는 붙어 있어야 한다. 순서는 상관없다)errors는 자동으로 Model에 포함되어 있어서 jsp로 바로 전달이 된다. 즉, 굳이 view.addObject 해서 errors를 넣어줄 필요가 없다는 것이다.jtsl 중 core library를 선언하듯이, 라는 taglib을 적어주면 커맨드 객체 값을 검증할 수 있다.applicationContext.xml도 수정해주어야 한다. #Spring이 제공하는 주요 애노테이션 잘 사용하지 않는다.@NotN..
# login 페이지 만들기 1. RequestMapping에 로그인 추가WEB-INF/view/login/login.jsp 를 찾는다. 2. login 폴더 안에 login.jsp 만들기 # 데이터 보내기 1. ArticleController 클래스 만들기ModelAndView : 데이터를 전송시킬 수 있는 리턴 타입(cf. String 타입은 단순하게 페이지만 열어주는 역할을 함)setViewName : 어떤 페이지를 보여줄 것인지addObject : key와 value를 담아 보낼 수 있는 메서드setAttribute를 여러개 썼던 것 처럼, addObject를 여러개 쓸 수 있다. 2. list.jsp 만들기 3. applicationContext.xml에 내용 추가하기 4. url로 접속 # R..
프로젝트 생성하기 1. Dynamic Web Project 선택 2. 기존의 폴더를 지우고 아래 4개 폴더 생성 src/main/javasrc/main/resourcessrc/test/javasrc/test/resources 3. src/main/webapp으로 디렉토리 생성 4. 서블릿을 추가하기 위해서는 web.xml을 고쳐야 한다. ctrl+space를 눌러서 dispatcherServlet을 선택한다. (1) param-value applicationContext.xml는 프로젝트 위치에 저장되는 것이 아니라, 보통 D드라이브에 저장되기 때문에 src/resources/main안에 넣지 않는다. 수정을 하기 위해서는 외부로 빼두는 것이다.브라우저는 WEB-INF로 접근할 수 없다. (2) url-..
재귀호출게시판에서 메뉴를 구성할 때, 카테고리별로 보여줘야하는 경우가 있다.그때는 재귀호출을 이용하여야 한다. 유투브를 예제로 재귀호출을 실습해보자.아래 그림처럼 유투브 아래에 있는 모든 카테고리를 출력하는 코드를 짜볼 것이다. 프로젝트 구성도는 다음과 같다. Main.java123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103import java.util.ArrayList;import java.uti..
Operation History웹 페이지 안에서의 모든 기록으로, Article과 Article-Admin에 다 필요하다.Operation History는 법적인 부분에서도 근거 자료로 활용할 수 있고, 마케팅 용도로도 활용할 수 있기때문에 반드시 수집을 해두어야 한다.(네이버가 이걸 참 잘한다고....) 1. DB에 테이블을 만들자(테이블명: OPER_HIST)1)HISTORY_ID : OPER_HIST의 PK (시퀀스도 만들어주어야 한다. 시퀀스 이름 : HISTORY_ID_SEQ)2) IP : 클라이언트의 IP 주소를 담는 컬럼3) MEMBER_ID : 클라이언트의 아이디를 담는 컬럼4) CRT_DT : 클라이언트가 접속한 현재 시간을 담는 컬럼 5) URL : 클라이언트가 현재 머무르고 있는 UR..
1. 관리자용 프로젝트 생성하기 이제까지 만든 front 페이지를 그대로 가져와서 admin 쪽만 추가해줄 것이다. 그냥 그래서 위에처럼 생성할 필요없이 Article 프로젝트를 복사 붙여넣기만 하면된다. 그리고 프로젝트 우클릭 - properties - web project settings에서 아래와같이 설정하고 적용버튼을 누른다. 이제까지 만든 회원제 게시판은 아주 치명적인 점을 갖고 있다. 그것은 MEMBERS 테이블에 등록되어있는 많은 바로 관리자 아이디가 없다는 것인데, 관리자의 권한은 계정에 부여된 플래그(flag)로 결정된다. 그래서 toad를 켜서 members 테이블에 관리자인지 아닌지의 여부를 알려줄 column을 하나 추가해주어야한다. 이렇게 추가해주고 데이터를 하나 insert해준다..
이번 포스팅에서는 게시글에 댓글을 달 수 있게 만들것이다. 이렇게!!!!!! 1. 댓글 테이블 2. 댓글에 대댓글이 달릴 때를 대비한 쿼리문!!!쿼리문을 작성하기 위해서는 아래 내용을 이해해야한다. 사실이건너무어려웠당......... 1) ARTICLE_ID이 ? 인 것에 대한 댓글 리스트를 모두 가져오기 위한 쿼리문 2) PARENT_REPLY_ID 가 ? 인 것에 해당하는 댓글 갯수 3) REPLY_ID 가 ? 인 것부터 시작해서 PARENT_REPLY_ID와 REPLY_ID가 같은 것들을 순서대로 가져오기 (ORDER_NO로 내림차순 정렬하면은 가장 큰 ORDER_NO를 얻어올 수 있다) 4) REPLY_ID 가 ? 인 ORDER_NO 가져오기 이제 얘내들을 코드로 보자. ReplyVO.java12..
- Total
- Today
- Yesterday
- 뒤로가기 버튼
- 메소드
- mongo db
- 메뉴바에 버튼 생성하기
- query
- Erwin
- JSP
- mybatis
- 뉴스피드 가져오기
- 포스팅하기
- 배열
- spring
- 자바프로그래밍
- 클래스
- jQuery
- 쿼리
- Linear Layout
- Relative Layout
- ERD
- 예외처리
- aop
- er다이어그램
- activity
- 게시판 만들기
- intent
- 글쓰기 버튼
- sql
- facebook 연동
- 제이쿼리
- MVC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |