일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- QueryDSL
- Servlet
- JPQL
- pointcut
- 스프링
- transaction
- Proxy
- 스프링 핵심 원리
- SpringBoot
- Thymeleaf
- spring
- 백준
- 그리디
- db
- Exception
- 스프링 핵심 기능
- Android
- 자바
- Spring Boot
- kotlin
- jpa
- java
- 알고리즘
- Greedy
- 김영한
- AOP
- http
- 인프런
- JDBC
- springdatajpa
- Today
- Total
목록인프런 (528)
개발자되기 프로젝트
Controller와 View의 역할을 명확하게 구분함. 흠 근데 현재 컨트롤러는 중복이 많음..귀찮은데.. 1. 포워드 중복 View로 이동하는 코드가 항상 중복 호출 2.ViewPath에 중복 prefix: /WEB-INF/views/ suffix: .jsp 만약 jsp가 아닌 thymeleaf 같은 다른 뷰로 변경하면.. 전체 코드를 다 변경해야 한다 3. 사용하지 않는 코드 HttpServletReponse는 현재 코드에서 사용하지 않음.. 4. 공통 처리가 어려움. 기능이 복잡해질 수 록 컨트롤러에서 공통으로 처리해야 하는 부분이 많음. 5. 정리 이러한 문제를 해결하기 위해서는 공통 기능을 처리히야함. 즉 수문장 역할을 하는 기능이 필요. Front Controller패턴을 사용하면 해결이 가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjbWLW/btreAJSaAoC/GjNR3lPYhSdFDskzpNKThk/img.png)
1. MVC 패턴 적용 서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용 Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있음. request.setAttribute() , request.getAttribute() 를 사용하면 데이터를 보관하고, 조회할 수 있다 2. Controller Request, Response를 받아서 view에 제어권 넘김. RequestDispatcher : Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cfNFBy/btreCDcFnQZ/AYyUCk78kYaJqz5XKlojK1/img.png)
1. 변경 주기가 다르면 분리하자. UI 를 수정하는 것과 비즈니스 로직을 수정하는 일은 변경 주기가 다를 가능성이 매~~우 높음. 변경 라이프 사이클이 다른 코드를 하나의 코드로 관리하는 것은 유지보수하기 좋지 않음.. 2. 기능 특화 JSP같은 뷰 템플릿은 화면을 렌더링하는 데 최적화 되어있음. 3. Model View Controller(MVC) 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다. 보통 이 MVC 패턴을 사용함 Controller HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과데이터를 조회해서 모델에 담는다. Model 뷰에 출력할 데이터를 담음. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해줌..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mdyiD/btreDlbItVu/qn52NR6nkB25KkfgOjqIn1/img.png)
1. JSP 라이브러리 추가 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' 2. 회원등록 JSP 폼 JSP는 webapp 하위에 있어야 한다. webapp하위는 기본적으로 접근이 가능하다. JSP는 서버 내부에서 서블릿으로 변환됨 MemberFormServlet과 거의 비슷한 모습으로 변환됨. username: age: 전송 http://localhost:8080/jsp/members/new-form.jsp 접속해보자. 3. 회원 저장 로직. 첫 줄은 JSP라는 뜻 ㅋㅋ 안에 자바 코드 넣을 수 있음. JSP에서 HttpServletRequest, HttpServletRepons..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Fbe2R/btreDUZndma/1WcTJZIuCXZ98N1kc1Pcek/img.png)
1. MemberFormServlet 회원 등록 폼 servlet 단점...html 자바 코드로 넣어야함.. ㅜㅜㅜ @WebServlet(name = "MemberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ba6Mah/btrewyqgI43/sHm7W5K5OEty8nnRcBXK00/img.png)
1. 회원 정보 이름: username 나이: age 2. 기능 요구사항 회원 저장 회원 목록 조회 3. Member @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } 4. MemberRepository /** * 실무에서는 동시성 문제 고려해야함. * ConcurrentHashMap, AtomicLong 사용 고려 */ public class MemberRepository { private ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AK9Q0/btreqJ6lFPA/PcDfVSIwJk1M24X38380Ck/img.png)
1. MessageBody에 JSON을 담아서 보내보자! objectMapper.writeValueAsString()을 통해 Object -> JSON 변환 response.getWriter().write() 를 통해 body에 담음. @WebServlet(name = "ResponseJsonServlet", urlPatterns = "/response-json") public class ResponseJsonServlet extends HttpServlet { ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(HttpServletRequest request, HttpServletResponse response..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dDNG7V/btrevG8Du9D/gKC5Z6jT84RDWYUoZpUte0/img.png)
1. HTTP 응답 메시지는 주로 아래 내용을 담아서 전달됨. 단순 텍스트 응답 writer.println("ok"); HTML 응답 HTTP API - MessageBody JSON 응답 2. HttpServletResponse - HTML 응답 content-type : text/html @WebServlet(name = "ResponseHtmlServlet", urlPatterns = "/response-html") public class ResponseHtmlServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws Servlet..