ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기본 Spring 프로젝트 둘러보기
    Spring 2023. 3. 28. 14:11

    서버 시작

     - 톰캣 서버의 Module의 Path를 다음과 같이 수정하고 서버를 실행시킨다.

     - 맨 처음 주소가 localhost:8080/ 이기 때문에, HomeController의 RequestMapping value가 "/"인 함수를 실행한다.

    그 결과로, view 폴더 내부의 home.jsp를 실행한다.


    회원가입 서버

    주소창에 /member를 입력해서 회원가입 페이지로 이동했다.

    하지만, /member 를 가진 Mapping 이 두개가 있다.

    이 때, 두개의 /member 가 각각 Get과 Post 방식을 가지고 있기 떄문에 같은 value값을 가져도 문제가 없다.

    Get은 브라우저에 나타날 페이지로 이동하는데 사용하고 Post는 정보를 회원가입 서버로 보내는데 사용한다.

    ** 현재는 주소창에 URL을 입력해서 들어온 상황이므로, GET 방식을 통해 value가 /member인 Mapping에 접근했고

    그 결과로 member/memberin.jsp 파일을 브라우저에 나타냈다.

     

    memberin.jsp 에서 form이 post 방식이므로, form의 데이터를 submit 하면 /member 컨트롤러는 Post 방식을 작동할 것이다. 따라서 회원가입 할 때 입력했던 id와 password, 별명 데이터는 LoginVo 를 통해 Model에 저장한다.

    그리고 board/list.jsp로 이동한다.

     - memberin.jsp에서 /member로 Post 방식으로 전달된 데이터는 LoginVO.java 에 저장한다.

    이 때 LoginVO.java는 상속되지 않았기 때문에, 오브젝트 생성자를 자동으로 가지게 된다.

    따라서 

    의 member는 사실상 member.toString 을 오버라이딩 해서 사용하고 있는 것이다.

    따라서 member ( member.toString ) 의 출력 값은 다음과 같다.

     

    ** member는 사실 참조변수이기 때문에, 

    에서 return 값을 지정하지 않는다면, member 의 주소를 출력한다.

     


    기능 구현하기

     : 로그인할 때 등 사용자가 입력한 정보를 확인하고 비교할 수 있는 기능을 만들 때 Service를 시용한다.

     

    DB, V , C , M 은 모두 처음 설계한 이후 특별한 일이 없다면 수정하지 않아도 된다.

    다만, 기능을 담당하는 Service만 관리하면 된다.

     

    Service 는 예를 들어, Controller가 받아온 정보를 처리하기 위해 DB에 접근해야 할 때

    Controller가 DB에 직접 접근하지 않고 Service가 DB에 명령어(insert select 등)를 입력해서 그 결과만

    다시 반환한다.

     

    웹 브라우저부터 데이터베이스 까지 접근하는 과정은

    웹 -> 모델 -> 컨트롤러 -> 모델 -> 서비스 -> 데이터베이스

    과정을 거친다.

    데이터베이스로부터 받은 정보를 다시 웹으로 전달해야 할 경우에는

    데이터베이스 -> 모델 -> 서비스 -> 모델 -> 컨트롤러 -> 모델 객체 -> 웹

    과정을 거친다.

     


    회원가입 기능 구현하기

    MemberController에 ls.memreg(member); 추가

    member 객체의 정보를 loginService로 전달한다

    loginService.java 에 public void memreg(LoginVO member); 추가

    member 객체를 전달받음

    LoginServicelmpl.java 에 public void memreg(LoginVO member) { lm.memreg(member); }

    member 객체를 LoginMapper로 전달한다.

    @Autowired
    LoginService ls;
    -> LoginService ls = new LoginService;

     

    LoginMapper.java에 public void memreg(LoginVO member); 추가

    member 객체를 전달받음

    LoginMapper.java에 있는 public void 함수명( 매개변수 ); 명령어를

    mySql 명령어인 <select>, <insert>, <update>, <delete>태그 내부에 받아올 수 있고

    태그의 attribute 중 id에 함수명을 입력해준다. 

    parameterType 을 이용해서 매개변수의 타입을 지정하거나 resultType을 이용해서 매개변수를 객체로 만들어서 태그 내부의 Sql 명령어를 입력하는 것으로 사용할 수 있다.

     

    Java와는 다르게 Mapper.xml 을 만들면 SQL 문법을 그대로 사용할 수 있어서 편리하다.

     

    ** Select 명령어의 경우 Return을 받아야하기 때문에, attribute에 resultType을 꼭 적어줘야한다.

    - 리턴 받은 값을 이용해서 결과를 반환해줘야한다. 해당 코드는 로그인을 확인하기 위한 것 이기 때문에,

    입력받은 id 와 password가 DB에 있는지 없는지 확인한 결과를 ls.login(member) 로 받아서 데이터가 있을 때와

    없을 때 return 하는 페이지를 다르게 설정했다.

    - 가입하기를 클릭하면 정상적으로 데이터가 데이터베이스에 저장된다.

    'Spring' 카테고리의 다른 글

    ArrayList / Mapper 사용예제  (0) 2023.03.29
    프로젝트의 구조  (0) 2023.03.29
    MVC 구조 이해  (0) 2023.03.28
    Spring (in eclips) jar 파일 에러 발생 시  (0) 2023.03.27
    servlet-context (controller 작동 방식)  (0) 2023.03.27
Designed by Tistory.