2024. 2. 21. 16:18ㆍ2023.11.21-2024.05.31
// 글쓰기 2024-02-16, 2024.02.21
@PostMapping("/write") // 내용, 제목 받아서 -> db 저장 -> 보드로 이동
// public String write(@Param("title") String title, @Param("content") String content) {
// 02.20 로그인관련 request 추가
public String write(WriteDTO dto) {
//로그인 검사하기
// System.out.println(dto.getTitle());
// System.out.println(dto.getContent());
if(util.getSession().getAttribute("mid") != null) {
int result = boardService.write(dto);
if(result == 1) {
return "redirect:/detail?no="+dto.getBoard_no();
} else {
return "redirect:/error";
}
} else {
return "redirect:/login";
}
}
// 댓글쓰기 2024.02.19 psd == 글번호 no, 댓글내용 comment, 글쓴이, 2024.02.21
// 2024-02-20 session 추가
@PostMapping("/commentWrite")
public String commentWrite(CommentDTO comment) {
if(util.getSession().getAttribute("mid") != null) {
int result = boardService.commentWrite(comment);
return "redirect:/detail?no="+comment.getNo();
} else {
return "redirect:/detail?no="+comment.getNo();
}
@GetMapping("/write")
public String write() {
return "redirect:/login?error=2048";
}
login.jsp
파마미터로 오는 error가 있다면 에러 화면에 출력하기
${param.error }
</body>
body 닫는 태그 위에 적어주기, 위에 스위티 얼랏 스크립트 붙여넣기
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
파라미터로 오는 error가 있다면 에러 화면에 출력하기
<c:if test=" ${param.error ne null}">
<script type="text/javascript">
Swal.fire("Oops!", "잘못된 접근입니다." , "warning");
</script>
</c:if>
</body>
로그인 컨트롤러
//세션만들기
HttpSession session = request.getSession();
session.setAttribute("mid", id);
session.setAttribute("mname", login.getMname());
return "redirect:/index";
} else {
//잘못된 로그인일 경우 로그인 창으로 이동하기 = 5번 시도했으면 잠그기.
return "redirect:/login?login=1024";
}
<c:if> 추가
<c:if test="${parm.login ne null }">
<script type="text/javascript">
Swal.fire("로그인 할 수 없습니다.", "올바른 아이디와 비밀번호를 입력하세요.", "error");
</script>
</c:if>
</body>
로그인 안했을때 글쓰기 버튼 안보인다.
데이터베이스에 mcount 추가
LoginController.java
} else {
//잘못된 로그인일 경우 로그인 창으로 이동하기 = 5번 시도했으면 잠그기.
//해당 id의 mcount를 +1시키기
loginService.mcountUp(loginDTO);
//서비스-DAO-매퍼로 가면된다.
return "redirect:/login?login=1024";
}
loginService.java>mcountUp
public void mcountUp(LoginDTO loginDTO) {
loginDAO.mcountUp(loginDTO);
}
LoginDAO>mcountUp
public void mcountUp(LoginDTO loginDTO) {
sqlSession.update("login.mcountUp", loginDTO);
}
login-mapper
<update id="mcountUp" parameterType="loginDTO">
UPDATE member SET mcount=mcount+1 WHERE mid=#{id}
</update>
LoginDTO > mcount 추가
package org.mask.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoginDTO {
private int count, mcount;
private String id, pw, mname;
}
로그인 안될때 못하게 하기 (왜....진짜왜.....퉷)
login-mapper.xml 수정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="login">
<select id="login" parameterType="loginDTO" resultType="loginDTO">
<![CDATA[
SELECT COUNT(*) as count, mname, mcount, mpw as pw
FROM member
WHERE mid=#{id} AND mgrade > 4
]]>
</select>
<update id="mcountUp" parameterType="loginDTO">
UPDATE member SET mcount=mcount+1 WHERE mid=#{id}
</update>
</mapper>
loginController>login 수정
@PostMapping("/login")
public String login(HttpServletRequest request) {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// System.out.println("id: "+id+" / pw : "+pw);
LoginDTO loginDTO = new LoginDTO();
loginDTO.setId(id);
loginDTO.setPw(pw);
LoginDTO login = loginService.login(loginDTO);
if(login.getCount() == 1 && login.getMcount() < 5) {
if(login.getPw().equals(loginDTO.getPw())) {//비밀번호 비교
//세션만들기
HttpSession session = request.getSession();
session.setAttribute("mid", id);
session.setAttribute("mname", login.getMname());
//해당 id의 mcount를 0으로 만들기
return "redirect:/index";
} else {
//mcountUP
loginService.mcountUp(loginDTO);
return "redirect:/login?count="+login.getMcount();
}
} else if(login.getMcount() < 5){
return "redirect:/login?count="+login.getMcount();
} else {
//잘못된 로그인일 경우 로그인 창으로 이동하기 = 5번 시도했으면 잠그기.
//해당 id의 mcount를 +1시키기
loginService.mcountUp(loginDTO);
return "redirect:/login?login=1024";
}
}
LoginDTO 수정
package org.mask.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoginDTO {
private int count, mcount;
private String id, pw, mname;
}
'2023.11.21-2024.05.31' 카테고리의 다른 글
20240223 스프링(파일 체크, 파일 업로드 , 갤러리 만들기) (0) | 2024.02.23 |
---|---|
20240222 스프링(요구사항 확인-읽음 수 올리기,파일업로드, 디비 암호화) (0) | 2024.02.22 |
20240221 스프링(글쓰기, 댓글쓰기 ip, 엔터키처리) (1) | 2024.02.21 |
240220 스프링(로그인, 로그아웃) (0) | 2024.02.20 |
240220 스프링(댓글창, 댓글 출력, 페이징) (0) | 2024.02.20 |