내가 보려고 정리하는/Spring

웹: jsp spec(2) : 0227

보동이용용 2023. 2. 27. 13:51
반응형

1. 구구단 필요한 단만 출력해주세요 요청 받아 구현하기

 

프롬프트 텍스트

서밋이벤트 => 동기

비동기로 하려면? 서밋이벤트 핸들링을 발생시켜야한다. => 그때는 폼태그 핸들링

event.preventDefault(); ==> 기본 액션을 중단시킨다. ==return false;와 비

 

 

<script type="text/javascript">
	document.querySelector("#generalBtn").addEventListener("click", function(event){
		console.log(event.target);
	});
	document.gForm.addEventListener("submit", function(event){
		event.preventDefault();
		console.log(event.target);
		return false;
	});
</script>

http://localhost/WebStudy01/04/gugudan.jsp?miDan=2&maxDan=2    

                                         --------------------------   // 상대경로

현재창의 출처인 오리진을 모두 가지고 있음. 생략가능한 것

pathname을 form의 action으로 사용함

 

1. 8단 선택

2. 서밋버튼 >>두개의 파라미터 검증 >> 해당하는 구구단 랜더

<%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String param1 = request.getParameter("minDan");
	String param2 = request.getParameter("maxDan");
	int minDan = 2;
	int maxDan = 9;
// 	server side validation
	if(param1!=null){
		if(param1.matches("[2-9]")){
			minDan = Integer.parseInt(param1);
		}else{
			response.sendError(HttpServletResponse.SC_BAD_REQUEST);			
		}
	}
	if(param2!=null){
		if(param2.matches("[2-9]")){
			maxDan = Integer.parseInt(param2);
		}else{
			response.sendError(HttpServletResponse.SC_BAD_REQUEST);			
		}
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%!
	private final String[] clzCases = new String[]{"red", "green"};
%>
<style type="text/css">
	<%
		StringBuffer cssSourse = new StringBuffer();
		String cssPtrn = ".%1$s{background-color:%1$s;}";
		for(String cssCase : clzCases){
			cssSourse.append(  String.format(cssPtrn, cssCase)  );
		}
		out.println(cssSourse);
	%>
</style>
</head>
<body>
<%!
String ptrn = "<td>%d * %d = %d</td>";
private void printTd(int dan, int mul, Object target)throws IOException{
	if(target instanceof JspWriter){
		((JspWriter)target).println(
			String.format(ptrn, dan, mul, (dan*mul))
		);
	}else if( target instanceof StringBuffer){
		((StringBuffer)target).append(
			String.format(ptrn, dan, mul, (dan*mul))
		);
	}
}
private String getClzValue(int dan){
	return clzCases[dan%2];
}
%>
<form name="gForm">
	<input type="number" name="minDan" min="2" max="9" placeholder="최소단" />
	<select name="maxDan" onchange="this.form.submit(); return false;"><!-- 익명함수를 만든 또하나의 방법 -->
		<option value>최대단</option>  <!-- 프롬프트텍스트 -->
		<%
		
		String optPtrn = "<option %2$s value='%1$d'>%1$d단</option>";
//		formatting : 특정 타입의 데이터를 일정한 형식의 문자열로 바꾸는 작업.
//		parsing : 특정 형식의 문자열을 특정 타입의 데이터로 바꾸는 작업
		for(int idx=2; idx<=9; idx++){
			String selected = idx==maxDan ? "selected" : "";
			out.println(String.format(optPtrn, idx, selected));
		}
		
		%>
	</select>
	<input type="submit" value="서밋버튼" id="submitBtn"/> 
		<!-- 1.클릭 2.서밋이벤트 트리거 ->이벤트 타겟이 변경된다.(나->form태그) -->
	<input type="button" value="일반버튼" id="generalBtn"/>
	<input type="reset" value="리셋버튼" />
</form>	
<table>
	<%
		
		String trPtrn = "<tr class='%s'>";
		for(int dan=minDan; dan<=maxDan; dan++){
			String clz = getClzValue(dan);
			out.println(String.format(trPtrn, clz));
			for(int mul=1; mul<=9; mul++){
					printTd(dan, mul, out);
			}
			out.println("</tr>");
		}
	%>
</table>
<script type="text/javascript">
	document.querySelector("#generalBtn").addEventListener("click", function(event){
		console.log(event.target);
	});
	document.gForm.addEventListener("submit", function(event){
// 		event.preventDefault();
		console.log(event.target);
// 		return false;
	});
</script>
</body>
</html>

달력만들기

time템퍼러리 사용해보자 자바 8버

Accept : mime text>> 클라이언트가 받을 데이터 형식

Accept-Encoding : 

Accept-Language : language tag(locale code)  =>  ko-KR, ko;(한글-대한민국, 한글)

==> 이 정보는 request가 가지고 있다.

 

 

DayOfWeek은.... 요일정보, enum

"\\d{1,2}" 반복의 횟수를 범위로 지

 

2차미션

1클릭이벤트

2. 전달의 정보 받을 수 있어야한다.

3. 그 정보를 초기값으로 input

4.submit 하도록.


 

 

 

반응형

'내가 보려고 정리하는 > Spring' 카테고리의 다른 글

웹 보강 : path, IOException : 0227, 0228  (0) 2023.03.02
웹:0228  (0) 2023.02.28
JSP spec : 0224  (1) 2023.02.24
웹 : 서블릿과 템플릿, model1과 model2 차이 : 0223  (0) 2023.02.23
Servlet, MIME - 0222  (0) 2023.02.23