SPRING 비밀번호 암호화(db에 저장)
https://mvnrepository.com/ - spring security web 검색 - 첫번째꺼 클릭
- 아무버전(최신 버전) 클릭 - maven 부분 복사 -
pom.xml 붙여넣기(버전을 스프링 버전에 맞게 ${org.springframework-version})
service쪽에서 BCryptPasswordEncoder en = new BCryptPasswordEncoder();
en.encode(암호화 할 변수) : 해당 변수가 암호화 된다
en.matches("비교할 변수", "암호화된 변수") : 암호화한 변수를 풀어서 비교하는 방법 (복호화)
SPRING 다음 주소 api 사용
다음 주소 api 검색 - 해당하는 api 복사 - register.jsp에 붙여넣기
같은 name의 여러개의 값을 dto로 받아오면 ,(콤마)를 기준으로 한번에 받아온다
* split을 사용하여 ,(콤마)를 기준으로 잘라낼 수 있다.
같은 name의 여러개의 값을 req로 받아오려면, req.getParameterValues()로 받아온다 (배열 형식)
* 해당하는 api관련 script문은 resources폴더 안에서 따로 관리 (javascript 파일)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script type="text/javascript" src="<%= request.getContextPath() %>/resources/js/daumPost.js">
</script>
</head>
<body>
<%@ include file="/WEB-INF/views/default/header.jsp" %>
<h3> - 회 원 가 입 -</h3>
<form action="register" method="post">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="text" id="addr1" name="addr" readonly placeholder="우편번호"><br>
<input type="text" id="addr2" name="addr" readonly placeholder="주소"><br>
<input type="text" id="addr3" name="addr" placeholder="상세주소">
<button type="button" onclick="daumPost()">우편번호 검색</button><br>
<input type="submit" value="가입"><br>
</form>
</body>
</html>
function daumPost() {
new daum.Postcode({
oncomplete: function(data) {
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분입니다.
// 예제를 참고하여 다양한 활용법을 확인해 보세요.
console.log(data);
console.log(data.userSelectedType)
let addr = "";
if (data.userSelectedType == "R") {
addr = data.roadAddress;
}else{
addr = data.jibunAddress;
}
document.getElementById("addr1").value=data.zonecode;
document.getElementById("addr2").value=addr;
document.getElementById("addr3").focus();
}
}).open();
}
@PostMapping("register")
public String register(MemberDTO dto, HttpServletRequest req) {
System.out.println("addr : " + dto.getAddr());
String[] addrs = req.getParameterValues("addr");
System.out.println(addrs[0]);
System.out.println(addrs[1]);
System.out.println(addrs[2]);
int result = ms.register(dto);
if(result == 1) {
return "redirect:login";
}
return "redirect:register_form";
}
실행 결과
SPRING Interceptor
* 컨트롤러 실행 전, 컨트롤러가 실행 후 처리할 게 있으면 Interceptor 사용
Filter : DispatcherServlet이 실행되기 전, web.xml 설정
Interceptor : DispatcherServlet이 실행된 후, spring-web.xml 설정
preHandle : 컨트롤러가 호출되기 전 실행
postHandle : 컨트롤러가 실행된 후 호출
Interceptor 사용 설정
해당 클래스에 extends HandlerInterceptorAdapter 상속을 받아야 Interceptor 사용 가능
(alt + shift + s) - Override/Implement Methods - postHandle, preHandle 체크 - ok
preHandle 실행 전, postHandle 컨트롤러 실행 후
* preHandle, postHandle메소드의 파라미터값 변경 불가
* return true : 해당 경로로 보내줌, return false : 해당 경로로 안 보내줌
Interceptor 빈 생성
servlet-context.xml - <beans:bean id="변수명" class="Interceptor클래스 위치" />
<interceptors><interceptor><mapping path="경로 지정" /><benas:ref bean="변수명" /></interceptor></interceptors>
* 초록색 : 같은 값

package com.care.root.interceptor;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.care.root.common.SessionCommon;
public class MemberInterceptor extends HandlerInterceptorAdapter implements SessionCommon{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("index 실행 전 출력");
HttpSession session = request.getSession();
if (session.getAttribute(LOGIN) == null) {
//response.sendRedirect("login");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<script>alert('로그인 먼저 하세요');"
+"location.href='login';</script>");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("index 실행 후 동작");
}
}
<beans:bean id="mi" class="com.care.root.interceptor.MemberInterceptor" />
<interceptors>
<interceptor>
<mapping path="/member/memberInfo" />
<mapping path="/member/info" />
<beans:ref bean="mi" />
</interceptor>
</interceptors>
실행 결과


'sts_spring' 카테고리의 다른 글
SPRING 6일차 (email 전송 & 인증, scheduler, ajax, json방식, RestController, SPA) (0) | 2024.05.16 |
---|---|
SPRING 5일차 (자동 로그인, 보안 처리 XSS, 파일 업로드 & 다운로드) (0) | 2024.05.14 |
SPRING 3일차 (cookie, session 및 database) (0) | 2024.05.09 |
SPRING 2일차 (annotation, redirect) (0) | 2024.05.08 |
SPRING 1일차 (설치, 설정 및 실행) (0) | 2024.05.02 |