당최 서블릿 페이지 이동 에 대한 정리를 찾기 힘들어 

내가 직접 테스트 해보고 정리했다. ㅎㅎ 그래서 정확성은 보장 못함.



포워딩 방식 (return "viewname"; )


※ 주소는 viewResolver에서 /WEB-INF/view/ + " ~~~ " + .jsp  이런식으로 만들어짐.

※ 앞에 / 가 붙든 안붙든 상관없이 view/ 다음으로 간다 

※ view 밑으로 폴더 명부터 다 써주기 

※ jsp붙으니 .do아니다. 


return "notice/noticeList";  , return "/notice/noticeList";

컨테이너가 찾는 주소      /mogaco/WEB-INF/view/notice/noticeList.jsp

브라우저에 표시되는 주소 http://localhost:8082/mogaco/notice/noticeList.do


- URL 주소 유지, 즉 브라우저 모르게 컨테이너 내부에서 이동

request/response 객체 유지 

- 같은 웹 서버 내에 있는 파일들로만 이동 가능 

- 클라이언트 정보를 갖고 이동 

- 클라이언트와의 통신없이 서버에서만 처리되므로 효율이 더 좋다고함



리다이렉트 방식 ( return "redirect:/"; )


※ 주소는 컨트롤러에 재 요청하는 주소다.

※ / 가 안붙으면 안된다. 

※ 컨트롤러로 재요청하므로 url pattern 지켜줘야함 ".do"


return "redirect:/notice/noticeList.do";  

브라우저 주소  http://localhost:8082/mogaco/notice/noticeList.do  

return "redirect:/";   
브라우저 주소http://localhost:8082/mogaco/ 



- URL 주소 바뀜, 컨테이너로 재 요청(단순한 이동)

- request/response 객체 소멸 

- 같은 서버, 다른 서버 에 있는 페이지로 이동 가능 

- 잘못된 예시 


1. R 대문자 쓰면 안된다. 되돌아오면서 오류 
"Redirect:/";      

"Redirect:/notice/noticeList.do";  (http://localhost:8082/mogaco/notice/notice/noticeInsert.do ) 

2. /안붙였을때 > 폴더명 3번 붙여 찾는다. 왜지. 
"redirect:notice/noticeList.do"; ( /mogaco/WEB-INF/view/notice/notice/notice/noticeList.jsp )



ModelAndView
ModelAndView는 포워드냐 리다이렉트냐 가 아니라 
ModelAndView를 이용하여 포워드로도 리다이렉트로도 보낼 수 있는거다. 

포워드 
ModelAndView mv = new ModelAndView();
vm.setViewName("/notice/noticeList");
vm.addAttribute("message", msgService.getMessage());
return vm;
or 
req.setAttrebute("message", msgService.getMessage());
return new ModelAndView("/notice/noticeList");

리다이렉트
ModelAndView mv = new ModelAndView();
vm.setViewName("redirect:/notice/noticeList.do?noticeNumber=2");
return vm;
or
ModelAndView mv = new ModelAndView();
vm.setView(new RedirectView("/notice/noticeList.do?noticeNumber=2",true));
return vm;
 

테스트 하고 정리하느라 시간이 다 갔다. 
뭘 쓸지 여부는 response, request 유지 여부에 따라 나뉠까.? 
* 브라우저 표시되는 주소는 get,post 와 연결지어 봐서 정리해 줘야겠다.
왜냐!! 
그런데 여기서 브라우저 표시되는 주소가 현재 주소가 되니
링크가 꼬인다. 꼬리에 꼬리를 물고 모르는게 생긴다 ㅎㅎ

+redirect로 새로 요청해주어야 재 요청시 꼬이지 않는다.

그럼 리다이렉트를 쓰고, 파티쉐님께 배운 주소 지우는것도 적용해보자 

0. 하드웨어의 소프트웨어 화 

 ex) JVM


1. 객체지향 언어의 특징

   - 재사용성(클래스화) 

   - 유지보수(코드간의 관계) 

   - 신뢰성(제어자, 메서드, 중복제거) 


2. 클래스, 객체 

   - 객체 : 멤버들의 집합, 변수들의 집합, 인스턴스 변수의 집합 

   - 클래스 : 연관된 데이터와 함수들의 모임, 구조체+함수, 사용자 정의 타입

                 (변수 > 배열 > 구조체 > 클래스) 


3. 변수, 메서드 

   -  변수 (선언위치에 따른) 

       - 멤버변수(클래스영역)   

            - 클래스 변수(static변수, 공유변수, 안변하는 속성) 

                : ※같은클래스의 모든 객체들이 같은 값을 공유하는 변수. 그래서 변경도 가능 하나 모든 객체의 값이 변경된다.

                : 클래스가 메모리에 로딩시 생성

                : 언제든 사용 가능(클래스명.클래스변수명)  

            - 인스턴스 변수

                : 인스턴스마다 다른 값 저장 

                : 객체 생성시 생성

                : 객체 생성후 사용 가능(참조변수명.인스턴스변수명)

       - 지역변수(메서드영역)  


   - 메서드 

       - 명령문의 집합. 값을 입력받아 처리하고 결과를 반환함 (둘다 없을수도 있음) 

       - 주요 작업 단위로 작성하여 코드 관리가 용이 

       - 리턴타입 메서드이름 (매개변수){ } 로 정의  

 - 리턴문은 변수 처리를 하여 호출 횟수를 줄이는게 좋다. 


4. JVM의 메모리 구조 - 호출스택(동전통) 

   - 맨 위에 메서드가 현재 실행중인 메서드다.

   - 예외처리 시 잘 알아둬야함!!


5. 매개변수

   기본형(primitive)  매개변수 - 읽기만 

   참조형(reference) 매개변수 - 읽고 변경 가능 



 

기본형 매개변수 예제


(자바의 정석 남궁성님 객체지향 강의중 캡쳐)


6. 재귀호출 

   매서드 내에서 자기 자신을 반복적으로 호출하는 것

   반복문으로 바꿀 수 있으며 반복문 보다 성능이 나쁘나 이해하기 쉽고 간결한 코드를 작성할수 있다.

   팩토리얼, 제곱, 트리운행, 폴더목록 표시등에 사용 



+ 팩토리얼 알고리즘 이해하기


7. 클래스 매서드 인스턴스 매서드

  클래스 매서드는 인스턴스 메서드 사용 안하면 static붙여서 쓴다 . 인스턴스 변수나 인스턴스 메서드 사용 관련 없을때 

  


1. JDK 

- JRE ( JVM + Java API )

- 자바실행파일(javac.exe, java.exe, javap.exe, javadoc.exe, jar.exe) 


2. Java의 주요실행파일

- javac.exe  (자바컴파일러)    자바코드>바이트코트

- java.exe   (자바인터프리터) 컴파일된 바이트코드 해석과 실행 

- javap.exe (역어셈블러)       컴파일된 클래스파일 > 원래 소스로 변환


ex) Hello.java > javac.exe(컴파일) > Hello.class > java.exe > 실 행 

          명령어 : javac Hello.java                       java Hello(java.exe로 실행시에는 확장자를 빼고 입력한다)



3. 두개의 클래스가 담긴 하나의 소스파일을 컴파일시 클래스 파일은 클래스마다 하나씩 만들어지므로 두개의 클래스파일이 생성된다. 




4. JVM이 사용하는 메모리 영역

- Method Area

   클래스 로딩 (Static) 

- Stack 

   메서드 호출시 사용 

- Heap 

   인스턴스 생성시 사용 





(자바의 정석 남궁성님 객체지향 강의중 캡쳐)





+ Recent posts