Spring을 이용한 CRUD(삭제), 로그인
게시글 삭제
삭제 post방식 ,삭제 할 pk값, 수정/버튼 디자인을 하나로 묶어 사용할 때 폼태그를 따로 두는게 효율적이다.
view 페이지에서 삭제하려는 게시글의 bidx를 넘겨 게시글을 삭제하는 버튼을 만든다.
삭제버튼을 눌렀을때에는 post 방식으로 삭제가 된다.
button태그에 method를 지정해주지않으면 기본값은 get이 된다.
BoardMapper.xml 에서 게시글을 삭제하는 쿼리를 작성한다.
boardtb에서 bidx가 #{bidx}인 게시글을 삭제한다는 쿼리문.
BoardService 인터페이스에서 bidx를 매개값으로 넘기는 deleteByBidx 추상메소드를 만들어준다.
삭제기능은 결과값이 없고 삭제에 대한 카운트를 넘기기 때문에 반환형은 int이다.
BoardServiceImpl에서 추상메소드를 구현해준다.
BoardDAO에서 키 값으로 넘어온 bidx를 삭제하는 쿼리의 위치를 반환한다.
BoardServiceImpl로 돌아와 return값으로 BoardDAO의 deleteByBidx 메소드를 반환한다.
boatdtb에는 reply하위 테이블이 존재하기때문에 하위테이블 관련 정보를 지우고 해당하는 게시글을 삭제해야한다.
Contoller에서 삭제하고자하는 bidx를 받는 BoardService의 deleteByBidx 메소드를 실행하여
화면에서 넘어온 bidx에 해당하는 게시글이 삭제되면 list.do로 경로를 이동한다.
Contoller에서 넘긴 매개값으로mybatis Mapper까지 넘긴다.
로그인
로그인을 할 수 있는 login.jsp를 만들어주고 전송방식은 post로 지정한다.
관심사가 달라졌기때문에 UserController,Service,Dao를 새로 생성한다.
UserController 만들고 넘겨야할 데이터가 없기때문에 로그인 페이지를 forward 한다.
package edu.study.vo;
public class UserVO {
private int uidx;
private String id;
private String password;
private String name;
private String addr;
private String phone;
private String rdate;
public int getUidx() {
return uidx;
}
public void setUidx(int uidx) {
this.uidx = uidx;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getRdate() {
return rdate;
}
public void setRdate(String rdate) {
this.rdate = rdate;
}
@Override
public String toString() {
return "UserVO [uidx=" + uidx + ", id=" + id + ", password=" + password + ", name=" + name + ", addr=" + addr
+ ", phone=" + phone + ", rdate=" + rdate + "]";
}
}
UserVO 생성
UserVO의 별칭을 지어주는 mybatis-config.xml을 작업한다.
UserMaaper.xml을 만들어주고 로그인시 필요한 정보를 조회하는 쿼리를 작성한다.
usertb에서 id가 #{id}이고 password가 #{password}인 uidx,id,name을 조회한다는 쿼리문.
resultType에는 mybatis-config.xml에서 지어준 별칭을 사용한다.(resultType은 select에서만 사용)
userVO에 조회한 결과는 담는다.
UserDAO클래스를 생성해주고 UserVO의 vo를 매개값으로 받아 한명의 회원정보만 조회하는 login메소드를 return한다.
UserService 인터페이스를 만들어주고 UserVO vo를 매개변수로 가지는 선언부만 존재하는 메소드 작성한다.
UserService 인터페이스를 구현할 UserServiceImp 구현클래스를 만들고 인터페이스에 만든 추상메소드를 구현한다.
조회하는 유저의 데이터를 담을 그릇으로 타입은 UserVO타입이 반환값이된다.
화면에서 넘어온 id와 password를 받는 vo의 매개값이되는 것.
loginVO에 조회된 id와 password가 담긴다.
Controller로 돌아와 로그인 정보를 담고있는 vo , 로그인정보를 저장하는HttpSession 인터페이스를 import 해주고
세션에 setAttribute하여 로그인 정보를 담는다.
if문을 이용하여 세션에 정보를 저장할지에 대한 여부를 작성한다.
session 스코프를 사용하기 위해 false -> true 변경한다.
page session="false"인 경우에는 세션 영역의 데이터를 사용하지 못 한다.
if문을 사용하여 로그인 여부에 따라 링크가 다르게 출력되게 하고 로그인이 되었으면 회원 아이디를 화면에 출력하게한다.
로그인 성공시 위와같이 화면에 출력된다.