분류 전체보기
-
[쇼핑몰 리팩토링] 07 App호환을 위한 수정(URI Pattern)카테고리 없음 2024. 3. 19. 17:40
1. 웹의 *.do 형식 URI 패턴 지금까지는 .do로 들어온 request를 컨트롤러로 매핑했다. 웹에서는 struts의 영향으로 .do형식의 uri를 사용하는 경향이 있기 때문이다. 그런데 스마트폰, 앱이 등장했다. 앱이라는 새로운 개념이라고 해서 브라우저, 앱서버, 프로토콜 등을 다 새로 개발 할 건가? 2~30년간 크게 발전한 웹의 시스템을 그대로 갖다 쓸 방법을 많은 개발자들이 고민했다고 한다. 2. 웹 구조를 앱에 적용하기 - Web의 경우 (브라우저req -> Servlet -> JavaBeans->DB->JavaBeans->Servlet->JSP(View)->브라우저 res) 절차를 거쳐 브라우저에 렌더링했다. 여기에서는 브라우저, WAS, 프로토콜 등이 제공되므로 다운로드해서 쓰기만 하..
-
표준화된 폴더구조에서 lib폴더의 의미카테고리 없음 2024. 3. 15. 14:06
SE에서는 이런식으로 UserLibrary를 등록해주면 찾아서 쓸 수 있었다. 그러나 EE에서 동적 웹 프로젝트를 만들면서는 아래와 같이 표준화된 폴더구조를 따르게 되었다 표준화된 폴더구조에서 lib를 포함 시킨 것은 프로젝트 공유목적으로만 알고 있었다. 다른 사람에게는 이 lib가 없을 수도 있고, 있어도 classpath가 다를 수 있기 때문에 프로젝트에서 사용하는 lib를 모두 여기에 넣어서 공유해주는 것이라고만 생각했다. 그런데 동적 웹프로젝트에서 이클립스가 lib찾을때 Libraries로 추가한 lib들은 찾지 않을 수도 있다는 사실을 알게 되었다. 무조건 표준화된 폴더구조에서 lib밑에 있는 것을 최우선으로 찾는 것이기 때문에, 프로젝트에서 사용하는 모든 lib는 여기에 넣어줘야한다. Libr..
-
[MVCShop] 할인쿠폰 제공카테고리 없음 2024. 3. 12. 09:30
아직 Spring 및 @MVC 적용하지 않았다. 1. 구매 화면요청(addPurchaseView.do)시 AddPurchaseViewAction이 컨트롤러로서 역할을 한다. public class AddPurchaseViewAction extends Action { public String execute(HttpServletRequest request,HttpServletResponse response) throws Exception { request.setCharacterEncoding("UTF-8"); ProductService service = new ProductServiceImpl(); ProductVO productVO = service.findProduct(Integer.parseInt(re..
-
[쇼핑몰 리팩토링 1] 검색 조건 유지(feat. Object Scope)카테고리 없음 2024. 2. 17. 12:45
1. 문제 상황 쇼핑몰에서 상품을 검색할 때 상품번호, 상품명, 가격을 입력한다. 검색조건에 맞는 상품이 여러개 있을 경우, 당연히 페이지가 나뉘게 된다. (+ 레코드는 3개씩 보여주도록 설정해두었음) 그런데 2페이지를 클릭해 페이지를 요청하면 검색조건이 초기화된다. 2. 문제 원인 그 이유는 검색조건을 가진 searchVO데이터를 request Object Scope에 저장하도록 개발했기 때문이다. request.setAttribute("searchVO", searchVO); return "forward:/product/ListProduct.jsp"; 검색조건 파라미터가 있는 경우에는('검색'버튼을 클릭으로 req하여 form을 submit해 request) searchVO의 모든 필드(페이지, 페이지..
-
System.out.println()으로 Java의 많은 것을 설명해보자!Java 2024. 1. 28. 20:44
오늘 글은 '챌린지'에 가깝다 ㅋㅋ!! 지금까지 공부한 Java개념을 최~대한 접목시켜서 API를 열심히 뒤져가며 System.out.println()를 분석해보려고 한다. 매우 구구절절 꼬리에 꼬리를 묻는 글이라 분량 조절은 실패일듯 하지만..재밌는 글이 될 것 같다ㅎ.ㅎ - Naming convention, CamelCase - Dot Operator ( . ) - Has a / Is a - Extends - Access Modifier - Overloading / Overriding - println() 호출, toString() - I/O - Synchronized, write시 동기화 문제 - Exception - 최상위 클래스 Object 1. Naming convention (CamelCas..
-
Java에서 출력할 때 toString()을 생략해도 되는 이유Java 2024. 1. 27. 15:50
많은 사람들이 print(), println() 등 출력메서드를 사용할 때 toString()을 생략해도 된다! 라고 생각만 하거나 혹은 몰랐지만 그냥 그렇게 썼다거나 할 것이다. 도대체 왜 그런지 갑자기 궁금해서 패키지 소스코드를 뒤져봤다. 1. println() //파라미터가 boolean println() public void println(boolean x) { synchronized (this) { print(x); newLine(); } } //그 외 여러 오버로딩 된 println() . . . println()을 살펴보니 print()를 호출하고, 줄바꿈을 한다. 이것이 흔히 알고있는 print와 println(줄바꿈)의 차이이다. 2. print() //파라미터가 char인 print()..
-
Object 클래스의 equals메서드 (feat. Casting Reference Types)Java 2024. 1. 20. 14:52
지난 글에서 모든 Class들의 최상위 클래스가 Object라는 것을 살펴보았고, Object의 toString()메서드를 각 클래스들이 어떻게 오버라이딩해서 쓰고 있는지 확인했다. 이번에는Object의 메서드 중 equals()메서드를 살펴보려고 한다. Object obj를 파라미터로 받는 메서드인 만큼, Reference타입의 Casting에 대해서도 언급하려고 한다! 1. (인스턴스1 == 인스턴스2) 의 결과는?? 아래와 같이 Example 클래스를 인스턴스화 하여 1, "안녕"으로 상태 값을 설정했다고 하자. // Example클래스의 인스턴스 e1, e2생성 Example e1 = new Example(1, "안녕"); Example e2 = new Example(1, "안녕"); 이처럼 두 ..
-
Java 모든 Class는 Object Class를 상속 받는다(feat. 오버라이딩)Java 2024. 1. 19. 21:52
Java를 공부해 본 사람이라면 다들 이런 말은 들어보셨을 것이다. Object는 모든 Class들의 최상위 클래스다. OOP를 공부하면서 Object 클래스를 제대로 살펴보지 않을 수는 없지!!! 우선 위의 말이 진짜인지 내 두 눈으로 직접 봐야겠다. API docs를 살펴보자!!! 1. 진짜 그런가요? 아~~~무 클래스나 눌러봤다. Hierarchy부분을 보면 java.lang.Object를 공유하고 있는 것을 알 수 있다. 다른 클래스도 아~~~무거나 눌러봤다. 얘 또한 마찬가지!!! 뭘 들어가봐도 전부 java.lang.Object가 최상위에 있는 것을 확인할 수 있다. 그럼 이제 Object 클래스도 한 번 살펴보자. java.lang.Object는? Hierarchy부분에 유일하게 상위 클래스..