이제는 게시판 만들기

 

 

 

게시판 DTO를 만든 후

 

 

 

각종 쿼리문을 매핑시킨다.

 

 

 

게시판 html과, 게시물 view html을 만든다.

 

 

 

그 후 컨트롤러에서 코드문을 다음과 같이 작성, 게시판에 있는 모든 게시물 db들을 불러오게 하고, 게시물을 클릭했을 시, 게시물 하나의 데이터 정보들을 불러오게끔 하였다.

 

 

 

 

게시물을 작성하는 페이지를 만들고, 그 페이지에서 입력한 값들을 DB와 연동하여 전달받은 내용으로 게시물을 추가하도록 하였다.

 

 

 

게시물 수정과, 게시물 삭제, 다음과 같이 수정 페이지에서 수정한 값들을 insert 문으로 매칭한 메소드를 불러와서 DB내용을 변경하는 방식으로 수정이 되도록 하였다. 게시물 삭제는 간단하다. 그냥 해당 게시물의 'no'를 불러와서 delete 문으로 매칭한 메소드를 이용하여 삭제를 진행.

 

 

 

 

 

최 종 결 과 ! 게시판을 완성하였다.

 

 

 

먼저 로그인 부터 만들 계획이다. user라는 DB 테이블을 참고하여 UserDTO라는 테이블의 모든 정보를 받아오는 클래스를 만든다.

 

 

 

jsp를 이용하여 HTML을 만들고, input 안에 name을 이용하여 UserDTO와 연동되도록 이름을 같게 한다.

 

 

 

SELECT문을 이용하여 id와 pw 매개변수를 집어넣으면 그것에 맞는 유저 정보를 조회하도록 매핑

 

 

 

그 후 컨트롤러에서 코드문을 다음과 같이 작성하여, 로그인을 했을 시, 메인 게시판으로 이동되도록 설정하였다. 만약 로그인을 잘못 했다면, 로그인창으로 다시 이동하도록 하였다.

 

 

홈페이지 설정

 

 

 

위 처럼 로그인을 했을 경우 메인 게시판으로 넘어가는 것을 확인할 수 있다.

 

 

 

 

stdtbl의 pk는 stdName

 

 

 

clubtbl의 pk는 clubName

 

 

 

num은 PK, stdName은 FK(stdtbl), clubName도 FK(clubtbl)

 

 

 

각각 DTO 클래스를 만들고 생성자, getter, setter, ToString 생성

 

 

 

그리고 둘을 합친 StudentClubDTO 클래스를 만든 후, 객체로 불러온다.

 

 

 

먼저 stdtbl의 첫 튜플을 select문으로 불러올 것이다. 간단한 식이라서, student-mapper.xml에서 따로 설정하지 않고 바로 위에 @Select 어노테이션을 이용한다.

 

 

 

Select문으로 불러온 값

 

 

 

 

이제 조인 연산자를 이용한 쿼리문의 Select 값을 불러올 차례. N:M(다대다) 관계

 

 

 

 

데이터를 모두 불러오려면 리스트로 묶어야 한다

 

 

 

쿼리가 길고, resultMap을 이용해야 하기 때문에, xml에서 매핑한다. resultMap에서 association을 이용한다.

 

 

 

SELECT문의 결과 튜플값들을 불러온 모습

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring DB] 게시판 만들기 (2)  (0) 2023.08.14
[Spring DB] 게시판 만들기 (1)  (0) 2023.08.11
[Spring DB] HikariCP, MyBatis로 DB 연결  (0) 2023.08.09
[Spring] 범용 에러처리 클래스  (0) 2023.08.07
[Spring] 로그인 실습  (0) 2023.08.07

HikariCP

가볍지만 빠르고 안정성이 있는 JDBC Connection Pool 라이브러리

 

MyBatis

SQL과 자바 객체를 매핑하는 DB 접근용 프레임워크

 

 

 

예시

워크벤치를 이용하여 user라는 테이블을 만들었다.

 

 

 

HikariCP와 MyBatis 설정

 

 

 

UserDTO는 테이블의 모든 정보를 받아오는 역할을 한다

 

 

 

mapper.xml을 통해 쿼리문을 작성 후 매핑한다. select문을 우선 매핑해보기로 하였다.

 

 

 

'korea'라는 아이디를 가진 유저를 조회할 경우 korea의 전체 정보가 뜬다.

 

 

 

 

이번에는 insert문을 이용해 테이블에 데이터를 추가하기로 하였다.

 

 

 

UserDTO 객체를 이용하는 방법과 이용하지 않는 방법이 있다. UserDTO를 이용한다면, 생성자 때문에 마지막에 default 처리되어 있는 registDate 파라미터 역시 넣어야 한다. 하지만 UserDTO  없이 한다면, registDate는 now()로 default 처리 되어 있기 때문에 굳이 파라미터를 적을 필요가 없다.

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring DB] 게시판 만들기 (1)  (0) 2023.08.11
[Spring DB] 다대다 Join 연산자 쿼리 불러오기  (0) 2023.08.10
[Spring] 범용 에러처리 클래스  (0) 2023.08.07
[Spring] 로그인 실습  (0) 2023.08.07
[Spring] 카테고리 실습  (0) 2023.08.07

모델 뷰를 이용하여 만든 에러처리 클래스. @ControllerAdvice를 클래스 이름 위에 작성 시, 이는 범용 에러처리 클래스가 된다. 

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring DB] 다대다 Join 연산자 쿼리 불러오기  (0) 2023.08.10
[Spring DB] HikariCP, MyBatis로 DB 연결  (0) 2023.08.09
[Spring] 로그인 실습  (0) 2023.08.07
[Spring] 카테고리 실습  (0) 2023.08.07
[Spring] MVC  (0) 2023.08.03

이제까지 배운 것들을 토대로 로그인 페이지를 만드는 실습을 진행하였다.

 

 

 

먼저 login.jsp 에서 HTML을 이렇게 설정. message는 로그인 시 오류가 났을때 오류가 났다고 알리기 위한 요소이다.

 

 

 

기존에 있던 UserVO 클래스를 재활용하기로 했다. id, pw, nickName 변수를 추가하였다.

 

 

 

 

이제 BoardController 클래스, id와 pw 변수를 미리 만들어 놓는다. 그리고 로그인 시, 입력했던 아이디가 변수에 설정했던 아이디와 같고, pw도 마찬가지로 같다면, vo의 닉네임을 '홍길동'으로 설정해놓고, 세션역시 setAttribute로 저장한다. 그리고 로그인 이후 페이지인 /main/board로 리다이렉트 한다. 만약 아이디와 비밀번호가 일치하지 않는다면, 'ID/PW 가 틀렸다' 라는 메세지를 일회용으로 저장해놓고, 원래 로그인 페이지인 /user/login에 리다이렉트

 

 

 

 

만약 로그인 페이지를 거치지 않고, 바로 로그인 이후 페이지인 /main/board로 접속했을 시, 설정해놓은 세션 'user'가 존재한다면, 그냥 그 페이지에 머무를 수 있도록 하고, 그렇지 않을 경우 로그인 페이지인 /user/login으로 리다이렉트 시킨다.

 

로그인 페이지에 들어왔을 시, 로그인이 되어 있다면 /main/board 페이지로 리다이렉트, 하지만 로그인을 실패했을 경우, 설정했던 메세지를 화면에 출력시키도록 이미 만들어놓은 message를 전달한다.

 

 

 

로그인 했을 시, /main/board에는 ${session.user.nickName}을 이용하여 로그인한 유저의 닉네임을 화면에 보여준다.

 

 

 

 

먼저 order.jsp에서 HTML을 이렇게 설정한다. IT 카테고리 부분의 form action을  /order/it, Food 카테고리 부분은 /order/food

 

 

 

Item 이라는 클래스를 만든 뒤, getter, setter, 생성자, ToString 모두 생성

 

 

 

 

Order.jsp 에서 불러온 파라미터들을 불러온다. 그리고 order/{category} 로 getMapping을 설정 후, @PathVariable을 통해 가져온 카테고리 값을 불러오게 한다.

 

모델 객체는 result.jsp에 불러온 값들을 출력하는데 도움을 준다. 즉 request.setAttribute()와 비슷한 역할을 함

 

 

 

 

 

이런 식으로, 배열을 만든 후, 아이템의 값이 불러온 가격의 값보다 작으면 해당 아이템을 result 배열에 추가하게 함.

 

 

 

모델 객체로 저장한 값들을 result.jsp에 보여지게 한다.

 

 

 

'Spring' 카테고리의 다른 글

[Spring] 범용 에러처리 클래스  (0) 2023.08.07
[Spring] 로그인 실습  (0) 2023.08.07
[Spring] MVC  (0) 2023.08.03
[Spring] 관점 지향 프로그래밍(Aspect Oriented Programming)  (0) 2023.08.02
[Spring] 다국어 메세지 처리하기  (0) 2023.08.02

스프링 프레임워크 MVC

모델2 아키텍처를 지원하고 스프링과 다른 모듈과의 연계가 쉽다. 타일즈(tiles)나 사이트메시(sitemesh) 같은 View 기술과의 연계가 쉽다. 그리고 태그 라이브러리를 통해 message 출력, theme 적용 그리고 입력 폼을 보다 쉽게 구현할 수 있다.

 

 

단계

1. 브라우저가 DispatcherServlet에 URL로 접근하여 해당 정보를 요청합니다.

2. 핸들러 매핑에서 해당 요청에 대해 매핑된 컨트롤러가 있는지 요청합니다.

3. 매핑된 컨트롤러에 대해 처리를 요청합니다.

4. 컨트롤러가 클라이언트의 요청을 처리한 결과와 View 이름을 ModelAndView에 저장해서 DispatcherServlet으로 반환합니다.

5. DispatcherServlet에서는 컨트롤러에서 보내온 View 이름을 ViewResolver로 보내 해당 View를 요청합니다.

6. ViewResolver는 요청한 View를 보냅니다.

7. View의 처리 결과를 DispatcherServlet으로 보냅니다. 8. DispatcherServlet은 최종 결과를 브라우저로 전송합니다.

 

 

 

예시

서블렛 매핑 후, /view/ 디렉터리 안에 있는 jsp 파일들의 경로를 찾게끔 한다.

 

 

 

views/ 디렉터리 안에 jsp들을 다음과 같이 설정

 

 

 

 

main.jsp에서 내가 작성하고 전송한 값들을 불러와서 출력할 수 있다.

 

 

 

 

주소창에 /simple?message=test를 쳐보면

simple GET �떎�뻾
id => 0
message => test

이렇게 출력된다.

views/main.jsp 경로로 가서 전송 버튼을 누르면 다음과 같이 출력된다.

user - post �떎�뻾
UserVO(name=null, age=123, nickName=챠혲혥챗쨍쨍챘혧혲)
simple GET �떎�뻾
id => 1
message => This is java

 

 

 

 

simple.jsp에서 값을 입력 후 전송버튼을 누르면 model.jsp로 값이 전달되어 화면에 나타난다.

 

 

 

 

 

 

관점 지향 프로그래밍 (AOP)

메서드 안의 주 기능과 보조 기능을 분리한 후 선택적으로 메서드에 적용해서 사용한다는 개념이다. 전체 코드에 흩어져 있는 보조 기능을 하나의 장소에 모아서 관리할 수 있다. 보조 기능을 자신이 원하는 주기능에 선택적으로 적용할 수 있어 코드가 단순해지고 가독성이 향상된다

 

 

순서

1. 타깃(target) 클래스 지정

2. 어드바이스(Advice) 클래스 지정

3. 설정 파일에서 포인트컷(Pointcut)을 설정

4. 설정 파일에서 어드바이스와 포인트컷을 결합하는 어드바이저를 설정

5. 설정 파일에서 스프링의 ProxyFactoryBean 클래스를 이용해 타깃에 어드바이스를 설정

6. getBean() 메서드로 빈 객체에 접근해 사용

 

 

 

예시

pom.xml에 다음과 같이 설정

 

 

 

 

타깃 클래스 지정

 

 

 

Advice 클래스를 지정한다. 

 

 

 

 

결과

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring] 카테고리 실습  (0) 2023.08.07
[Spring] MVC  (0) 2023.08.03
[Spring] 다국어 메세지 처리하기  (0) 2023.08.02
[Spring] 오토와이어링과 Resource 인터페이스  (0) 2023.08.02
[Spring] Collection 객체 설정  (0) 2023.08.01

리소스 번들 만들기

 

 

기본값

 

 

일본어 (커피 부분을 주석처리함)

 

 

Bean 생성

 

 

일본어의 커피 부분은 주석 처리가 되었기 때문에 기본값이 출력된다. 

 

 

 

 

+ Recent posts