@RequestMapping("usr/article/doModify")
@ResponseBody
public ResultData<Article> doModify(int id, String title, String body) {
Article article = articleService.getArticle(id);
if (article == null) {
return ResultData.from("F-1", Ut.f("%d번 게시물은 존재하지 않습니다.", id));
}
articleService.modifyArticle(id, title, body);
article = articleService.getArticle(id);
return ResultData.from("S-1", Ut.f("%d번 게시물을 수정 했습니다.", id), article);
}
doDelete
에도 동일하게 ResultData를 적용 @RequestMapping("usr/member/doJoin")
@ResponseBody
public ResultData<Member> doJoin(String loginId, String loginPw, String name, String nickname, String cellphoneNum,
String email) {
if (Ut.empty(loginId)) {
return ResultData.from("F-1", "아이디를 입력 해주세요.");
}
~~~~
생략
~~~~
ResultData<Integer> joinRd = memberService.doJoin(loginId, loginPw, name, nickname, cellphoneNum, email);
if (joinRd.isFail()) {
return (ResultData)joinRd;
}
Member member = memberService.getMemberById(joinRd.getData1());
return ResultData.newData(joinRd, member);
}
(ResultData)
joinRd; : joinRd
의 타입은 ResultData<Integer>
이기때문에 형변환 필요(int)joinRd.getData1()
) 에서 joinRd는 ResultData<Integer>
이고<Integer>
이기 때문에 (int)를 생략가능하다. @RequestMapping("usr/member/doLogin")
@ResponseBody
public ResultData doLogin(HttpSession httpSession, String loginId, String loginPw) {
if (Ut.empty(loginId)) {
return ResultData.from("F-3", "이름을 입력 해주세요.");
}
if (Ut.empty(loginPw)) {
return ResultData.from("F-4", "닉네임 입력 해주세요.");
}
Member member = memberService.getMemberByLoginId(loginId);
if(member==null) {
return ResultData.from("F-1", Ut.f("해당하는 아이디(%s)를 찾을수 없습니다.", loginId));
}
if(member.getLoginPw().equals(loginPw)==false) {
return ResultData.from("F-1", "비밀번호가 일치하지 않습니다.");
}
httpSession.setAttribute("loginedMemberId", member.getId());
httpSession.setAttribute("loginedMemberLoginId", member.getLoginId());
return ResultData.from("S-1", Ut.f("%님 환영합니다.", member.getName()));
}
메소드에서 세션을 주입받는 방식
: 메소드에서 매개변수를 통해 주입받는 방식으로 구현한다면, 선언시에 Servlet Container에게 Session을 달라고 요청 @RequestMapping("usr/member/doLogout")
@ResponseBody
public ResultData doLogout(HttpSession httpSession) {
boolean isLogined = false;
if(httpSession.getAttribute("loginedMemberId") !=null) {
isLogined= true;
}
if(isLogined==false) {
return ResultData.from("F-1", "로그아웃 상태 입니다.");
}
httpSession.removeAttribute("loginedMemberId");
httpSession.removeAttribute("loginedMemberLoginId");
return ResultData.from("S-1", "로그아웃 했습니다.");
}
loginedMemberId
, loginedMemberLoginId
가 저장되있다.null
이라면 로그인이 되어있지 않은상태removeAttribute()
메소드를 통해 loginedMemberId,loginedMemberLoginId 제거1) article/doAdd 시 로그인 여부 체크, 작성자에 대한 정보 저장
@RequestMapping("usr/article/doAdd")
@ResponseBody
public ResultData<Article> doAdd(HttpSession httpSession,String title, String body) {
boolean isLogined = false;
int loginedMemberId = -1;
if(httpSession.getAttribute("loginedMemberId") !=null) {
isLogined= true;
loginedMemberId = (int)httpSession.getAttribute("loginedMemberId");
}
if(isLogined==false) {
return ResultData.from("F-A", "로그인 후 이용가능 합니다.");
}
if (Ut.empty(title)) {
return ResultData.from("F-1", Ut.f("제목을 입력해 주세요."));
}
if (Ut.empty(body)) {
return ResultData.from("F-2", Ut.f("내용을 입력해 주세요."));
}
ResultData<Integer> writeRd = articleService.writeArticle(loginedMemberId,title, body);
int id = (int) writeRd.getData1();
Article article = articleService.getArticle(id);
return ResultData.newData(writeRd, article);
}
loginedMemberId
, title, body) : 게시물 작성시 로그인된 회원의 아이디
를 남김2) 게시물 작성 쿼리문 수정
<insert id="writeArticle">
INSERT INTO article
SET regDate = NOW(),
updateDate =
NOW(),
memberId = #{loginedMemberId},
title = #{title},
`body`= #{body}
</insert>
3) memberId field 추가
public class Article {
private int id;
private String regDate;
private String updateDate;
private int memberId;
private String title;
private String body;
}
1. 로그인 여부체크
boolean isLogined = false;
int loginedMemberId = -1;
if(httpSession.getAttribute("loginedMemberId") !=null) {
isLogined= true;
loginedMemberId = (int)httpSession.getAttribute("loginedMemberId");
}
if(isLogined==false) {
return ResultData.from("F-A", "로그인 후 이용가능 합니다.");
}
2. 삭제 권한 체크
Article article = articleService.getArticle(id);
if (article == null) {
return ResultData.from("F-1", Ut.f("%d번 게시물은 존재하지 않습니다.", id));
}
if((int)httpSession.getAttribute("loginedMemberId") !=article.getMemberId()) {
return ResultData.from("F-2", "해당 게시물에 대한 삭제 권한이 없습니다.");
}