안녕하세요 영한님 강의 정말 잘 보고 있습니다!! 다름이 아니라 MemberController의 addForm 메서드 파라미터를 @ModelAttribute("member") Member member 위와 같이 받으신 이유가 단순히 아래와 같이 Model을 파라미터로 받아서 직접 추가하는 것과 같은 효과를 내기 때문인가요? @GetMapping("/add") public String addForm(Model model) { model.addAttribute("member", new Member()); return "members/addMemberForm"; }
라디오 버튼의 경우 모두 선택하지 않는 null을 사용할 경우는 거의 없어 보입니다. 따라서 처음 addForm을 표시할 때 부터 제일 앞의 도서가 선택되어있는 상태로 만들고 싶은데 이 경우는 Thymeleaf에서 어떻게 할 수 있을까요? [x] 도서 [ ] 음식 [ ] 기타
항상 좋은 강의 감사드립니다. 1. Member loginMember = memberRepository .findById(memberId) ; if (loginMember == null ) { return "home" ; } 이부분 로직에서 궁금한것이 쿠키가 이미 발급되었다는것은 로그인 입력정보와 일치하는 회원이 회원저장소에 존재한다는것을 전제로 하는데 왜 loginMember과 null인지 한번더 검증하는지 이해가 가질 않습니다. 2. cookie만료와 관련해서 addcookie를 여러번 하면 결국 오버랩되어서 마지막으로 set-cookie로 보낸 쿠키만이 저장되는 것인가요?? 3. loginhome에서 로그아웃을 왜 post메서드로 보내는지 이해가 가질 않습니다. 단지 maxage가 0인 쿠키만 보내고 홈화면으로 리다이렉트로 get하면 되는것 아닌가요???
안녕하세요 강사님. 항상 좋은 수업 감사드립니다. 다름이 아니라 @ModelAttribute를 사용하면 매번 생성하는 문제가 있다고 하셔서 한번 제 생각대로 구현해봤습니다. 이전 Memory에 사용했던 싱글톤 패턴? 형식으로 DeliverCode 값을 초기화한 List를 가지는 클래스를 구현하고 이를 호출하는 식으로 구현하였는데 이런 방식으로 사용하면 되는것인지 궁금합니다. package hello.itemservice.domain.item ; import java.util.Arrays ; import java.util.List ; public class DeliveryCodesCreate { private static final List<DeliveryCode> deliveryCodes = Arrays. asList ( new DeliveryCode( "FAST" , " 빠른 배송 " ) , new DeliveryCode( "NORMAL" , " 일반 배송 " ) , new DeliveryCode( "SLOW" , " 느린 배송 " ) ) ; public static List<DeliveryCode> getInstance () { return deliveryCodes ; } private DeliveryCodesCreate () { } } @ModelAttribute ( "deliveryCodes" ) public List<DeliveryCode> deliveryCodes () { // List<DeliveryCode> deliveryCodes = new ArrayList<>(); // deliveryCodes.add(new DeliveryCode("FAST", " 빠른 배송 ")); // deliveryCodes.add(new DeliveryCode("NORMAL", " 일반 배송 ")); // deliveryCodes.add(new DeliveryCode("SLOW", " 느린 배송 ")); // return deliveryCodes; return DeliveryCodesCreate. getInstance () ; }
이 강의를 들으며 스프링을 처음 공부해봤습니다. 이 강의를 다 들은 후 [스프링 완전 정복]로드맵을 들을지 [스프링부트와 JPA 완전 정복]을 들을지 고민이 되는데, 추천해주실 수 있나요? 현재 저의 상황을 말씀드리자면 이 강의를 듣기 전 장고로 간단하게 개인 프로젝트를 해본 적이 있습니다. 규모는 크지 않고 간단한 CRUD 정도 해봤습니다. 현재 앱개발 외주를 받았는데, UI를 만드는 사람은 따로 있고 저는 백엔드 서버만 개발하면 됩니다. (외주 개발 기간은 2달 +@ 입니다. 기능은 로그인, 회원가입, 결제.. 등이 있고 택배 어플과 유사한 기능을 하는 앱입니다) 이런 상황을 전체적으로 고려했을 때 어떤 로드맵이 더 좋을까요? 참고로 김영한님의 모든 강의는 이미 구매했습니다.
만약 다음과 같이 인풋을 받았다고 가정하겠습니다. @Valid @ModelAttribute ItemDto itemDto 이 경우에, 각 필드에 대한 검증은 ItemDto 내의 @NotBlank, @Max, @Min과 같은 어노테이션으로 해결하고, ObjectError의 경우 ItemDtoValidator를 만들어 Validator를 구현하여 @InitBinder로 등록해두는 건 안되나요..?
안녕하세요 전체적인 흐름을 여쭤보고싶은데요. 순서가 1. servlet에 호출 2.비즈니스 로직처리하고 members attribute 설정 3. forward로 해당 jsp 로 이동 4. jsp 내에서 attribute들 입력 5. 해당 jsp response 이고 정적 HTML은 해당 경로파일을 내려보내주는거지만 JSP 는 model data들을 jstl로 세팅한 후에 리스폰스되는데 내부적으로는 세팅된 jsp 파일을 response.writer써준다 생각하면 맞나요?
안녕하세요. 이전 강의인 NMS에서도 궁금했는데, confidence 임계값이 어떻게 결정되는지 궁금합니다. IOU 같은 경우는 식으로 설명해주셔서 이해가 가는데, confidence 임계값인 경우에는 그런 것이 없더라구요. 좋은 강의 항상 잘 듣고있습니다. 감사합니다.
print 나 import 타이핑 할때 영상처럼 autocomplete 인지는 잘 모르겠는데 밑에 관련 되는 언어들이 뜨는데 전 안떠서 그러는데 무슨 문제인가요? 예를들어 import 치셧을때 밑에 ImportError 이런것들은 영상에 선생님은 뜨시는데 전안뜹니다. java언어로 치면 컨트롤+스페이스바 치면 뜨는데 파이썬도 그런 기능이있나요?
항상 좋은 강의 감사드립니다. 상품등록폼에서 판매여부를 체크하지 않는 경우 요청 파라미터로 _open:on 만 전달되고 item객체의 open변수에는 false가 저장된다고 이해하였는데 상세보기 페이지 소스에는 왜 item.open의 값이 ture인지 궁금합니다. 타임리프에서 렌더링 할때 Value가 참이면 cheked를 넣어주고 flase일때는 cheked를 넣지 않음으로써 상세보기 페이지에서 체크여부를 결정하는게 맞지 않나요?/
1. 앞 강의에서 세션 관련해서는 서버에서 세션 저장할때 랜덤 값과 맴버 객체만 있으면 될 거 같은데 굳이 SessionConst.LO GIN_MEMBER값은 왜 쓰이고 어디에 쓰는지 모르겠습니다. 2. 그냥 session.setAttribute하면 addCookie 할 필요없이 알아서 클라이언트한테 세션 값이 가는 건가요??
안녕하세요 좋은 강의 만들어주셔서 감사합니다 django 강의를 마친 후 이를 바탕으로 로그인, 회원가입, 프로필 확인, 삭제 정도 가능한 프로젝트를 새로 만들었습니다. 이를 바탕으로 강의의 profile 모델을 기반으로 한 간단한 api를 만들었고 지금 목적은 이 api를 기준으로 새로만든 django 프로젝트의 MODEL부분을 모두 api에서 관리하도록 적용하고싶은 학생입니다. 제가 만든 api의 명세서 입니다. https://documenter.getpostman.com/view/15940594/Tzm6kvP2 #accountapp/create.html {% extends 'base.html' %} {% load bootstrap4 %} {% block content %} <div style =" text-align : center ; max-width : 500 px ; margin : 4 rem auto ; " > <div class ="mb-4" > <h4> Signup </h4> </div> <form action ="{% url 'accountapp:create' %}" method ="post" > {% csrf_token %} {% bootstrap_form form %} <input type ="submit" class = "btn btn-dark rounded-pill col-6 mt-3" > </form> </div> {% endblock %} 에서 <form action ="{% url 'accountapp:create' %}" method ="post" > 이 부분의 url을 바꾸면서 class AccountCreateView(CreateView): model = User form_class = UserCreationForm success_url = reverse_lazy( 'profileapp:create' ) # reverse_lazy 는 클래스형 뷰에서 reverse 는 함수형 뷰에서 template_name = 'accountapp/create.html' 이 부분을 함수형 뷰로 바꿔서 진행하려는데 위에 만든 api의 json 형식을 어떤식으로 읽고 쓰게 할 수 있는지에 대한 방법론이 궁금합니다... 참고로 rest api 서버의 스토리지는 mariadb이고 추후에는 현 django 프로젝트의 모델을 전부 삭제하고 api로만 진행할 생각입니다. 소셜 로그인과 비슷한 형태로 진행하려고 했는데 참 힘들더라구요.. 공부가 부족한 것 같습니다 ------------------------------------------ 현재 방법을 찾던 중 https://www.daleseo.com/python-json/ 위 포스트를 보고 파이썬 내장 모듈인 json 모듈을 통해 입력받는 것을 공부중에 있습니다 혹시 다른 방법이 있는지 이 방법을 사용할 경우 문제점이 무엇인지 알려주시면 감사하겠습니다 ---------------------------------------------------------------------------- #accountapp/views.py import json , requests # Create your views here. def web_request (method_name , url , dict_data , is_urlencoded= True ): """Web GET or POST request 를 호출 후 그 결과를 dict 형으로 반환 """ method_name = method_name.upper() # 메소드이름을 대문자로 바꾼다 if method_name not in ( 'GET' , 'POST' ): raise Exception ( 'method_name is GET or POST plz...' ) if method_name == 'GET' : # GET 방식인 경우 response = requests.get( url =url , params =dict_data) elif method_name == 'POST' : # POST 방식인 경우 if is_urlencoded is True : response = requests.post( url =url , data =dict_data , headers ={ 'Content-Type' : 'application/x-www-form-urlencoded' }) else : response = requests.post( url =url , data =json.dumps(dict_data) , headers ={ 'Content-Type' : 'application/json' }) dict_meta = { 'status_code' : response.status_code , 'ok' : response.ok , 'encoding' : response.encoding , 'Content-Type' : response.headers[ 'Content-Type' ]} if 'json' in str (response.headers[ 'Content-Type' ]): # JSON 형태인 경우 return {**dict_meta , **response.json()} else : # 문자열 형태인 경우 return {**dict_meta , **{ 'text' : response.text}} python에서 http메소드의 post와 get을 사용할 수 있는 함수를 views.py 에 추가해주고 def signup (request): if request.method == 'POST' : print ( ' 리퀘스트 로그 ' + str (request.body)) username = request.POST.get( 'userid' , '' ) password = request.POST.get( 'userpw' , '' ) pw2 = request.POST.get( 'userpw2' , '' ) print (username , password , pw2) if password == pw2: json_signup = {} json_signup[ "username" ] = username json_signup[ "password" ] = password url = 'http://APIhost:port/register/' # 접속할 사이트주소 또는 IP 주소를 입력한다 data = json_signup # 요청할 데이터 # (example) data = {"username":"test123","password":"testword123"} print (data) response = web_request( method_name = 'POST' , url =url , dict_data =data) return HttpResponse( 'success' ) return render(request , "accounts/signup.html" ) 탬플릿의 http에서 따온 변수 userid, userpw를 따와서 파이썬 내장 모듈인 json을 통해서 json파일을 만들고 data 변수에 입력하고 위에서 만든 함수를 통해 api에 json 으로 POST 요청을 보내는 함수를 디자인하여 해결했습니다. 위 처럼 json을 통해 로그인과 패스워드를 api 서버와 주고받는다면 보안적으로 이슈가 될 만한 사항이 있을까요? -----------------------------------
안녕하세요~! 저는 스프링부트는 현재 안써봤고 이번강의 통해서 접하고있습니다. 스프링부트 내장 WAS를 사용 시에 커버할 수 있는 리소스가 있을거라 생각이드는데 스프링부트내장 WAS사용시에는 확장을 어떻게 하시나요? 근무하시는 회사의 규모면 엄청큰 대규모라고 생각이드는데 어떻게 처리하시는지 궁금합니다. 스프링부트를 실행시켜 놓은 서버를 여러 개 두고 네트워트상에서 로드밸런싱하시는지 그런게 궁금하네요 아니면 내장 WAS한개로도 웬만한 서비스는 다수용이 가능한건지 궁금하네요 좋은강의 감사합니다.