
현재 이렇게 db 정보를 그대로 박아두면 만약 웹사이트를 배포 했을 때에 자바코드가 아닌 바이너리코드로 배포되기 때문에 비밀번호가 바꿔었을 때에도 다시 입력해서 재배포를 해줘야하는 상황이 된다. 또한 데이터베이스의 위치가 바뀔경우에도 또 소스코드를 재배포해야한다. 이런 경우는 합당하지 않은 것 같다. 그래서 이런 변경해야되는 부분들은 xml에 넣고 di로 해서 사용해야한다. 이렇게 정보를 하나하나 입력해둔것을 dataSource라는 객체를 사용해서 설정한건데 상단에 보면 java.sql.Datasource를 볼 수 있고 확인해보면 인터페이스 형태라는 것을 알 수 있다. 그럼 객체를 설정해줘야 한다는 것을 알 수 있다. 그렇기에 set해주기위해 setter를 만들어 줬고 getList 메소드에서는 data..

스프링객체 분리하기 이전 디스패처에서 service 객체를 set할 수 있게 했다. 이렇게 할 경우의 문제는 결합력이 너무 높다는 것이다. 한 서비를 객체를 바꾸게 되면 controller에서 set했던 값을 바꿔줘야하니 여러 코드를 바꿔줘야만 한다. 이런 문제를 일으키지 않기 위해서 우린 interface를 설정 해주려한다. 전에 사용했던 서비스 객체의 메소드의 네임을 넣어줬다 인터페이스 명도 이전에 사용했던 네임을 그대로 넣어줬다. 그 뒤에 이전에 사용한 NoticeService클래스의 클래스명을 JdbcNoticeService로 바꿔줬다. 네임을 바꿔주고 인터페이스를 상속했을 뿐이다 이제 xml로 가보자 여기서 내가 바꿔준 것은 원래 bean 객체로 설정한 서비스의 경로만 바꿔줬다 여기서 id값은 ..

먼저 오라클 데이터베이스 연결을 위해서 JDBC를 POM에 옮겨 줘야한다. 나는 mavenRepository 사이트를 이용해서 com.oracle.database.jdbc ojdbc8 21.1.0.0 이걸 pom.xml에 옮겨줬다. 이걸로 준비를 끝났으니 서비스객체를 만들어보려고 하는데 dispatcher에 컨트롤러 bean을 만들어 ioc컨테이너에 넣었듯이 이번에 service객체 또한 같은 방식을 사용하려 한다. 이렇게 경로를 class로 넣어준다. 그럼 ioc컨테이너에 서비스 객체가 마련되었으니 컨트롤러에서 이걸 불러올 수 있게 설정해준다. 사진처럼 이 객체를 listController에 연결해주었다. 프로퍼티의 name은 setter일 뿐이니 컨트롤러에서 세터를 마련해줘야만 한다. 세터를 마련해주..

이 전글에 tiles는 페이지가 늘어날때마다 새로 tiles 값들을 추가해줘야 했다. 그런 불편함을 잡기 위해 와일드 카드(*)를 사용해보려 한다 굉장히 간단하다 와일드 카드(*)가 사용되는 곳 바로 그 단어를 put-attribute에 {1} 이렇게 표시할 수 있다. 만약 url로 /notice/list 라고 들어온다면 {1}은 list가 된다. 또 2개 이상으로 사용하고 싶다면 tiles name에 notice.*.* 이라고 하나 더 추가해주고 {1} {2} 형식으로 순차적으로 값을 넣어주면 된다.

이전에 WEB-INF에 tiles.xml에 이런 형식으로 입력했을것이다. 여기서 template에 put-attribute에 입력된 내용에 name을 이용해서 페이지를 꾸며 줄 수 있다. tiles를 사용하려면 기본적으로 라이브러리를 가져와야한다. pom.xml에 추가해주고 사용하면 된다. 방금 전 template에 포함됐던 layout으로 가 taglib을 추가해주자 이전에 tiles.xml에 put-attribute속에 name 값을 불러오면 해당 header의 value값을 불러오게 된다. 이런식으로 header body등 위치시켜준다 title은 그냥 String값으로 공지사항을 넣었는데 이렇게 tiles 라이브러리의 함수값?으로 String값을 가져 올 수 있다.

webapp/images 폴더 아래에 맞는 이름의 png 파일을 두었는데 읽어오질 못한다 왜 그럴까? 서버를 키고 페이지를 브라우저에 띄었다면 localhost:8080/images/logo_footer.png 이런 경로를 통해 파일을 가져오는 것으로 된다 이유는 기본적으로 스프링이 정적인 파일을 불러오는 것을 막아뒀기 때문인데 이미지나 html 등을말하는데 jsp같은 파일을 사용가능하게 열어두고있다 만약 webapp폴더 어래에 test.jsp 파일을 두고 ctrl+f11을 눌러 열어본다면 잘열리게 된다. 하지만 이미지파일은 logo.png를 webapp폴더 아래에 두고 열면 열리지 않는다 여기서 우린 처음 리퀘스트를 받는 frontController 즉 DispatcherServlet을 확인해 볼 필요..

mv.setViewName("/WEB-INF/view/index.jsp"); 이렇게 경로를 모두 적는 것은 사실 귀찮은일이다 이걸 편하게 해주는 것이 view Resolver이다 먼저 dispatcher-servlet.xml으로간다 여기서 ioc컨테이너의 들어갈 bean을 하나 설정해주는데 받아올 라이브러리는 InternalResourceViewResolver이다 bean이 클래스라면 property는 필드가된다. 실제로 ioc에 올라가는 것은 객체이기 때문에 모양상으로는 맞다 name은 필드의 이름을 정해주고 value는 그 값이 된다. 여기서 만약 ref를 통해 타입을 정해준다면 를 하나 만들어서 주입시켜주어야 한다 여기보이는 프로퍼티와 네임은 뷰리졸버가 사용하는 필드값 중 하나가 될 것이다. vie..

Maven repository사이트에서 Spring MVC를 받는다. pom.xml에 넣으면 라이브러리에 포함이 된다. 이 라이브러리중 방금 포함한 Spring-webmvc 안에 DispatcherServlet을 사용할 것이다. 스프링에서 프론트 컨트롤러역할을 하기위한 서블릿이라 할 수 있다. 오른클릭 후 -> Copy Qualified Name 를 눌러 이름을 카피해준다 프론트 컨트롤러역할을 하기위한 서블릿이라 할 수이다. 잠깐 멈춰 이야기하자면 jsp처럼 컨트롤러 영역에서 모든걸 다 해결하는 것이아닌 가장 앞에서 요청을 받는 프론트컨트롤러로 DispatcherServlet을 사용하는 것이기 때문에 web.xml안에 servlet으로 지정해준다 이때 복사한 경로이름에 .class는 지워줘야한다 그다음 ..
- Total
- Today
- Yesterday
- 인터셉터
- JPA
- rejectValue
- SpringBoot
- 예외처리
- BindingResult
- React
- 컨트
- 백엔드 개발자 공부
- 향해플러스백엔드
- 스프링공부
- 로그인
- HTTP
- Java
- thymleaf
- Intercepter
- filter
- 향해99
- 리터럴
- reject
- ArgumentResolver
- 스프링부트
- exception
- react실행
- 향해플러스
- 백엔드 개발자 역량
- 항해플러스
- hypertexttransferprotocol
- 항해99
- jpa api
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |