-
기본 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