본문 바로가기
카테고리 없음

35일차_게시판

by 흥뷰자 2022. 4. 4.

 

 

 

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

 

 

 

 

 

댓글