전체 글
<c:out>을 사용하는 이유
jsp를 이용해서 뷰페이지를 작성하는 와중 ${} 앞에 이 들어가는 이유가 궁금해졌다.넣지않고 코드를 작성해도 그대로 동작하는데 왜 사용하는 것 일까? 이유는, 보안성 관련이 크다 정보처리기사시험에서 본 XXS(Cross site Scripting) 크로스 사이트 스크랩핑 이라는 웹사이트에 스크립트 코드를 주입시켜서 웹사이트를 공격하는 방법인데, html코드를 해석하지 않게 만들어 방어하기위해 c:out을 사용하는 것이였다. 이게 무슨뜻이냐면 게시판을 구현해서 게시판에 글을 등록할때, 제목에 안녕하세요 를 작성할때 이런식으로 js를 넣으면 자바스크립트 코드가 실행된다.. 그래서 출력 문자열에 HTML 특수문자(예: , &, ' 또는 ") 포함되어 있을 경우 HTML을 해석하지 않고 그대로 출력되도록 해준..
UriComponents과 URLEncoding
UriComponents클래스는 Path나 query에 해당하는 문자열들을 추가해서 원하는 URI를 생성할 때 사용한다. UriComponents uricomponets = UriComponentsBuilder.newInstance().path("/board/read").queryParam("bno",12).queryParam("perPageNum", 20).build(); 다음과 같이 지정하게 되면, /board/read?bno=12&perPageNum=20 로 url이 조합된다. url 뒤의 ? & % 와 같은 것은 따로 설명하도록 하겠다. //UriEncoding public String makeSearch(int page) { UriComponents uriComponents = UriCompon..
MYBATIS에서 include문 사용법
SELECT BNO, TITLE, CONTENT, WRITER, REGDATE FROM ( SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, ROW_NUMBER() OVER(ORDER BY BNO DESC) AS RNUM FROM MP_BOARD WHERE 1=1 ) MP WHERE RNUM BETWEEN #{rowStart} AND #{rowEnd} ORDER BY BNO DESC SELECT COUNT(BNO) FROM MP_BOARD WHERE 1=1 AND BNO > 0 AND TITLE LIKE '%' || #{keyword} || '%' AND CONTENT LIKE '%' || #{keyword} || '%' AND WRITER LIKE '%' || #{keyw..
getter,setter를 사용하는 이유와 객체의 부품화 (in VO,DTO)
문득 getter,setter 제네레이터를 통해 VO,DTO를 만들고 왜 이렇게 사용할까?하는 생각이 들었다. getter ,setter를 만드는건 제네레이터가 해주기 때문에 쉽게 만들 수 있고 값을 받아오고 입력해줘서 DB와 DAO를 연결해준다는 느낌으로 사용하고 있었다. 일단 getter,setter를 사용하는 이유는 클래스의 필드에 직접 접근하는걸 막기 위해서다. 자바는 고수준(High Level)의 언어인데, 고수준이라는것은 개발자들이 어떤 이론의 밑바닥까지 알 필요가 없다는 것을 의미한다. JAVA를 이용해서 네트워크 통신을 할때 http나 패킷에 대한 것을 몰라도 개발은 할 수 있다. 자세한 것들은 JAVA가 제공하는 클래스들이 알아서 하기 때문에, 개발자는 좀 더 자유롭게 자신이 원하는 기능..
페이징- 서브쿼리,ROW-NUMBER()를 이용한 쿼리작성
SELECT BNO, TITLE, CONTENT, WRITER, REGDATE FROM ( SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, ROW_NUMBER() OVER(ORDER BY BNO DESC) AS RNUM FROM MP_BOARD ) WHERE RNUM BETWEEN #{rowStart} AND #{rowEnd} ORDER BY BNO DESC 서브쿼리를 이용해서 페이징을 하는 부분의 쿼리이다. BNO(기본키) , 제목 , 내용 , 작성자 , 작성일 을 검색해오는 쿼리 SELECT BNO, TITLE, CONTENT, WRITER, REGDATE FROM 에서 다음부분의 ( SELECT BNO, TITLE, CONTENT, WRITER, REGDATE, RO..
[MYBATIS]selectList와 selectOne
스프링에서 게시판 목록구현과 게시판의 제목을 누르면 내용을 볼 수 있는 상세보기 기능을 구현하는데에 사용하는 selectList와 selectOne, List selectList(query_id) id에 대한 select문을 실행한 후 레코드를 List로 반환한다. List selectList(query_id, '조건') id에 대한 select문을 실행하면서 조건(쿼리문에서 사용할 인자)를 전달한다. selectOne(query_id) id에 대한 select문을 실행한 후 한개의 레코드를 지정한 타입으로 반환한다. selectOne(query_id, '조건') id에 대한 select문을 실행하면서 조건(쿼리문에서 사용할 인자)를 전달한다. selectOne 예제 (게시판 상세보기) boardMapp..
오라클 계정만들기,sid 확인
계정만들기 1.cmd 창에서 sqlplus "/as sysdba"라고 입력한다 2.create user 계정명 identified by 비밀번호 입력 2! 공통사용자 또는 롤 이름이 부적합 합니다가 나오면 계정명 앞에 C##을 붙여준다오라클 12c버전 이후로는 이렇게 네이밍 하도록 바뀜 3. grant connect, resource, dba to 계정명생성한 계정에 dba 권한 부여(관리자 권한) 4.sql plus에서 로그인해보면 계정이 생성된 것을 알 수 있다 sid 확인 1.오라클 데이타베이스명을 확인하는 방법 SELECT NAME, DB_UNIQUE_NAME FROM v$database; 2. 오라클 SID를 확인하는 방법 SELECT instance FROM v$thread; (스프링)JDBC..
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap 서버 구동 에러
자바 버전 변경시 나는 에러, 진짜 이거 때문에 오전공부 시간을 다 날려버렸다..ㅜ 이클립스 최신화 후 원래 사용하던 jdk1.8은 이제 사용 불가이고 11버전부터 지원을 한다고 해서 11버전을 사용하려고 pom을 바꾸니 저 에러가 났다 이클립스도 지우고 새로받고... 구글링을 해서 톰캣 bin에 들어가서 startup도 해보고.. maven 업데이트도 해보고.. 별짓을 다해도 안됐다.. 결국 해결방법은 자바변경방법을 구글링해서 알아낸 방법이였다. preference - java - installed JREs에서 add 후 설치한 jdk를 추가해줘야 하는 것이 였다. 컴퓨터엔 설치했으나 이클립스에도 이 jdk를 설치했다고 알려줘야 한다는 것이다.. 자꾸 에러가 나고 1.8버전으로 바뀌고 짜증났는데 이걸 ..
cvc-id.3: A field of identity constraint 'web-app-filter-name-uniqueness' matched element 'web-app', but this element does not have a simple type. //이클립스 web.xml에러
web.xml file error: Referenced file contains errors, cvc-id.3: A field of identity constraint - Programmer Sought web.xml file error: Referenced file contains errors, cvc-id.3: A field of identity constraint - Programmer Sought web.xml file error: Referenced file contains errors, cvc-id.3: A field of identity constraint tags: web project Profiles Introduction: import maven project, web.xml repor..
AOP를 이용한 트랜잭션 구현 중 트랜잭션이 먹지 않는 현상과 메모리누수경고(Memory leak)=(톰캣구동안됨) 404에러 해결
메모리누수 경고가 나오며 톰캣 구동이 안되고 서버가 실행이 안되니 당연히 404에러가 나왔다. 처음엔 서버문제인지 몰랐으나 404에러가 뜰 때 특정 페이지로 가게 예외처리를 해놨는데 404에러 페이지로 가게 된 것을 눈치채고 서버오류인지 확인. 에러 목록을 살펴보니 cglib를 깔으란다. pom.xml 에 cglib 추가로 해결. cglib cglib 3.1 오류의 이유를 찾으려했으나 맞는 증상이 없고 스택오버플로우와 깃허브를 힘들게 눈번역해본 결과 내가 사용하는 이클립스 버전이 좀 낮은데 그래서 스프링버전이 낮다..그로인해 생긴 버그같다. 높은 버전의 스프링에선 이 문제를 찾아볼 수 없다.. 해결 후 로그를 확인해보니 at net.sf.cglib.proxy.MethodProxy.invoke(Method..