🌳 에러 코드 🌳 해결 방법 🌾 원인 : JSP에서 좋아요 기능을 grammarView에서 온 객체로 사용하고 있었다. 하지만 '좋아요' generateGrammarList 메소드에는 userId 파라미터가 필요했으나, controller에서는 userId를 넘기지 않았다. 그래서 하트에 변화가 없었다. 🌾 해결 방법 : JSP에서 좋아요 기능이 어떤 변수를 사용하고 있는지 파악 후, 파라미터를 내려가면서 확인한 결과, 좋아요 기능을 위해서는 userId를 넘기는게 필요하다는 결과가 나왔고, Controller에서부터 userId를 BO에 넘이고 BO에서 받게 했다. Before - JSP - GrammarController - GrammarBO After - GrammarController - Gram..
🌳 에러 코드 가공 메서드에서 만드는 중, 파라미터 오류로 인해 원하는 리스트가 안 뿌려지고, 모든 리스트가 뿌려지는 현상. 🌳 해결 방법 🌾 원인 : 가공 메서드를 만드던 중, 그래머 글, 그래머 댓글, 글쓴이 정보 등 메서드를 하나로 합치는 과정에서 댓글의 파라미터 오류로 인해 모든 리스트가 뿌려지는 현상. 🌾 해결 방법 한 페이지에 여러글이 아닌, 하나의 글만 나오는 페이지이기 때문에, 가공 메소드 안에 grammarId가 이미 파라미터로 들어와 있었습니다. 그렇기 때문에 반복문 안에서 쓰이는 파라미터는 grammar.getId()가 아닌 메소드를 통해 들어온 grammarId로 수정해 원하는 댓글만 나오게 했습니다. Before After
🌳 에러 코드 Fri May 19 14:05:57 KST 2023 There was an unexpected error (type=Internal Server Error, status=500). Illegal use of -style tag without as its direct parent javax.servlet.jsp.JspTagException: Illegal use of -style tag without as its direct parent 🌳 해결 방법 🌾 원인 : 쓰지 않고 부터 시작해서 에러. 🌾 해결 방법 : 태그를 먼저 쓰고 쓰기.
🌱 오늘의 주제 : 스프링 MVC를 이용한 게시판 구축 (1) 🌱 A.1 URL과 @RequestMapping 연결하기 스프링 MVC에서는 @Controller 어노테이션이 붙은 클래스 안에 @RequestMapping 어노테이션이 붙은 메서드에서 클라이언트 요청을 처리하게 된다. 클라이언트가 http://localhost:8080/mvc/라고 URL을 입력하고 웹 서버에 서비스를 요청하면 서블릿 컨테이너가 mvc라고 하는 웹 컨텍스트를 찾고 해당 웹 컨텍스트는 스프링 ApplicationContext에게 URL 중에 /를 처리할 수 있는, 즉 @RequestMapping(value="/")를 가진 메서드에게 처리를 위임한다. @ResponseBody는 아래 메서드에서 반환하는 문자열을 그대로 클라이언트..
🌱 오늘의 주제 : Service, Repository, DTO 명칭 정리. 🌱 Service, Repository, DTO 명칭 정리. Service, BO(Business Object) - 2개 같은 이름 Repository, DAO(Data Access Object), Mapper. - 3개 같은 것. / 샘은 mapper로 함. DTO (Data Transfer Object), VO(value object), Domain, Model Entity - database에 있는 그대로를 가져온 것. table과 완전 일치.
🌱 오늘의 주제 : package와 import 🌱 패키지 패키지란 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. - 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다. - 모든 클래스는 반드시 하나의 패키지에 속해야 한다. - 패키지는 점을 구분자로 하여 계층구조로 구성할 수 있다. - 패키지는 물리적으로 클래스 파일을 포함하는 하나의 디렉토리이다. package 패키지명; 🌱 Import문 import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 ..
🌴 문제 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 9223372036854775807 9223372036854775808 예제 출력 1 복사 18446744073709551615 🌴 문제 분석 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; public class day19 { public static void..
🌳 에러 코드 Wed May 17 16:22:30 KST 2023 There was an unexpected error (type=Internal Server Error, status=500). Property [grammar] not found on type [com.language.grammar.model.Grammar] javax.el.PropertyNotFoundException: Property [grammar] not found on type [com.language.grammar.model.Grammar 🌳 해결 방법 🌾 원인 : JSP에서 EL태그 ${} 사용시에 오타. Controller에서 가공 객체를 없애고 수정했더니 오류발생. 🌾 해결 방법 : EL태그 ${} 문법에 맞게 수정. g..
🌱 오늘의 주제 : Interceptor란? 🌱 Interceptor란? 컨트롤러(Controller)의 '핸들러(Handler)'를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 일종의 필터 interceptr 란 단어는 '낚아채다'라는 의미이다. 해당 단어의 의미와 같이 사용자 요청에 의해 서버에 들어온 Request 객체를 컨트롤러의 핸들러(사용자가 요청한 url에 따라 실행되어야 할 메서드, 이하 핸들러)로 도달하기전에 낚아채서 개발자가 원하는 추가적인 작업을 한후 핸들러로 보낼수 있도록 해주는것이 인터셉터 이다. 🌱 사용하는 이유 개발자는 특정 Controller의 핸들러가 실행되기 전이나 후에 추가적인 작업을 원할때 Interceptor를 사용한다. (추가적인 작업으로는 로그인체크..
🌴 문제 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 예제 입력 1 복사 2 1 5 예제 출력 1 복사 4 예제 입력 2 복사 5 1 6 예제 출력 2 복사 2 예제 입력 3 복사 100 99 1000000000 예제 출력 3 복사 999..