Post

오늘 한 일


  • Servlet 동작, Get,Post 실습

오늘 느낀 점


  • git 블로그 찾아볼 것

내일 할 일 (계획)


  • git 블로그 생성하기
  • JSP 공부하기


'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.18_TIL  (0) 2018.10.18
18.10.17_TIL  (0) 2018.10.17
18.10.16_TIL  (0) 2018.10.16
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

Servlet Get,Post 동작


Get, Post방식


  • Client가 요청할 때 Get, Post 방식이 있다.
  • Get방식은 URL 값으로 정보가 전송되어 보안에 약함
  • Post방식은 header를 이용해 정보가 전송되어 보안에 강함.


Get방식


  • html내 form 태그의 method 속성이 get일 경우 호출됨.
  • HttpServletRequest 요청 처리 객체
  • HttpServletResponse 응답 처리 객체
  • response.setContentType("text/html") text/html로 응답을 보내겠다는 의미
  • html문법을 쓸 수 없기 때문에 PrintWriter class로 html 문법 사용 가능


Post방식


  • jsp파일에 method가 post인 form을 생성한다.
  • form action은 이동할 url 값으로 설정한다.
<form action="hw" method="post">
       <input type="submit" value="post">

</form>


Context Path


  • WSA에서 웹 어플리케이션을 구분하기 위한  Path.
  • 이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가됨.
  • http://localhost:8090/ex/hw

<Context docBase="ex" path="/ex" reloadable="true" source="org.eclipse.jst.jee.server:ex"/></Host>

Servlet 작동순서


  • 클라이언트에서 servlet 요청이 들어오면 서버에서는 servlet 컨테이너를 만들고 요청이 있을 때마다 스레드 생성.
  • 보통 web Server는 요청이 많을수록 객체를 생성해서 느려진다.
  • Servlet은 JVM 위에 MultiThread로 처리할 수 있어서 부하가 적다.
  • Servlet 객체 생성(최초)->Init() 호출(최초)->service(), doGet(), doPost() 호출(요청시)->destroy() 호출(마지막 한번, 서버 재가동 등..)
  • Init()호출 전 선처리 @PostConstruct 가 호출됨.
  • destory()호출 후 후처리 @PreDestroy가 호출됨.

form 태그


  • 서버쪽으로 정보를 전달할 때 사용.
  • ex) <form action = "Form" method="post">
  • action : 요청하는 컴포넌트 이름(join.jsp , info.gtml)
  • post : 요청을 처리하는 방식(get, post)
  • Get : local:8090/컨텍스트/path/MemberJoin?id="abcd"&name="ww"
  • Post : local:8090/컨텍스트/path/MemberJoin
  • 아래는 jsp, servlet 예제

jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="FormEx" method="post">
이름:<input type="text" name="name" size="10"><br/>
아이디:<input type="text" name="id" size="10"><br/>
비밀번호:<input type="password" name="pw" size="10"><br/>
취미:<input type="checkbox" name="hobby" value="read">독서
<input type="checkbox" nam="hobbpy" value="cook">요리
<input type="checkbox" nam="hobbpy" value="run">조깅
<input type="checkbox" nam="hobbpy" value="swim">수영
<input type="checkbox" nam="hobbpy" value="sleep">취침<br/>
<input type="radio" name="major" value="kor">국어
<input type="radio" name="major" value="checked">영어
<input type="radio" name="major" value="mat">수학
<input type="radio" name="major" value="des">디자인<br/>
<select name="protocol">
<option value="http">http</option>
<option value="ftp" selected="selected">ftp</option>
<option value="smtp">smtp</option>
<option value="pop">pop</option>
</select><br/>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>


servlet
package com.java.w;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class FormEx
 */
@WebServlet("/FormEx")
public class FormEx extends HttpServlet {
       private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormEx() {
        super();
        // TODO Auto-generated constructor stub
    }
       /**
        * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
        */
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
              response.getWriter().append("Served at: ").append(request.getContextPath());
       }
       /**
        * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
        */
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
              doGet(request, response);
              
              System.out.println("doPost");
              
              String id = request.getParameter("id");
              String pw = request.getParameter("pw");
              String[] hobbys = request.getParameterValues("hobby");
              String major = request.getParameter("major");
              String protocol = request.getParameter("protocol");
              response.setContentType("text/html; charset=EUC-KR");
              PrintWriter writer = response.getWriter();
              
              writer.println("");
              writer.println("아이디:"+id+"
"); writer.println("비밀번호:"+pw+"
"); writer.println("취미:"+Arrays.toString(hobbys)+"
"); writer.println("전공:"+major+"
"); writer.println("프로토콜:"+protocol); writer.println(""); writer.close(); } }


한글처리


  • Tomcat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식.
  • 별도의 인코딩을 하지 않으면 한글이 깨져보임
  • server.xml 수정
    • <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8090"  protocol="HTTP/1.1" redirectPort="8443"/>
  • servlet 인코딩 세팅 추가
    • request.setCharacterEncoding("UTF-8");



'이전게시판 > JSP' 카테고리의 다른 글

JDBC로 OLACLE 접속  (0) 2018.10.22
JSP 쿠키, Session, 예외 페이지, 자바빈  (0) 2018.10.21
JSP 태그, request, response, 지시자, 액션태그  (0) 2018.10.20
Servlet 값 초기화, 리스너  (0) 2018.10.20
Servlet 설정, 예제  (0) 2018.10.18
JSP 설치, 설정, 실행  (0) 2018.10.18

Post

오늘 한 일


  • JSP, Servlet 기초 예제 들음
  • to-do-list add 버튼 클릭 시 아이템 추가

오늘 느낀 점


  • 검색하다가 javascript에 클로저, 이벤트 위임이라는게 있다는걸 알았다. 내 홈페이지 수정 좀 해야할 듯..
  • gitpage + jekyll 이나 hexo로 블로그 만들고 싶다

내일 할 일 (계획)


  • git 블로그 생성하기
  • JSP 공부하기


'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.17_TIL  (0) 2018.10.17
18.10.16_TIL  (0) 2018.10.16
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

Servlet 설정, 예제


Servlet 이란


  • JSP는 Html 위에서 JSP 문법을 사용하는 서버Side 파일.
  • JSP와 다르게 순수 Java코드만 사용.
  • 모델1은 JSP가  Model, View, Controller 기능을 전부 수행하지만
  • 모델2는 JSP가 View, Servlet이 Controller 기능을 각 각 따로수행하는 것으로 이해했다.
  • 모델2에서 JavaBeans가 Model이라고 한다.

 

Servlet 파일 생성


  • 프로젝트 생성 후 Java Resources 폴더 오른쪽클릭-New-Servlet 클릭
  • JavaPackage, Class Name을 작성(각각 com.TestProject, HelloServlet 이라고 적음)
  • 그리고 Next를 눌러서 URL mappings 에 이름을 변경한다.
  • usr mappings 값은 java 소스코드에 접근하기 위한 urlName 이다.
  • ex ) http://localhost:8090/<ProejctName>/<urlName>

Servlet 파일 작성


  • Java에서 html 태그를 쓰기위해서 PrintWriter 객체를 사용.
  • doGet함수에서 다음과 같이 소스를 작성한다.
  • 서버를 실행시켜 http://localhost:8090/<ProejctName>/<urlName> 도메인으로 접속하면 'Hello World'가 보인다.
  • but 아래 예제를 실행하면 크롬에서는 태그 자체가 보인다.
  • response.getWriter().append("Served at: ").append(request.getContextPath());
  • 위 소스를 지우면 또 잘 보이고, html 문서 새로 만들어서 동일하게 출력하게 만들었는데도 잘된다.
  • java 파일 변환과정에서 크롬이 잘못해석하는 변환이 있는건가?싶다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
              
PrintWriter out = response.getWriter();
out.print(" <br>");
out.print("<html>");
out.print("<head>");
out.print("</head>");
out.print("<body>");
out.print("<p>Hello World</p>");
out.print("</body>");
out.print("</html>");
}

Servlet class 파일 확인


  • java 파일을 class 파일로 변환한 것을 확인해본다.
  • 자신의 javaProjectPath\build\classes\com\ProjectName\ 폴더안에 class 파일이 있는것을 확인할 수 있다.


'이전게시판 > JSP' 카테고리의 다른 글

JDBC로 OLACLE 접속  (0) 2018.10.22
JSP 쿠키, Session, 예외 페이지, 자바빈  (0) 2018.10.21
JSP 태그, request, response, 지시자, 액션태그  (0) 2018.10.20
Servlet 값 초기화, 리스너  (0) 2018.10.20
Servlet Get,Post 동작  (0) 2018.10.19
JSP 설치, 설정, 실행  (0) 2018.10.18

Post

JSP 설치, 설정, 실행


웹컨테이너란?


  • 웹서버에서 서블릿클래스, JSP파일을 실행시킬 수 있는 환경을 뜻한다.
  • 개발자는 jsp로 작업을 하고, 웹 컨테이너는 기계가 이해할 수 있도록 java, class, obj 파일을 만드는 역활을 한다.

웹컨테이너 환경을 제공해 주는 프로그램?


  • ApacheTomcat
  • Apache는 http웹 서버이다. 
  • Tomcat은 Web Application Service 이다. 웹 서버 기능도 할 수 있다.
  • 하지만 Apache는 정적인 데이터를 처리하고, Tomcat은 동적 데이터 처리해야 한다.
  • 목적에 따라 둘을 달리 쓰는 것이다.


Apache Tomcat 설치


  • 다운로드 링크 : https://tomcat.apache.org/
  • 나는 8.5.28 기준으로 설치하였다.
  • Zip 파일 클릭해서 다운로드 받는다.

웹컨테이너 설정


  • Server Tab이 있어야 한다. 없으면 메뉴에서 Window-Show View-Server를 찾아서 클릭한다.
  • Server Tab이 생기고 'No server are available. Click this... ' 라는 메시지가 보인다. 클릭하고 알맞은 versions 을 선택한다.
  • Apache Tomcat이 있는 폴더를 선택.
  • Server Tab에 'Tomcat v8.5 Server at localhost' 텍스트를 더블클릭하면 설정창이 뜬다. 
  • Server Locations 항목에서 'User Tomcat installation' 선택
  • Server Option 항목에서 'Publish module context to separate XML files' 선택(실제 tomcat 있는 폴더와 동기화 한다는 뜻)
  • Ports 항목에서 HTTP/1.1 Port Number를 8090으로 변경(8080은 DB 사용시 사용할 것)
  • 저장한 다음 Server Tab에 있는 디버그 아이콘 중에 Publish to the server 아이콘을 클릭. 서버와 동기화 완료.
  • 디버그 아이콘을 클릭하면 서버가 실행된다.(Start the Server)
  • 서버 실행을 확인방법은 http://localhost:8090/ 이 주소로 접속해서 tomcat 관련 페이지가 보이면 실행되는 것이다.

프로젝트 생성, JSP 파일 생성


  • 프로젝트 화면에서 오른쪽 클릭-New-Other-Dynamic Web Project 선택
  • 마지막 생성화면에서 'Generate web.xml deployment descriptor' 체크.
  • 프로젝트 생성 후 프로젝트 오른쪽 클릭-New-JSP File 클릭.
  • JSP파일은 WebContent 폴더 안에 생성되어야 한다.
  • 그러면 익숙한 html이 보인다. JSP는 html 위에서 jsp문법을 추가한 것.

JSP 파일 실행



<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
       <p>Hello JSP World!</p>
</body>
</html>

  • Project 오른쪽 마우스 클릭 후 Run As - Run on Server 클릭하면 서버가 다시 올라간다.
  • 서버 접속은 local:8090/ProjectName/jsp file name이다.
  • 페이지 소스코드 보기로 보면 jsp 문법은 보이지 않고, html만 보인다.

.java, .class 파일 확인


  • 맨처음 Apache 폴더에서 work\Catalina\localhost\<ProjectName>\org\apache\jsp 폴더에 들어가면
  • 우리가 만들었던 jsp 파일을 이용해 웹컨테이너가 java, class 파일을 만든것을 확인할 수 있다.
  • ex) D:\apache-tomcat-8.5.34\work\Catalina\localhost\testProject\org\apache\jsp

'이전게시판 > JSP' 카테고리의 다른 글

JDBC로 OLACLE 접속  (0) 2018.10.22
JSP 쿠키, Session, 예외 페이지, 자바빈  (0) 2018.10.21
JSP 태그, request, response, 지시자, 액션태그  (0) 2018.10.20
Servlet 값 초기화, 리스너  (0) 2018.10.20
Servlet Get,Post 동작  (0) 2018.10.19
Servlet 설정, 예제  (0) 2018.10.18

Post

오늘 한 일


  • To-Do List 작업
  • Java 기초 공부

오늘 느낀 점


  • To-Do List 작업할 때 css, javascript 에 익숙하지 않다보니 시간이 걸린다.
    • 한동안 이렇게 시간이 걸릴 듯.. 좌절하지 말고 조금씩 하자.
  • to-do list 저장하려면 서버가 필요한데.. 개인서버 구축하고 싶다.
  • 반응형은 나중에 찾아볼 것(일단 구현이 우선!)

내일 할 일 (계획)


  • To-Do List 개발
  • JSP


'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.16_TIL  (0) 2018.10.16
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

자바기초 정리


String


java String 선언 시 두가지 방법이 존재
String str = new String();
String srt = "value";

첫번째 방법은 String 자료형이 heap에 할당됨.
두번째 방법은 String 값이 string constant pool이라는 영역에 할당된다. 만약 이미 선언되어있다면 그 값을 가져온다.
메모리를 아끼려면 2번째 방법(String 리터널) 방법으로 사용하는게 좋을 듯..

StringBuffer 


문자열을 추가하거나 변경할 때 주로 사용한다.
String과 다른 점은 String은 문자열 연산 시 객체 생성을 하지만 StringBuffer는 한번만 객체 생성이 된다.
또 String 보다 메모리 사용량도 많고 속도도 느다고 한다.
(일단 같은 문자열을 length() 함수로 출력했을 때 메모리는 같았다.)


String, StringBuffer, StringBuilder의 차이점


String은 메모리공간이 변하지 않는다. 그래서 문자열을 붙이면, 그 문자열을 참조한다. 그래서 문자열 연산이 많을 경우 성능이 좋지 않다.
StringBuffer, StringBuilder는 문자열 연산이 있을 때 크기를 변경해 문자열을 변경한다. 그래서 연산이 많을 때 사용하면 좋다.
둘의 차이점은 StringBuffer는 동기화를 지원하지만 StringBuilder는 멀티스레드 환경에서 사용하면 위험하다.

문자열 연산 시 StringBuffer가 더 효과있는지 확인하기 위해 테스트해보았다.
테스트 결과 문자열 연산 시 StringBuffer가 String보다 5배 더 빨랐다.

package Example;
import java.text.SimpleDateFormat;
public class HelloWorld {
       public static void main(String args[])
       {
              String str = new String("Hello Java");
              String nowTime = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              for(int i = 0; i < 10000; ++i)
              {
                     System.out.println(str+" Hello Java");
              }
              String nowTime2 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              
                           
              StringBuffer strBuf = new StringBuffer("Hello Java");
              String nowTime3 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
                           
              for(int i = 0; i < 10000; ++i)
              {
                     System.out.println("strBuf"+"Hello Java");
              }
              String nowTime4 = getCurrentTime("YYYY.MM.DD. HH:mm:ssSSS");
              
              System.out.println("1:" + nowTime);
              System.out.println("2:" + nowTime2);
              System.out.println("3:" + nowTime3);
              System.out.println("4:" + nowTime4);
       }
       
       public static String getCurrentTime(String timeFormat)
       {
              return new SimpleDateFormat(timeFormat).format(System.currentTimeMillis());
       }
}

ArrayList


배열은 크기가 고정이지만 List는 가변이다.
원래는 Generics(<>)를 사용하지 않아 item들이 Object로 인식되어 잘못된 형변환을 하는 경우가 있었다.
현재는 자료형을 명확히 적어주기 때문에 형변환에 의한 오류가 없어졌다.

package Example;
import java.util.ArrayList;
public class HelloWorld {
       public static void main(String args[])
       {
              ArrayList<Integer> arrList = new ArrayList();
              arrList.add(2);
              arrList.add(1);
              arrList.add(4);
              arrList.add(3);
              System.out.println(arrList);
              System.out.println(arrList.get(2));             // 2번째 요소 선택(4)
              System.out.println(arrList.size());             // 크기 출력(4)
              arrList.remove(2);                                     // 2번째 요소 삭제
              System.out.println(arrList);                    // 다시 출력
                           
       }
       
}

Post

오늘 한 일


  • 내 홈페이지에 명언버튼 추가. 버튼 클릭 시 명언이 변경되도록 수정했다.
  • Java 기초 공부

오늘 느낀 점


  • 글자에 네온사인 효과를 적용하고 싶었지만, 모르는 문법이 많아서 Commit 하기 부담;;
    • css translate에 대해서 찾아보자
  • Web To-do List를 만들어보고 싶다.
  • Java 설치 에러가 나서 너무 오래걸렸다.. 에러를 줄이는 방법=>설치 포스팅을 꼼꼼히 잘보자.

내일 할 일 (계획)


  • To-Do 리스트 개발( 소스 참고보다 직접 필요한 것을 찾아가며 만들자 )
  • Java 기초 보기 ( https://wikidocs.net/book/31 )
  • 시간되면 JSP

'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.17_TIL  (0) 2018.10.17
TIL(Today I Learn) 시작  (0) 2018.10.15

Post

TIL 시작


'이전게시판 > TIL' 카테고리의 다른 글

2018.12.08_TIL  (0) 2018.12.08
2018.12.07_TIL  (0) 2018.12.08
18.10.21_TIL  (0) 2018.10.21
18.10.20_TIL  (0) 2018.10.20
18.10.19_TIL  (0) 2018.10.19
18.10.18_TIL  (0) 2018.10.18
18.10.17_TIL  (0) 2018.10.17
18.10.16_TIL  (0) 2018.10.16

Post

Javascript 정리


html과 javascript의 차이


  • html은 있는 그대로 보여주지만 javascript는 동적으로 페이지를 보여준다.
  • 아래 예는 같은 1+1을 했지만 html은 글자로써 그대로 보여주는 반면
  • javascript는 1+1의 결과값 2를 출력한다.
<!--DOCTYPE html-->
<html>
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
  <script>
    document.write("1+1");
    document.write(1+1);
  </script>
  <h1>1+1</h1>
</body>
</html>

javascript event


  • html에 on으로 시작하는 속성들이 있다.
  • on으로 시작하는 속성은 javascript 이벤트를 대입해야한다.
  • onclick="alert('OK')"
  • onclick 속성은 마우스 클릭(이벤트)시 OK알람창(javascript)이 뜬다.
<!--DOCTYPE html-->
<html>
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
  <input type="button" value="Click button" onclick="alert('OK')">
  <input type="text" onchange="alert('changed')">
  <input type="text" onkeydown="alert('key down!')">
</body>
</html>

javascript consol


  • 크롬 웹 페이지에서 오른쪽 클릭 - 검사-console 창 뜸
  • 간단한 javascript code 를  console 창에서 테스트 할 수 있다.


데이터타입-문자열과 숫자


  • 데이터 타입이 문자열인지 숫자인지에 따라 결과가 달라진다.
  • 데이터 타입 숫자 : 1+1 = 2
  • 데이터 타입 문자 : "1"+"1"="11"


프로그래밍이란?


  • javascript는 프로그래밍 언어. html 아님.
  • 프로그램이란 순서라는 의미가 있음. 만드는사람은 프로그래머.
  • html은 시간의 순서에 따라 순서대로 작동x
  • javascript는 시간의 순서에 따라 순서대로 작동.


조건문


  • == : 값이 같은지 확인
  • === : 데이터 값이 같은지 확인
  • ex.
  • 1 == "1" : true
  • 1 === "1" : false
  • true == 1 : true
  • true === 1 : false

var target = document.querySelector('body');
if(this.value === 'night')
{
    target.style.backgroundColor = 'black';
    target.style.color = 'white';
    this. value = 'day';
} else {
    target.style.backgroundColor = 'white';
    target.style.color = 'black';
    this.value = 'night';
}

function


중복된 코드가 많아지면 function 으로 grouping 해야 소스 관리가 쉽다.

  • 함수선언
<script>
function FunctionName(arg)
{
return arg;
}
</script>

  • 사용법
<input type="button" value="click" onclick="FunctionName(value)"

객체


  • 소스코드가 커지면 function 이름의 중복이 많이 나타난다.
  • function이 중복되면 나중에 선언된 function만 남고, 먼저 선언된걸 지워버린다.
  • 객체를 사용하면 객체와 관련있는 변수, 함수를 Grouping하기 때문에 function 이름 중복을 방지할 수 있다.
  • 사용법
선언
var player = { "id":"value" }
가져오기
player.id , player.value
Method 선언
var func = {
    MethodName:function(arg){
            // 내용
    },
    MethodName2:function(arg){
            // 내용
    }
}
  • Method 사용

func.MethodName1(value);



파일로 정리하기


  • js객체 정의가 각 파일마다 정의되어있다면 소스가 복잡해진다.
  • js파일을 한 파일에 넣고 정리할 수 있다.
  • js파일 참조하기
<head> 안에 <script src = "js이름.js"></script>

jquery


  • jquery 라이브러리 포함(CDN)
  • jquery 다운로드 페이지 접속 (https://jquery.com/download/)
  • 페이지에서 CDN 검색 , 구글 CDN 클릭
  • jQuery을 찾아서 아래 script를 <head>태그 안에 넣음
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  • jquery는 javascript로 복잡하게 적은 소스를 간단하게 변경할 수 있는 좋은 라이브러리.


▲ top