오늘보다 더 나은 내일의 나에게_

비전공자의 IoT 국비 교육 수강일지 Day_29 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_29

chan_96 2022. 1. 27. 18:20
728x90
예제 
빨강, 초록, 파랑 중에 원하는 색을 입력했을 때, 웹 브라우저 배경색이 바뀌도록 작성

더보기
let color = prompt("색깔을 적어주세요(빨강,초록,파랑)");

if(color == "빨강"){
    document.body.style.backgroundColor = "red";
}else if(color == "초록"){
    document.body.style.backgroundColor = "green";
}else if(color == "파랑"){
    document.body.style.backgroundColor = "blue";
}

 


 

반복문

예제
두 개의 숫자를 입력받아 그 범위에 해당하는 숫자의 합을 구하세요



더보기
let num1 = Number(prompt("시작할 숫자를 입력해주세요"));
let num2 = Number(prompt("마지막 숫자를 입력해주세요"));

let total = 0;

for (let i = num1;i <= num2;i++) {
    total += i;
}

console.log(num1+"부터 "+num2+"까지의 합 >>",total);

 

예제
다음 랜덤하게 뽑인 숫자를 맞추는 프로그램. 아래 결과와 같은 결과를 출력

더보기
let ran = Math.floor(Math.random()*100);
let num;

while(true){
    num = Number(prompt("숫자를 입력해주세요!"));
    if(num < ran){
        alert("입력한 숫자보다 큰 수 입니다.");
    }else if(num > ran){
        alert("입력한 숫자보다 작은 수 입니다.");
    }else{
        alert("정답입니다! 축하합니다.");
        break;
    }
}

 


 

자바스크립트 실행위치

내부
*작성위치에 따라 실행순서와 브라우저 렌더링에 영향을 미친다.
- <head> 혹은 </body> 태그 앞에 작성
- <head> 내 작성 _ 단순한 로직처리(설정값 초기화)
- </body> 앞 작성 _ 복잡한 로직처리(제어)


외부
외부에서 작성된 .js 파일 사용
- 관리가 편리하다.
- 소스코드를 숨길 수 있다.
- 재사용할 수 있다.


인라인
HTML태그 내부에 이벤트 속성 삽입

 


 

배열

여러 자료들을 한꺼번에 다룰 수 있는 자료구조, 여러 자료형을 섞어서 하나의 배열에 저장 가능

 

배열의 특징

- 인덱스와 인덱스에 대응한는 데이터 들로 이루어진 자료 구조
>> 배열에 데이터를 추가할 때 자동으로 공간 할당

- 모든 타입을 저장할 수 있는 구조
>> 한 배열의 요소가 모두 같은 타입일 필요 없음, 다른 배열이나 객체를 포함할 수도 있음

- 인덱스 0부터 시작
>> 배열의 시작 위치에서부터 데이터가 있는 상대적인 위치를 의미

 

배열 선언 및 생성

배열 선언
let nameArr = [];
var nameArr = new Array();​


배열 생성
nameArr = ["다훈", "승현", "수진"];
var nameArr = new Array("다훈", "승현", "수진");​

 

배열 접근

- 반드시 배열 생성 후 접근할 수 있다

- 배열 변수명과 []사이에 원소의 인덱스를 적어 접근

- 인덱스 0부터 시작

 

 

배열의 크기

- 배열의 크기는 동적이다

- 배열의 크기가 지정되어 있어도 데이터를 추가하면 저장공간이 자동으로 할당된다

- 배열의 크기는 배열의 length 프로퍼티(property)에 저장

 

 

예제
- 23,54,78,13,44 값들이 저장되어 있는 arr 배열이 있다.
 가장 큰 수를 찾아서 출력
더보기
let arr = [23,54,78,13,44];
let max = arr[0];

for (let i = 1; i < arr.length; i++) {
    if(max < arr[i]){
        max = arr[i];
    }
}
alert("최댓값 >> "+ max);

 

예제
표 출력
자바스크립트 표 출력
자바스크립트 표 출력

 

더보기
let subNum = Number(prompt("과목 수를 입력해주세요"));
let subName = [];
let subScore = [];
let total = 0;
let avg = total/subNum;

for (let i = 0; i < subNum; i++) {
    subName[i] = prompt("점수를 입력할 과목명을 입력해주세요 >>");
}

for (let i = 0; i < subNum; i++) {
    subScore[i] = Number(prompt(subName[i]+"의 점수 입력 >> "));
    total += subScore[i];
}


document.write("<table border='1'><tr>");
for (let i = 0; i < subNum; i++) {
    document.write("<td>"+subName[i]+"</td>");
}
document.write("<td>총합</td><td>평균</td></tr>");

document.write("<tr>");
for (let i = 0; i < subNum; i++) {
document.write("<td>"+subScore[i]+"</td>");
}
document.write("<td>"+total+"</td><td>"+(total/subNum)+"</td>");
document.write("</tr></table>");

 

 

배열함수

push( ) : 배열의 맨 마지막 인덱스에 데이터 넣기

pop( ) : 배열의 맨 마지막 인덱스 데이터 삭제

unshift( ) : 배열의 맨 앞 인덱스 데이터 추가

shiift( ) : 배열의 맨 앞 인덱스 데이터 삭제

 

 


사용자가 서버프로그램으로 값을 보낼 수 있는 두가지 방법

get : URL을 통해서 데이터를 전달 
- 보안에 취약함
- 보내는 데이터크기에 제한 O
- 속도가 빠름



post : 패킷을 통해서 데이터를 전달
- 보내는 데이터크기 제한 X
- 속도가 느림

인코딩 설정 => request.setCharacterEncoding("euc-kr");

 

 

인코딩 변경(get방식)

서버 패키지에 server.xml 클릭 후 밑에 Source클릭! 

 

예제
html 표를 만들고 post방식으로 입력한 값을 console창과 브라우저에 출력

표 양식
표 양식

더보기

html 코드

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="euc-kr">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
	<!-- 서버주소 : ex05
		보내는 방식 : post
		입력태그에 name값 설정
	 -->
	<form action="ex05" method="post">
		<table align = "center" width = 400 bgcolor = "white" bordercolor = "white">
		    <tr>
		        <th align = "left" bgcolor = "gray" colspan =2 height = 50>
		            Step1 : 아이디 / 비번 입력
		        </th>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>아이디 : </td>
		        <td> <input type = "text" name="id"> </td>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>비밀번호 : </td>
		        <td> <input type = "password" name="pw"> </td>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>비밀번호 확인 : </td>
		        <td> <input type = "password" name="pwCheck"> </td>
		    </tr>
		
		    <tr>
		        <th align = "left" bgcolor = "gray" colspan =2 height = 50>
		            Step2 : 개인정보
		        </th>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>성별 : </td>
		        <td> 남<input type = "radio" name = "gender" value="남">
		            여<input type = "radio" name = "gender" value="여">
		        </td>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>혈액형 : </td>
		        <td>
		            <select name="bloodType">
		                <option>A형</option>
		                <option>B형</option>
		                <option>O형</option>
		                <option>AB형</option>
		            </select>
		        </td>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>생일 : </td>
		        <td> <input type = "date" name="date"> </td>
		    </tr>
		
		    <tr>
		        <th align = "left" bgcolor = "gray" colspan =2 height = 50>
		            Step3 : 선호도
		        </th>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>취미 : </td>
		        <td> 
			        축구<input type = "checkbox" name = "hobby" value="soccer">
			        야구<input type = "checkbox" name = "hobby" value="baseBall">
			        농구<input type = "checkbox" name = "hobby" value="basketBall">
		    </td>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "right" width = 150>좋아하는 색깔 : </td>
		        <td>
		            <input type =  "color" name="color">
		        </td>
		    </tr>
		
		    <tr>
		        <th align = "left" bgcolor = "gray" colspan =2 height = 50>
		            Step4 : 적고 싶은 말
		        </th>
		    </tr>
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td colspan = 2>
		            <textarea cols = 55 rows = 5 name="text"></textarea>
		        </td>
		    </tr>
		
		    <tr bgcolor = "whitesmoke" height = 35>
		        <td align = "center" colspan = 2>
		            <input type = "submit">
		            <input type =  "reset">
		        </td>
		    </tr>
		</table>
    </form>
</body>
</html>


servlet 코드
package com.example;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ex05")
public class ex05 extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("euc-kr");
		
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String pwCheck = request.getParameter("pwCheck");
		
		String gender = request.getParameter("gender");
		String bloodType = request.getParameter("bloodType");
		String date = request.getParameter("date");
		
		String hobby[] = request.getParameterValues("hobby");
		String color = request.getParameter("color");
		
		String text = request.getParameter("text");
		
		String hobby_res = "";
		
		for (int i = 0; i < hobby.length; i++) {
			hobby_res += hobby[i]+" ";
		}
		
		
		response.setContentType("text/html; charset=euc-kr");
		PrintWriter out = response.getWriter();
		
		out.print("id :" + id+"<br>");
		out.print("pw :" + pw+"<br>");
		out.print("pw :" + pwCheck+"<br>");
		out.print("성별 :" + gender+"<br>");
		out.print("혈액형 :" + bloodType+"<br>");
		out.print("생일 :" + date+"<br>");
		out.print("취미 :" + hobby_res+"<br>");
		out.print("좋아하는 색깔 :" + color+"<br>");
		out.print("적고 싶은 말 :" + text);
		
		
		
		System.out.println("id : " + id);
		System.out.println("pw : " + pw);
		System.out.println("pw확인 : " + pwCheck);
		System.out.println("성별 : " + gender);
		System.out.println("혈액형 : " + bloodType);
		System.out.println("생일 : " + date);
		
		System.out.println("취미 : " + hobby_res);
		
		System.out.println("좋아하는 색깔 : " + color);
		System.out.println("적고 싶은 말 : " + text);
	}
}

 

 

request.getParameterValues() => 가져오는 값이 여러개 일 때 사용(값이 여러개이므로 배열로 받아야한다)

 

 

728x90
Comments