ajax팝업띄우는거 대체
게시판
컨트롤러랑 어떻게 처리하는지
동기방식 비동기방식
ajax쓰는 이유
데이터가 계속 바뀜 (지도 줌)
뉴스 화면이 계속 업데이트
새로고침으로 갱신하지 않고 해당 부분만 ajax통신이 계속들어가서 바꿔치기하는 것
jquery라이브러리배치해서 사용 - jquery로 ajax통신 하는 것 jquery안에 있는 통신 기법 중 하나~~
관련 메서드 (jquery는 메서드의 묶음)
$.ajax()
마임타입 : 자바든 뭐든 웹개발할 때 통용적으로 쓰는 것 (모질라에 상세 설명 있음)
구조
파일업로드(전송)할때 멀티파트 타입 지정해야
서버에 요청보낼때 일반적으로 text방식으로 넘어감
객체를 감고 보내주려면 다른 형태의 파일이 필요함. 문자도 숫자도 배열도 객체도 보낼 때 편리하게 쓸 수 있는 통신을 하고 싶을 때 주고받기 편한 형태가 JSON
Content-Type Application/json : 자바스크립트 리터럴형식으로 객체만든거랑 똑같이 생김
아이디 중복확인 여부를 ajax로 바로 받아보자
버튼으로 팝업 아니고 바로 보이게~~
상단에 jquery쓸 수 있게 cdn링크 걸고
jquery문 작성
id에 변화가 있을 때 실행함수작성~~/ ajax로 id체크 요청하고, 결과 받아서 화면에 결과 뿌리기
컨트롤러 (id받아와서 확인해야 함)
뷰리졸버로 아니고
바디에 바로 응답해줘야 한다고 지정해야 함 @ResponseBody
ajax는 요청 성공 했는지 필요하지 브라우저에 데이터가 필요한게 아니니까. = 요청 날리는 공간은 body임 브라우저가 아님 / 보고있는 화면에서 스크립트로 요청하고 있으니까 결과도jsp아닌 바디로 받을거니까 어노테이션
지금 데이터는 문자열이라 리턴타입도 String
11: 0
아이디 사용가능여부 결과 input태그에 value값을 서버에서 돌려받는 문자열로 지정
한글로 보내면 인코딩뭐로할지 몰라서 깨지니까 contentType을 명시해야 함
자바 싸서 보내는 클래스 responseEntity
매개변수 3개
(body에 전송할 데이터, 해더객체, http상태코드 ) // (ok= 200, created = 201 .. )
게시판추가
게시판에 필요한 요소들
패키지와 파일들 만들고
스캔하게하기
jsp페이지
controller에서 요청 - write.jsp
db테이블 만들기
게시판 글 고유번호로 사용할 시퀀스~~~~ (일련번호)
프라이머리 키 bno에 지정
ALTER TABLE 테이블명 ADD CONSTRAING 제약조건명 제약조건;
제약조건은 PRIMARY KEY (컬럼명) 제약조건 이름을 붙여놨다가 제약조건 삭제하고 싶으면 제약조건명으로 삭제 가능. 필요할때 삭제했다 안했다
desc board;로 조회도 해보고
시퀀스도 만들고~~~
임의 데이터 만들어보기
게시판은 쇼핑몰과 같은것(쇼핑몰은 격자로 배치일 뿐)
댓글은 컨텐트 페이지에 달리는 글 게시판. 컨테트 페이지에 게시판이 또 붙는 것.
이미지로 목록이 나오면 이미지 게시판. 상품 판매사이트는 상품 판매 리스트가 되는거지...
보드 VO
매퍼.java
다른 패키지에 있는거 임포트해서
어노테이션 했으니까 컨트롤러에서 해보자 (서비스 안만들었으니까 바로 매퍼로..)
어노테이션 빼고 매퍼.xml로 다시 해봅세 (다 xml에서 적을거양) 어노테이션과 xml은 둘중 하나만 해야 에러안남
비교식이 있을 경우 꺾쇠로 인식하지 않게 태그 안에 넣어줘야 함
xml에서 resultType너무 기니까 별칭 달기
mybatisconfig에서
밑에 로그 찍히는거 잘 안됨 log4jdbc.log4j2.properties인거같음ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
(어디 컬럼넣을지 정해놓으면 ) db만들 때 디폴트로 해놨으니까 나머지는 자동으로 채워짐, 1:6. (컬럼명을 안적으면) 전체 다채우려면 개발자가 맘대로 채우겠다고 한거니까 자동으로 안채워짐
인터페이스에도 같은 이름으로 작성
매퍼쿼리문 만들고 ->서비스 가고 -> 컨트롤러와 jsp페이지 바꾸는 순으로 가보잡
디비부터 생각하면 주고받을 데이터가 어떻게 왔다갔다하는지... ㅂl지니스로직처리할 때 매개변수 리턴 늘리고...
CRUD기준으로 데이터처리먼저 생각
먼저 시퀀스에서 번호표 뽑아서 bno에 담아서 그다음 데이터를 값을 채워/ bno가 다시 필요한 경우 다음처럼 작성
bno가 뭐든 상관없고 인서트만 하면 되면 insert 로만하고위에꺼처럼
bno다시 다른데 던저줄거면 selectKey 함께사용
컨트롤러
글하나 목록 가져오기
select * from Board where bno = 1; 한줄을 가져옴
매퍼와 쿼리문
컨트롤러에 잘 가져왔나 보자
글 삭제
컨트롤러
페이지를 요청하고 나면 DB에 해당 번호의 글이 사라지게 된다.
글 수정
해당하는 글번호만.
수정날짜만 수정 작성날짜는 변경하지 않음
컨트롤러
sql디벨로퍼 날짜보이게 |
여기까지 CRUD변경은 다됨
게시판이 crud는 쉽지. 화면 페이지 처리 왔다갔다 하는게 어려워. 목록 정렬해서 끊어와야... 글 전체를 다 가져올 필요 없으니까 페이지가 몇개인지에 따라서 정렬해서 그것만 가져와. 페이지 번호도 몇개인지에 따라 몇개까지만 보이게 할지...
이제 서비스 만들러 가자
컨트롤러에서 보드서비스 주입하고
서비스에 매퍼 주입해놓고
서비스 구현시작
crud끝
컨트롤러
requestmapping /*도 적어줘야 함 더 요청 편하게 하려면...
write
리스트페이지 만들기
컨트롤러
list.jsp
위에 컬럼명 만들고
아래는 반복문으로 뿌려줌
글작성하고 리다이렉트로 메인리스트로 돌아왔을 때 글작성되었다는 알림창 띄우기
컨트롤러로 일회성데이터로 쓰고 없어지는 RedirectAttributes의 속성 addFlashAttribute 메서드
서비스임플
result로 숫자를들고감
스크립트로 해당 페이지에 alert쓰기
content.jsp
플래시로 보냈던 정보
새글 쓰기 하고 리다이렉트해서 리스트로 가면 alert뜬다
-> 컨텐트 갔다가 브라우저 뒤로가서 보면 -> 다시 알러트 뜬다. (에러) 수정
글작성되고 list로 리다이렉트되면 스크립트로 alert띄워주고
삭제할때도 쓸거니까 (히스토리스테이트가 없거나,결과없으면 그냥 돌려보내고/ 결과가 있을 경우에만 alert띄워주겠다는)함수로 빼준다음에 기록을 지운다 히스토리클래스의 메서드 사용
수정삭제
겟매핑에 추가
@RequestParam어노테이션으로 정확하게 bno를 받아오게 만들어준다
내용보기는 제목클릭으로 해당 페이지로 넘어가면 끝이고, 수정과 삭제처리는 버튼을 누르면 내용을 db로 처리 결과를 보내야하니까 postmapping이 필요하지
delete에서 처리한 후 result라는 결과로 success문자를 jsp페이지로 들고가면 글등록 처리 alert창 parseInt(result) 몇번 글이 등록되었다는 메세지에서 에러가 뜨게 되니까 파싱 안되게 조건을 먼저 걸어줌
글삭제하겠냐는 팝업을 띄우고 처리해도 되고
삭제페이지
간단하게 el로
수정할 때 번호는 수정안되게
보안상 c:out이 더 좋다
c:out
댓글