더보기
<%@ 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>
<% 
	//request.setCharacterEncoding("UTF-8");  //한글깨지면 주석제거
	//request.setCharacterEncoding("EUC-KR");  //해당시스템의 인코딩타입이 EUC-KR일경우에
	String inputYn = request.getParameter("inputYn"); 
	String roadFullAddr = request.getParameter("roadFullAddr"); 

%>
</head>
<script>
// opener관련 오류가 발생하는 경우 아래 주석을 해지하고, 사용자의 도메인정보를 입력합니다. ("주소입력화면 소스"도 동일하게 적용시켜야 합니다.)
// document.domain = "abc.go.kr";

/*
		모의 해킹 테스트 시 팝업API를 호출하시면 IP가 차단 될 수 있습니다. 
		주소팝업API를 제외하시고 테스트 하시기 바랍니다.
*/

function init(){
	var url = location.href; // 자기주소  ~/jusoPopup.jsp
	var confmKey = "devU01TX0FVVEgyMDIwMDYwMjA5NDkwMjEwOTgyMDE=";
	var resultType = "4"; // 도로명주소 검색결과 화면 출력내용, 1 : 도로명, 2 : 도로명+지번, 3 : 도로명+상세건물명, 4 : 도로명+지번+상세건물명
	var inputYn= "<%=inputYn%>";
	if(inputYn != "Y"){
		document.form.confmKey.value = confmKey;
		document.form.returnUrl.value = url;
		document.form.resultType.value = resultType;
		document.form.action="http://www.juso.go.kr/addrlink/addrLinkUrl.do"; //인터넷망
		//document.form.action="http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do"; //모바일 웹인 경우, 인터넷망
		document.form.submit();
		
		// 서버로 부터 응답 받으면 무조건 새창이다(html 새로 로딩됨)
		
	}else{
		opener.jusoCallBack("<%=roadFullAddr%>");
		window.close();
	}
}
</script>
<body onload="init();">
	<form id="form" name="form" method="post">
		<input type="hidden" id="confmKey" name="confmKey" value=""/>
		<input type="hidden" id="returnUrl" name="returnUrl" value=""/>
		<input type="hidden" id="resultType" name="resultType" value=""/>
		<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 START-->
		<!-- 
		<input type="hidden" id="encodingType" name="encodingType" value="EUC-KR"/>
		 -->
		<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 END-->
	</form>
</body>
</html>

 

 

변수값들은 파라미터를 받아오지 못했기 때문에 최초에 null이다

 

inputYn이 Y가 아니면 www.juso.go.kr/addrlink/addrLinkUrl.do 

로 이동한다.

해당주소에서 입력하면 다시 jusoPopup으로 가서 roadFullAddr 을 원래페이지에 리턴해준다

 

 

 

 

 

 

 

 

 

 

 

'Web > Jsp' 카테고리의 다른 글

200603 // 블로그 blog 만들기 5 / get, post 받는 방식 / JSTL  (0) 2020.06.03
JSTL 다운로드  (0) 2020.06.03
200602 // blog 블로그 만들기 4  (0) 2020.06.02
블로그 만들기 3  (0) 2020.06.01
쿠키와 세션  (0) 2020.06.01

 

버튼타입을 꼭 기입하자

적지 않으면 다른 input의 유효성체크를 한다

JSP주석처리 ctrl shift c

-------------------

암호화 : 이름

복호화가 되는 것인지 -> Base64

복호화가 안되는 것인지 -> 해시, SHA256, MD5

복호화 안되는 것들 중에서 SHA256을 많이 쓴다

 

1. 주소라이브러리

2. AJAX

3. 게시글 작성 - JSTL / 섬머노트

-----------------------------------------

 

 

 

 

 

 

 

테스트에 넣기

 

 

 

 

 

-

코드예시

더보기

join

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@include file ="../include/nav.jsp" %>

<script>

function goPopup(){
	// 주소검색을 수행할 팝업 페이지를 호출합니다.
	// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.
	var pop = window.open("/blog/juso/jusoPopup.jsp","pop","width=570,height=420, scrollbars=yes, resizable=yes"); 
	
	// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.
    //var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes"); 
}

function jusoCallBack(roadFullAddr){
	// 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.
	
	//document.getElementById("address").value = roadFullAddr; -> 잘됨
	
	//document.myForm.address.value = roadFullAddr; -> 잘됨
	
	var temp = document.querySelector("#address");
	temp.value = roadFullAddr;
	
}

</script>

<div class="container">
	<form action="/blog/user?cmd=joinProc" method="post" class="was-validated">
  <div class="form-group">
	    <label for="username">Username:</label>
	    <input type="text" class="form-control" id="username" placeholder="Enter username" name="username" required>
	    <div class="valid-feedback">Valid.</div>
	    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  
  <div class="form-group">
	    <label for="password">Password:</label>
	    <input type="password" class="form-control" id="password" placeholder="Enter password" name="password" required>
	    <div class="valid-feedback">Valid.</div>
	    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  
   <div class="form-group">
	    <label for="email">Email:</label>
	    <input type="email" class="form-control" id="email" placeholder="Enter email" name="email" required>
	    <div class="valid-feedback">Valid.</div>
	    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  
  <div class="form-group">
	    <label for="address">Address:</label>
	    
	    <input type="button" onClick="goPopup();" value="주소검색" class="btn btn-primary btn-sm"/> <!-- 추가 -->
	    
	    <input type="text" class="form-control" id="address" placeholder="Enter address" name="address" required>
	    <div class="valid-feedback">Valid.</div>
	    <div class="invalid-feedback">Please fill out this field.</div>
  </div>

  <button type="submit" class="btn btn-primary">회원가입 완료</button>
</form>
</div>

<%@include file ="../include/footer.jsp" %>

 

jusoPopup

<%@ 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>
<% 
	//request.setCharacterEncoding("UTF-8");  //한글깨지면 주석제거
	//request.setCharacterEncoding("EUC-KR");  //해당시스템의 인코딩타입이 EUC-KR일경우에
	String inputYn = request.getParameter("inputYn"); 
	String roadFullAddr = request.getParameter("roadFullAddr"); 

%>
</head>
<script>
// opener관련 오류가 발생하는 경우 아래 주석을 해지하고, 사용자의 도메인정보를 입력합니다. ("주소입력화면 소스"도 동일하게 적용시켜야 합니다.)
// document.domain = "abc.go.kr";

/*
		모의 해킹 테스트 시 팝업API를 호출하시면 IP가 차단 될 수 있습니다. 
		주소팝업API를 제외하시고 테스트 하시기 바랍니다.
*/

function init(){
	var url = location.href;
	var confmKey = "devU01TX0FVVEgyMDIwMDYwMjA5NDkwMjEwOTgyMDE=";
	var resultType = "4"; // 도로명주소 검색결과 화면 출력내용, 1 : 도로명, 2 : 도로명+지번, 3 : 도로명+상세건물명, 4 : 도로명+지번+상세건물명
	var inputYn= "<%=inputYn%>";
	if(inputYn != "Y"){
		document.form.confmKey.value = confmKey;
		document.form.returnUrl.value = url;
		document.form.resultType.value = resultType;
		document.form.action="http://www.juso.go.kr/addrlink/addrLinkUrl.do"; //인터넷망
		//document.form.action="http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do"; //모바일 웹인 경우, 인터넷망
		document.form.submit();
	}else{
		opener.jusoCallBack("<%=roadFullAddr%>");
		window.close();
	}
}
</script>
<body onload="init();">
	<form id="form" name="form" method="post">
		<input type="hidden" id="confmKey" name="confmKey" value=""/>
		<input type="hidden" id="returnUrl" name="returnUrl" value=""/>
		<input type="hidden" id="resultType" name="resultType" value=""/>
		<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 START-->
		<!-- 
		<input type="hidden" id="encodingType" name="encodingType" value="EUC-KR"/>
		 -->
		<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 END-->
	</form>
</body>
</html>

 

 

독타입과 메타 수정한다

 

5버전에서는 script만 적는다 나머지는 빼자

 

join.jsp에 수정한 샘플 자바스크립트를 넣는다

 

 

jusoPopup 로직은 아래에서

https://ondolroom.tistory.com/407

 

jusoPopup.jsp 이해

더보기 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% //request.setCharacterEncoding("UTF-8"); //한글깨지면 주석제거 //re..

ondolroom.tistory.com

 

에이작스 AJAX 테스트

 

 

 

<%@ 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="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
div {
	border: 1px solid black;
	margin: 5px;
	padding: 5px;
}
</style>
</head>
<body>

	<div id="reply-box">
		<div id="reply-1" class="re">첫번째 댓글 입니다.</div>
	</div>

	<input type="text" id="tf-reply" />
	<button onclick="start()">댓글쓰기</button>

	<script>
		var num = 1; // 이 값은 원래 db에서 가져와야됨
		function start() {
			num++;
			var a = $('#tf-reply').val();

			// 통신이 성공하면 아래 로직 실행

			$.ajax(
			// ajax 비동기 백그라운드로 다른페이지에 request를 하고 response를 받으면 result에 데이터를 저장한다. 
			// 보낼타입은 json 상대방에게 받을 타입도 json이다. 아래에서 확인

			{ // 오브젝트
				type : 'post',
				url : 'AjaxResponseTest.jsp',
				data : '{"username":"ssar", "password":"1234"}',
				contentType : 'application/json; charset=utf-8',
				dataType : 'json' // 받을데이터를 어떻게 파싱할까 text / json
			}

			).done(
					function(result) { // 통신이 성공
						console.log(result);
						$('#reply-box').prepend(
								"<div id='reply-" + num + "'>" + a + "</div>");
					}).fail(function(error) { // 통신이 실패
				console.log(error);
			});

		}
	</script>

</body>
</html>

 

<%@page import="com.google.gson.Gson"%>
<%@page import="com.cos.blog.dto.ResponseDto"%>
<%@page import="java.io.BufferedReader"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 

	BufferedReader br = request.getReader();
	
	String input = null;
	StringBuilder sb = new StringBuilder();
	while((input = br.readLine()) != null ){
		sb.append(input);
	}
	
	System.out.println("받은데이터 시작---");
	System.out.println(sb.toString());
	System.out.println("받은데이터 끝---");
	
	ResponseDto<String> dto = new ResponseDto<>();
	dto.setStatus(200);
	dto.setData("성공");
	
	Gson gson = new Gson();
	String returnStr = gson.toJson(dto);
	System.out.println(returnStr);
	
	out.println(returnStr); // JSON을 리턴
	
%>

 

 

 

 

 

 

 

 

 

 

 

'Web > Jsp' 카테고리의 다른 글

JSTL 다운로드  (0) 2020.06.03
jusoPopup.jsp 이해  (0) 2020.06.02
블로그 만들기 3  (0) 2020.06.01
쿠키와 세션  (0) 2020.06.01
캐시 cache  (0) 2020.06.01

home.jsp 에서 로그인 확인 코드를 지운다

 

네비게이션에서 로그인시 principal이 있는 것을 확인하여 메뉴를 바꾸도록 함

 

로그아웃 액션을 생성함

 

UsersLoginProcAction에서 로그인 성공시 쿠키에 정보를 담도록함

 

추후 재로그인시 유저이름 칸에 아이디가 있을 것이다

 

 

 

 

'Web > Jsp' 카테고리의 다른 글

jusoPopup.jsp 이해  (0) 2020.06.02
200602 // blog 블로그 만들기 4  (0) 2020.06.02
쿠키와 세션  (0) 2020.06.01
캐시 cache  (0) 2020.06.01
레디스란 Redis  (0) 2020.06.01

쿠키는 클라이언트가 정보를 저장하는 곳

세션은 서버가 정보를 저장하는 곳

세션에 정보를 저장하는 것이 안전하다

response.addCookie 로 클라이언트에게 쿠키를 보낸다

클라이언트가 서버에 처음 요청을 보내면 서버가 세션을 만들어서 response해 줄 때 세션아이디를 보내주고

그후 클라이언트가 서버로 요청 할 때 해당 세션아이디가 같이 전송 된다. 

쿠키는 도메인 별로 관리 (www.naver.com 등)

session.invalidate();를 사용하면 해당 요청을 보낸 유저의 세션아이디만 삭제한다

클라이언트가 쿠키에서 세션아이디를 지우면 세션없이 요청을 보내게 된다

서버는 요청이 일정시간 없다면 세션아이디를 없애버린다(자동 삭제)

-------------------------------

hyuntaeknote.tistory.com/m/3?fbclid=IwAR2dpUXi8IgiNd5nBYG_73g3EL4ANN7xq7Zbt465YKRqDCmDPCHy8IsjFTs

 

HTTP 는 Stateless 한데 로그인은 어떻게 구현할 수 있을까? (세션/쿠키를 이용한 인증)

개요 소셜 네트워크 서비스 'AGORA'를 제작하면서 가장 먼저 개발한 기능은 회원가입/로그인 입니다. 혼자 사용하거나 모든 정보가 공개된 웹 어플리케이션이 아니라면 대부분의 웹 어플리케이션

hyuntaeknote.tistory.com

 

'Web > Jsp' 카테고리의 다른 글

200602 // blog 블로그 만들기 4  (0) 2020.06.02
블로그 만들기 3  (0) 2020.06.01
캐시 cache  (0) 2020.06.01
레디스란 Redis  (0) 2020.06.01
200601 // out.println // request의 메소드  (0) 2020.06.01

캐시 - 이미지 등의 자료를 서버에서 가져와서 클라이언트 컴퓨터에 저장하고 추후 같은페이지를 이용할 때 해당 자료를 클라이언트 컴퓨터에서 가져온다

------------------------

'Web > Jsp' 카테고리의 다른 글

블로그 만들기 3  (0) 2020.06.01
쿠키와 세션  (0) 2020.06.01
레디스란 Redis  (0) 2020.06.01
200601 // out.println // request의 메소드  (0) 2020.06.01
JSP /슬래쉬 있는 것과 없는 것의 차이  (0) 2020.05.29

'Web > Jsp' 카테고리의 다른 글

쿠키와 세션  (0) 2020.06.01
캐시 cache  (0) 2020.06.01
200601 // out.println // request의 메소드  (0) 2020.06.01
JSP /슬래쉬 있는 것과 없는 것의 차이  (0) 2020.05.29
이클립스 톰캣 서버 충돌 날 경우 해결법 링크  (0) 2020.05.29

 

out.println() = <%= %> 같은 것

<%= %>는 서블릿으로 변환 될 때 out.println()이 된다.

------------------------

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Request Test3</title>
<style>
	h1{
		text-align: center;
	}
	table{
		margin:auto;
		width:700px;
		border:1px solid red;
	}
</style>
</head>
<body>
	<h1>쿠키, URL/URI, 요청방식에 관련된 정보 예제</h1>
	<table border="1">
		<tr>
			<td>쿠키정보</td>
			<%
			Cookie[] cookie = request.getCookies();
			if(cookie == null){
			%>
			<td>쿠키가 존재하지 않습니다.</td>
			<% 
			}else{
				for(int i = 0; i<cookie.length; i++){
					%>
					<td><%=cookie[i].getName() %>(<%=cookie[i].getValue(
				)%>)&nbsp; &nbsp; </td>
			<%
			}
			}
			%>
		</tr>
		
		<tr>
			<td>서버 도메인명</td>
			<td><%=request.getServerName() %></td>
		</tr>
		<tr>
			<td>서버 포트번호</td>
			<td><%=request.getServerPort() %></td>
		</tr>
		<tr>
			<td>요청 URL</td>
			<td><%=request.getRequestURL() %></td>
		</tr>
		<tr>
			<td>요청 URI</td>
			<td><%=request.getRequestURI() %></td>
		</tr>
		<tr>
			<td>요청 쿼리</td>
			<td><%=request.getQueryString() %></td>
		</tr>
		<tr>
			<td>클라이언트 호스트명</td>
			<td><%=request.getRemoteHost() %></td>
		</tr>
		<tr>
			<td>클라이언트 IP주소</td>
			<td><%=request.getRemoteAddr() %></td>
		</tr>
		<tr>
			<td>프로토콜</td>
			<td><%=request.getProtocol() %></td>
		</tr>
		<tr>
			<td>요청방식</td>
			<td><%=request.getMethod() %></td>
		</tr>
		<tr>
			<td>컨텍스트 경로</td>
			<td><%=request.getContextPath() %></td>
		</tr>
	</table>
</body>
</html>

-----------------

 

 

+ Recent posts