용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요. 강원도 홍천 서석면에 위치해있으며 1급수 용오름계곡 바로 옆에 있습니다.홍천군 1등 마을로 마을에서 직접 관리하는 용오름캠핑장,펜션 10개를 운영하고 있으며 각종 모임이 가능하도록 식당,회의실,야외무대가 설치되어 있습니다.홍천군 1등 마을답게 캠핑장,펜션 마을 전지역 wi-fi 사용이 가능하며 매년 봄 팸투어 실시, 여름엔 마을에서 재배한 홉으로 직접만든 맥주축제,마리소리 음악축제 를 열고 있습니다.계곡의 경우 수심이 다양하여 다이빙 포인트가 2곳이 있으며 아이들이 안전하게 물놀이를 할 수 있는 곳도 여러 곳 있습니다. 홍천 용오름캠핑장 팸투어 다녀왔어요. 요즘은 농산촌체험마을에서 캠핑과 여러프로그램을 같이 하는 곳이 추세더라고요. 아미산이 둘러쌓인 청정계곡이 흐르는 아름다운 용오름체험휴양마을 에서 운영하는 홍천 용오름캠핑장 팸투어 다녀왔어요. 테크 앞 강이... 붕어빵 가족의 담너머 세상구경 https://m.blog.naver.com/1092119/220711235599 가을여행-홍천여행- 홍천 용오름 마을 첫째날 여행의 계절 가을입니다. 요즘 저희는 강원도에 꽃힌 상태인지라...카페 행복한 이티씨와 함께하는 홍천 용오름 마을 1박2일 체험에 참가를 하였답니다! 평소 체험 시간보다 조금 늦은 출발을 해서 차가 밀리지 않으려나... 귀여운 단지 https://m.blog.naver.com/sanguidan/50181593653 용오름마을 캠핑장 여름휴가의 시즌이다.. 강원도의 계곡과 시원함을 만끽하기 위해 캠핑장을 검색하다 우연히 알게 된 홍천의 용오름 캠핑장.. 성수기라 캠핑장 요금들이 사악하다 용오름캠핑장 옆엔 해미르 캠핑장이 있는데... ★살로몬의 잇츠캠핑★ https://m.blog.naver.com/freeguy9040/20163628934 맥주효모로 만든 용오름맥주마을 바쏘 맥주샴푸와 맥주마스크팩... 1988년까지 맥주 원료인

Lecture 45 - JSP(3) 웹 프로그래밍 기초, 로또발생기(JSP버전...

Lecture 45 - JSP(3) 웹 프로그래밍 기초, 로또발생기(JSP버전...

베니지오 IT 월드

갬성개발러 Bennyziio 2019. 5. 20. 10:39

JSP - 웹 프로그래밍 기초

URL과 웹 페이지

: 웹 브라우저의 주소줄에 표시되는 것을 URL이라고 부른다. Uniform Resource Locator의 약자로 일종의 주소와 같은 역활이다.

주소줄에 URL을 입력하면 웹 브라우저에 URL에 해당하는 내용이 출력되는데 이것이 웹 페이지이다. 이런 웹 페이지들의 묶음이 웹 사이트이며 홈페이지라고도 불리운다.

웹 페이지 주소를 표현하는데 사용되는 URL의 구성요소

웹 브라우저와 웹 서버

: 웹 브라우저에 URL을 입력하면 웹 서버라 불리는 프로그램이 웹 브라우저에 웹 페이지를 제공한다. 아래 그림에서 4번 과정이 웹 서버가 웹 브라우저에 웹 페이지를 제공하는 단계이다. 웹 브라우저가 웹 서버에 웹 페이지를 달라고 하는 것을 요청한다고 표현하고 요청한 웹 페이지를 웹 브라우저에 제공하는 것을 응답이라고 한다.

Domain Name Server IP <-> Domain 클라이언트 서버 웹 브라우저 -> URL -> 웹서버 + Web Application Server - 데이터베이스 ... <- html <- (Web Container) : 프로그램 해석 jsp(java server page) <- java - tomcat .. php <- php - 별도 asp.net <- c#, vb - iis * 프로그램에 의해서 html 생성

웹 프로그래밍과 JSP

: 웹 프로그래밍이란 간단히 말하면 웹 서버가 웹 브라우저에 응답으로 전송할 데이터를 생성해주는 프로그램을 작성하는 것이다. 이를 위해서 네트워크 처리, HTTP 헤더, 파일 입출력 처리 등에 대해서 알아야 할 필요는 없다. 이런 것들은 웹 서버에서 처리하며, 우리는 웹 서버가 실행하는 프로그램만 만들어주면 된다.

JavaServer Pages, 즉 JSP는 동적 페이지를 작성하는데 사용되는 자바의 표준 기술로서 HTML 응답을 생성하는데 필요한 기능을 제공하고 있다. HTML 응답뿐만 아니라 XML, JSON, 바이너리 파일 등도 응답으로 생성할 수 있지만, 주로 HTML 응답을 생성하는 목적으로 JSP를 사용한다.

JSP를 이용해서 만든 프로그램을 실행하려면 톰캣이나 제티 또는 JBoss EAP와 같은 서버 프로그램이 필요하다. 서버 프로그램을 웹 어플리케이션 서버(WAS)를 이용하면 웹 브라우저로부터 요청이 오면 알맞은 프로그램을 찾아 실행하고, 프로그램의 실행 결과를 응답으로 전송한다.

WAS마다 지원하는 JSP 버전에 차이가 난다.

서버 리스트들을 확인할 수 있다

서버 프로그램 1. 개발용 세팅(느려져서 데이터베이스를 안깜) 이클립스(intellij) 톰캣 세팅 jsp ftp or 배포(deployment) 프로그램(jenkins) 2. 서비스용 세팅(원격) 데이터베이스 톰캣 세팅 jsp

JSP로 시작하는 웹 프로그래밍

: jsp 코드로 작성하는 주도니 목적은 웹 브라우저에 보여 줄 HTML 문서를 생성하는 것이다. JSP를 사용해서 파일 다운로드를 구현할 수 있고, XML과 같은 다른 종류의 문서를 응답으로 제공할 수 도 있지만, 대부분의 JSP 코드는 HTML을 생성한다.

HTML 문서를 생성하는 JSP 코드는 크게 설정 부분과 응답 생성 부분으로 구성된다.

JSPEx01.ex01 - jsp 파일 만들기

JSPEx01.ex02 - html 5 버전으로 만들어주기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here

만드는 법은 아래와 같다

import 법을 잘 숙지할 것!

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here Hello JSP

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% // 스크립틀릿 // out 객체변수 - 출력 out.println("Hello JSP"); %>

JSP 적인 요소는 출력이 안된다

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% // 스크립틀릿 // out 객체변수 - 출력 out.println("Hello JSP"); %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% // 스크립틀릿 // out 객체변수 - 출력 // 디자인 클라이언트 출력 out.println("Hello JSP"); // 디버깅을 위해서 서버에 출력 System.out.println("Hello JSP"); %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% // 스크립틀릿 // out 객체변수 - 출력 // 디자인 클라이언트 출력 out.println("Hello JSP"); // 디버깅을 위해서 서버에 출력 System.out.println("Hello JSP"); java.util.Date date = new java.util.Date(); out.println(date.toLocaleString()); %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.util.Date" %> Insert title here <% // 스크립틀릿 // out 객체변수 - 출력 // 디자인 클라이언트 출력 out.println("Hello JSP"); // 디버깅을 위해서 서버에 출력 System.out.println("Hello JSP"); Date date = new Date(); out.println(date.toLocaleString()); %>

java.util.Data를 import로 선언해주면 body에서 주루륵 다 안써도 된다.(Header 개념)

JSPEx02.ex03 - script / 표현식 사용 법

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% out.println("Wassup beauty?"); // scirpt String str = "What's popping?"; // 표현식 선언 %> <%= "wanna go get some milkshake?" %> // 표현식 <%= str %> // 표현식 출력

JSPEx01.ex03 - 선언

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%! public int multiply(int a, int b) { return a * b; } %> Insert title here <% out.println("Wassup beauty?"); String str = "What's popping?"; int multi = multiply(10, 20); %> <%= "wanna go get some milkshake?" %> <%= str + "" %> <%= multi + "" %>

JSPEx01.ex04

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% out.println(""); out.println(""); out.println(" 1열"); out.println(" 2열"); out.println(" 3열"); out.println(""); out.println(""); out.println(" 1열"); out.println(" 2열"); out.println(" 3열"); out.println(""); out.println(""); %>

lotto 발생기 - 테이블 안에 넣기

내가 짠거

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% out.println(""); for(int i=0; i<5; i++) { out.println(""); for(int j=0; j<6; j++) { out.println(" " + (int)((Math.random()*45)+1) + ""); } out.println(""); } out.println(""); %>

강사님이 짠거

<%@page import="java.util.HashSet"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% StringBuffer sb = new StringBuffer(); sb.append(""); for(int i=1; i<=5; i++) { HashSet lottos = new HashSet<>(); while(true) { lottos.add((int)(Math.random() * 45) + 1); if(lottos.size() == 6) { break; } } sb.append(""); for(int lotto : lottos) { sb.append("" + lotto + ""); } sb.append(""); } sb.append(""); out.println(sb); %>

StringBuffer와 hashset을 이용하여 작성하였다.

Request 기본 객체

: Request 기본 객체는 JSP 페이지에서 가장 많이 사용되는 기본 객체로서 웹 브라우저의 요청과 관련이 있다. 웹 브라우저에 웹 사이트의 주소를 입력하면, 웹 브라우저는 해당 웹 서버에 연결한 후 요청 정보를 전송하는데, 이 요청 정보를 제공하는 것이 바로 request 기본 객체이다

JSPEx01.ex05 - 클라이언트 정보 및 서버 정보 읽기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 클라이언트IP = <%=request.getRemoteAddr() %> 요청정보길이 = <%=request.getContentLength() %> 요청정보 인코딩 = <%=request.getCharacterEncoding() %> 요청정보 컨텐츠타입 = <%=request.getContentType() %> 요청정보 프로토콜 = <%=request.getProtocol() %> 요청정보 전송방식 = <%=request.getMethod() %> 요청 URI = <%=request.getRequestURI() %> 컨텍스트 경로 = <%=request.getContextPath() %> 서버이름 = <%=request.getServerName() %> 서버포트 = <%=request.getServerPort() %>

IPv6 일경우 클라이언트IP 6개고 IPv4일땐 4개가 나온다

클라이언트ID, 컨텍스트 경로, 서버이름, 서버포트, 요청 URI 등 기억해두자

getRemoteAddr(), getContextPath(), getServerName(), getServerPort(), getRequestURI()

GET 방식 전송과 POST 방식 전송

: 웹 브라우저는 GET 방식과 POST 방식의 두 가지 방식 중 한 가지를 이용해서 파라미터를 전송한다. 태그의 method 속성값을 "post"로 지정했다면 POST 방식으로 파라미터 데이터를 전송한다는 것을 의미한다.

브라우저 jsp -> 데이터 전송 -> get : url과 연결 해서 데이터를 보냄 post : header에 포함된 데이터 GET 방식 // 요청 URL https://search.naver.com/search.naver ? // 쿼리 문자열(요청 데이터) //키=값 형태이다 where=nexearch & sm=top_hty & fbm=1 & ie=utf8 & query=starwars

GET 방식과 POST 방식의 차이점은 전송 방식이다. GET 방식은 요청 URL에 파라미터를 붙여서 전송한다. URL의 경로 뒤에 물음표('?')와 함께 파라미터를 붙여 전송하는데, 이를 쿼리 문자열 이라고 한다.

request 기본 객체의 요청 파라미터 관련 메서드

JSPEx01.form

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 데이터 1 : 데이터 2 :

JSPEx01.form_ok

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String data1 = request.getParameter("data1"); String data2 = request.getParameter("data2"); out.println("data1 : " + data1 + ""); out.println("data2 : " + data2 + ""); %>

POST 방식

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 데이터 1 : 데이터 2 : 데이터 1 : 데이터 2 :

주소창을 보면 GET때와 다르게 꼬랑지가 없이 form_ok에 보낸다. Header에 저장해서 보내기 때문이다

get - 개발자의 정해진 데이터 전송할 때

* file 전송 불가

* 암호화 가능

post - 사용자 데이터 전송할 때

* file 전송 가능

* 암호화 불가능

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 데이터 1 : 데이터 2 : 전송하기 데이터 1 : 데이터 2 :

get 방식은 한글로 자동 인코딩 됨

POST 방식은 form_ok에 request.setCharacterEncoding("utf-8"); 추가한다

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); String data1 = request.getParameter("data1"); String data2 = request.getParameter("data2"); out.println("data1 : " + data1 + ""); out.println("data2 : " + data2 + ""); %>

JSPEx01.form1

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { //alert("click"); // document.frm.data1.value - String .. var data1 = document.frm.data1.value; if(data1.length == 0) { alert('입력안됨'); } else { alert('입력됨'); } } 데이터 1 : 데이터 2 :

데이터 입력 안했을 때

데이터 입력 시

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { //alert("click"); // document.frm.data1.value - String .. var data1 = document.frm.data1.value; if(data1 == "") { //if(data1.length == 0) { alert('입력안됨'); } else { alert('입력됨'); } } 데이터 1 : 데이터 2 :

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { //alert("click"); // document.frm.data1.value - String .. //var data1 = document.frm.data1.value; //if(data1 == "") { //if(data1.length == 0) { // alert('입력안됨'); //} else { // alert('입력됨'); //} if(document.frm.data1.value == "") { alert("data1을 입력해 주세요") return; } if(document.frm.data2.value == "") { alert("data2을 입력해 주세요") return; } document.frm.submit(); } 데이터 1 : 데이터 2 :

gugudan.jsp

=> 시작단과 끝단을 입력하는 페이지

* 시작단이 끝단보다 작아야 실행

gugudan_ok

=> 출력하는 페이지

JSPEx01.gugudan

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { if(document.frm.b_dan.value == "") { alert("시작단을 입력해 주세요."); return; } if(document.frm.e_dan.value == "") { alert("끝단을 입력해 주세요."); return; } if(parseInt(document.frm.b_dan.value) > parseInt(document.frm.e_dan.value)) { alert("시작단이 끝단보다 작아야 합니다."); return; } document.frm.submit(); } 첫 단 : - 끝 단 :

JSPEx01.gugudan_ok

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); String b_dan = request.getParameter("b_dan"); String e_dan = request.getParameter("e_dan"); %> Insert title here <% int ib_dan = Integer.parseInt(b_dan); int ie_dan = Integer.parseInt(e_dan); out.println(""); for(int i=ib_dan; i"); for(int j=1; j<=9; j++) { out.println("" + i + " X " + j + " = " + (i*j) + ""); } out.println(""); } out.println(""); %>

Calendar - Calendar를 출력하기

<%@page import="java.util.Calendar"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); String year = request.getParameter("year"); String month = request.getParameter("month"); %> Insert title here <% int iyear = Integer.parseInt(year); int imonth = Integer.parseInt(month); int START_DAY_OF_WEEK = 0; int END_DAY_OF_WEEK = 0; int END_DAY = 0; Calendar sDay = Calendar.getInstance(); Calendar eDay = Calendar.getInstance(); sDay.set(iyear, imonth-1, 1); eDay.set(iyear, imonth, 1); eDay.add(Calendar.DATE, -1); START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK); END_DAY_OF_WEEK = eDay.get(Calendar.DAY_OF_WEEK); END_DAY = eDay.get(Calendar.DATE); out.println(""); out.println(""); out.println(" " + year + "년 " + month + "월"); out.println(""); out.println(""); out.println(" SUMOTUWETHFRSA"); out.println(""); out.println(""); for(int i=1; i"); } for(int i=1, n=START_DAY_OF_WEEK; i<=END_DAY; i++, n++) { if(n%7==1) out.println(""); out.println("" + i + ""); if(n%7==0) out.println(""); } for(int i=END_DAY_OF_WEEK; i<=6; i++) { out.print(""); } out.println(""); out.println(""); %>

Calendar_ok

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { if(document.frm.year.value == "") { alert("해당년을 입력해 주세요."); return; } if(document.frm.month.value == "") { alert("해당월을 입력해 주세요."); return; } document.frm.submit(); } 해당 년 : 해당 월 :

토요일, 일요일 파란색, 빨간색 넣은 것

Calender

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here function checkfrm() { if(document.frm.year.value == "") { alert("해당년을 입력해 주세요."); return; } if(document.frm.month.value == "") { alert("해당월을 입력해 주세요."); return; } document.frm.submit(); } 해당 년 : 해당 월 :

Calender_ok

<%@page import="java.util.Calendar"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("utf-8"); String year = request.getParameter("year"); String month = request.getParameter("month"); %> Insert title here <% int iyear = Integer.parseInt(year); int imonth = Integer.parseInt(month); int START_DAY_OF_WEEK = 0; int END_DAY_OF_WEEK = 0; int END_DAY = 0; Calendar sDay = Calendar.getInstance(); Calendar eDay = Calendar.getInstance(); sDay.set(iyear, imonth-1, 1); eDay.set(iyear, imonth, 1); eDay.add(Calendar.DATE, -1); START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK); END_DAY_OF_WEEK = eDay.get(Calendar.DAY_OF_WEEK); END_DAY = eDay.get(Calendar.DATE); out.println(""); out.println(""); out.println(" " + year + "년 " + month + "월"); out.println(""); out.println(""); out.println(" SUMOTUWETHFRSA"); out.println(""); out.println(""); for(int i=1; i"); } for(int i=1, n=START_DAY_OF_WEEK; i<=END_DAY; i++, n++) { if(n%7==1) { out.println(""); } if(n%7==0) { out.println("" + i + ""); // Saturday } else if(n%7==1) { out.println("" + i + ""); // Sunday } else { out.println("" + i + ""); } if(n%7==0) { out.println(""); } } /* for(int i=1, n=START_DAY_OF_WEEK; i<=END_DAY; i++, n++) { if(n%7==1) out.println(""); out.println("" + i + ""); if(n%7==0) out.println("" + i + ""); out.println(""); } */ for(int i=END_DAY_OF_WEEK; i<=6; i++) { out.println(""); } out.println(""); out.println(""); %>

from http://bennyziiolab.tistory.com/59 by ccl(S) rewrite - 2020-03-07 18:54:39

댓글

이 블로그의 인기 게시물

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용...

phpmyadmin 설치 차분히 따라해보자

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.