13. 웹 프로그래밍 설계 모델
13-1 웹 프로그래밍 구축하기 위한 설계모델
Model 1 :
브라우저 ⇔ WAS(웹 어플리케이션 서버) ⇔ 데이터 베이스
(JSP ⇔ Service & DAO)
HTML에 java 태그를 동시 사용... 유지보수 어려움.
Model 2 :
브라우저 ⇔ WAS(웹 어플리케이션 서버) ⇔ Model ⇔ 데이터 베이스
(Controller ⇔ Service ⇔ DAO)
View (JSP)
13-2 스프링 MVC 프레임워크 설계구조
브라우저 ⇔ DispatcherServlet ⇒ HandlerMapping
⇔ HandlerAdapter ⇔ Controller
⇒View(jsp) ⇒ 브라우저
⇒ ViewResolver : 처리 결과를 출력할 view 선택
사진 출처 : http://wondongho.tistory.com/59
13-3 DispatcherServlet 설정
web.xml 서플릿을 맴핑
스프링 설정파일 있으면(servlet-context.xml) 맵핑 하여--> 스프링 컨테이너생성 : HanderMapping, HandlerAdapter, ViewResolver
초기화 파라메터에서 스프링 설정 파일 지정하지 않은경우 서블릿 별칭( appServlet-context.xml)을 이용 --> 스프링 컨테이너 생성 : HanderMapping, HandlerAdapter, ViewResolver
13-4. Controller 객체 @Controller
DispatcherServlet ⇔ HandlerAdapter ⇔ Controller
servlet-context.xml :
<annotation-driven/> |
@Controller public class HomeContoller{} |
13-5 Controller 객체 @RequestMapping
DispatcherServlet ⇔ HandlerAdapter ⇔ Controller
@RequestMapping("/success") public String success(Model model){ return "success"; } |
13-6 Controller 객체 Model 타입의 파라메터
DispatcherServlet ⇔ HandlerAdapter ⇔ Controller
@RequestMapping("/success") public String success(Model model){ model.setAttribute("tempData", "model has data!!"); return "success"; } |
: 개발자는 Model 객체에 데이터를 담아서 DispatcherServlet 에전달가능
: DispatcherServlet에 전달된 Model 데이터는 View 에서 가공되어 클라이언트에게 응답처리
13-7. View 객체
DispatcherServlet ⇔ HandlerAdapter ⇔ Controller
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean> |
:: 리턴값을 갖고 viewResolver 설정 값을 합쳐서 jsp를 만들어줌.
13-8. 전체적인 웹 프로그래밍 구조
브라우저: 최초 사용자 요청 ex) ip/cho4/sucess
⇒ DispatcherServlet
⇔ Controller : @Controller 적용 클래스 검색
⇔ @RequestMapping("success") :사용자 요청 해당 메서드 실행
⇒ ViewResolver : 처리 결과를 출력할 view 선택
14. 스프링 MVC 웹서비스
14-1. 웹 서버(Tomcat)다운로드
14-2. 웹 서버(Tomcat)와 이클립스 연동
http://localhost:8090/ or http://127.0.0.1:8090/ 접속
14-3. 이클립스 STS (String Tool Suit) 설치
14-4. STS를 이용한 웹 프로젝트 생성
14-5. 스프링 MVC 프레임워크를 이용한 웹 프로젝트 분석
15. 스프링 MVC 웹서비스2
15-1. 프로젝트 전체구조
15-2. web.xml
<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> |
15-3. DispatcherServlet
브라우저 ⇔ DispatcherServlet ⇒ HandlerMapping
⇔ HandlerAdapter ⇔ Controller
⇒ ViewResolver ⇒View(jsp) ⇒ 브라우저
HandlerMapping : 컨트롤러 검색
HandlerAdapter : 메서드 실행요청
Model And View 객체 이용
15-4. servlet-context.xml
15-5. Controller
15-6. View
16. STS를 이용하지 않은 웹 프로젝트
16-1. 스프링 MVC 웹 에플리케이션 제작을 위한 폴더 생성
16-2. pom.xml 및 이클립스 import
16-3. web.xml
16-4. 스프링설정파일(servlet-context.xml)생성
16-5. root-context.xml 작성
16-6. 컨트롤러와 뷰 작성
16-6. 실행
17. Service & DAO 객체 구현
17-1. 웹 어플리케이션 준비
17-2. 한글 처리
<!-- 한글설정 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- //한글설정 --> |
17-2. 서비스 객체 구현
서비스 빈생성
//@Component
//@Repository
@Service
빈연결
// MemberService memberService = new MemberService();
// @Autowired 스프링 전용, 타입으로 지정
// @Inject 자바 전용, 타입으로 지정
@Resource(name="memberService") //자바전용 이름으로 지정, java 8부터 설정이 바뀌어 annotation 임포트 여부 확인 필요
18. Controller 객체 구현
18-1. 웹 어플리케이션 준비
18-2. @RequestMapping을 이용한 URL 맵핑
18-3. 요청 파라메터
// Member member = new Member();
// member.setMemberId(request.getParameter("memberId"));
// member.setMemberPhone2(request.getParameter("memberPhone1"));
// @RequestParam(value = "memberId", required = true) String memberId,
// @RequestParam(value = "memberId", required = false, defaultValue = "010") String memberPhone1
// member.setMemberId(memberId);
// member.setMemberPhone1(memberPhone1);
1. 멤버 커맨드 객체이용
public String memberJoin(Model model, HttpServletRequest request, Member member) {
2. 중첩 커맨드 객체이용
PHONE: <input type="text" name="phoneList[0].memberPhone1"/>-
<input type="text" name="phoneList[1].memberPhone3"/>
19. Controller 객체 구현
19-1. @ModelAttribute
public String memberJoin(@ModelAttribute("mem") Member member) { // Member :: 커멘드 객체 |
@ModelAttribute("serverTime") public String getServicerTime(Locale locale) { Date date = new Date(); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale); return dateFormat.format(date); }
|
19-2. Model @ ModelAndView
ModelAndView mav = new ModelAndView(); mav.addObject("memberIp", request.getRemoteAddr()); mav.setViewName("memberLoginOk"); return mav; |
'For Real > Java & Spring' 카테고리의 다른 글
[방통대 자바프로그래밍 1~3강]기본문법 (0) | 2019.02.26 |
---|---|
java version (0) | 2019.02.26 |
[자바스프링프레임워크 by 백기선]자바스프링프레임워크 -의존객체 (0) | 2019.01.04 |
[자바스프링프레임워크 by 백기선]스프링 프레임워크 소개, 프로젝트 생성 (0) | 2019.01.04 |
functional programming vs OOP 번역 1 (0) | 2018.12.11 |