종속형 시트 또는 캐스케이딩 스타일 시트(Cascading Style Sheets, CSS)는 마크업 언어가 실제 표기되는 방법을

기술한다.

비유하자면 CSS는 HTML을 아름답게 꾸며주는 디자이너의 언어이다. 화가가 붓을 만드는 법을 알 필요는 없지만, 붓을

만드는 사람보다 붓 질은 훨씬 잘해야 할 것이다. 붓 질하는 법을 모른다면 표현하고자 하는 것을 제대로 표현하는 것이 

어려울 것이다. CSS는 디지털 컨텐츠를 생산하는 사람들에게는 붓 질과 같은 것이 아닐까 싶다.

 

CSS 사용 방법

 

1. 외부파일 사용

 

2. 내부파일 사용

 

3. 태그로 사용 

 

표현 

<link href="파일경로" rel = "stylesheet" type = "text/css">   --> <head>태그 안에 정의

 

<style type = "text/css">

~ 스타일 정의 ~

</style>

 

 

'HTML,CSS' 카테고리의 다른 글

[Javascript]변수 & 기본연산  (0) 2020.04.27
[Javascript]자바스크립트란?  (0) 2020.04.27
[CSS]부트스트랩 사용하기  (0) 2020.04.26
[CSS]구글 웹폰트 적용하기  (0) 2020.04.26
[CSS]CSS연습하기(1)  (0) 2020.04.26
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
		
	<%! 
		int sum;
		Calendar cal;
	%>
	<% 
		cal = Calendar.getInstance();
		String[] yoil = {"일", "월","화","수","목","금","토"};
	%>
	
<body>
	<table border = "3">
		<tr>
			<%
				for(int i =2; i<10; i++){
					
				
			%>
			<td>
				<% out.print(i + "단"); %>
			</td>
			<% 
				}
			%>
		</tr>
		<%
			for(int i=1; i<10; i++){

		%>
		<tr>
			<% 
				for(int j=2; j<10; j++){
					sum = i * j;
			%>
				<td>
					<%= j+ "*" + i + " = " + sum%>
				</td>
				<% 
				}
				%>
		</tr>
			<% 
				}
			%>
	</table>
	<% 
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH)+1;
		int date = cal.get(Calendar.DATE);
		int hour = cal.get(Calendar.HOUR);
		int minute = cal.get(Calendar.MINUTE);
		int second = cal.get(Calendar.SECOND);
		int day = cal.get(Calendar.DAY_OF_WEEK);
	%>
	<%= year + " 년" + month + "월" + date + "일" + hour +"시" + minute + "분" + second + "초 입니다.(오늘은 \"" + yoil[day-1] + "\"일입니다)" %>

	<%-- 
	<table align="center" border="1">

	<td></td> 
	<% for (int i = 2; i < 10; i++) { %> 
	<td align="center" width="80"><%=i%>
	</td> 
	<% } %> <% for (int i = 1; i < 10; i++) { %> 
	<tr> <td align="center" bgcolor="lightgrey" width="50"><%=i%></td> 
	<% for (int j = 2; j < 10; j++) { %> <td align="center"><%=j%> X <%=i%>= <%=j * i%></td> 
	<% } %> </tr> 
	<% } %> 
	</tr> 
	</table>
	
	<%
	Date nowTime = new Date();
	SimpleDateFormat sf = new SimpleDateFormat("yyyy년 MM월 dd일 a hh:mm:ss");
	%>
	<%= sf.format(nowTime) %>
	--%>

</body>
</html>

'JSP' 카테고리의 다른 글

[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 기본 태그  (0) 2020.10.19
[JSP] JSP페이지  (0) 2020.10.19

HTML이나 자바스크립트에 의해 작성된 페이지들은 그 페이지를 사용하는 사용자와 상관없이 항상 동일한

내용만을 제공해주는 정적 페이지이다. 하지만 웹 프로그램들은 사용자에 따라 서로 다른 내용이 제공되어야

하는데 이러한 동적 페이지를 구현하기 위해서는 다음과 같이 JSP태그를 사용해야 한다.

 

스크립트릿 - 자바 코드를 기술한다. - <% %>

 

선언 - 변수와 메소드를 선언한다. - <%! %>

 

표현식 - 계산식이나 함수를 호출한 결과를 문자열 형태로 출력한다. - <%= %>

 

주석 - JSP페이지에 설명을 넣는다. - <%-- --%>

 

지시자 - JSP페이지의 속성을 지정한다. - <%@ %>

 

JSP페이지에서는 자바를 사용하려면 특정 태그에 기술해야 한다.

이러한 기능을 제공하는 JSP스크립트 요소들은 서버가 인식하는 JSP태그 중 스크립트릿, 선언문, 표현식

3가지가 있다.

 

1. [스크립트릿(scriptlet)] : 자바 코드를 구현 

<% 
	int su1 = 20;
    int su2 = 10;
    int sum = su1 + su2;
    out.println(su1 + " + " + su2 + "=" + sum);
 %>

 

2.[선언문(declaration)] : 변수 선언 및 메소드를 정의

<%!
	String str = "Hello JSP";
    int su1 = 5, su2= 7;
    
    public int method(){
    	return su1 + su2;
        }
  %>

 

3. [표현식(expression)] : 문자열을 출력한다. 

<% out.println("msg"); %>

<%-- 
	<%= 변수%>
    <%= 수식%>
    <%= 메소드 호출%>
    
    *주의*
    <%= 변수, %> 개발자가 작성한 표현식을(;사용하지 않음)
    웹 컨테이너가 out.println()으로 변환시킴
    out.println(a ;); <- 컴파일 오류남.
    
--%>

'JSP' 카테고리의 다른 글

[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19
[JSP] JSP페이지  (0) 2020.10.19

JSP(Java Server Page)

 

-JSP는 Java Server Page의 약어로서 HTML태그에 자바로 프로그래밍하여 브라우저에 보여주는 페이지이다.

인터넷을 사용하는 사용자에게 정보를 제공하기 위해서는 HTML 태그를 사용하여 웹 브라우저 내에 정보를

표시하는데 JSP에서는 이러한 HTML 태그를 사용할 수 있어 웹 어플리케이션의 프레젠테이션(View의 역할)

역할을 한다. JSP는 JSP에서만 사용 가능한 다양한 태그(예를들면 스크립트릿과 같은)을 이용하여 쉽게

웹 프로그래밍을 할 수 있도록 한다.

 

JSP에서 HTML태그 사이에 <% %>를 추가하려면 JSP파일로 작성해야 한다. 

그리고 JSP파일은 HTML파일과 다르게 동작을 하는데 HTML파일은 확장자가 html이고 이는 웹 브라우저 내의

번역기가 돌리는 반면 JSP파일은 톰캣 서버가 번역하여 그 결과를 HTML 태그로 변환하여 웹 브라우저로 내려 보낸다.

 

컨텍스트 패스는 여러 개의 웹 어플리케이션이 WAS에서 동작할 경우 이를 구분하기 위해 사용한다.

이클립스가 자동으로 만들어주는 컨텍스트 패스는 프로젝트 이름과 동일하다.

다음은 JSP를 요청하기 위한 URL이다.(http: //localhost:8080/webapp/jspEx/Ex1.jsp)

프로젝트 생성시 입력하는 프로젝트 이름은 개발자 입장에서 개발을 위해서 생성된 파일들을 관리하기 위한 폴더이고

컨텍스트 패스는 사용자가 해당 웹 어플리케이션을 사용하기 위해서 접근하는 경로가 된다.

경우에 따라서는 개발자는 컨텍스트 패스 이름을 웹 프로젝트 이름과는 다른 이름으로 바꿀 수 있다.

 

예문
<html>
	<body>
    	<%
        	int su1 = 20;
            int su2 = 10;
            int sum = su1 + su2;
            out.println(su1 + " + " + su2 + "=" + sum);
          %>
     </body>
 </html>

JSP의 처리과정(서블릿과 JSP)

 

-JSP로 만들어진 예제를 보면 결과물로 놓고 보았을 때 서블릿과 별반 다른 일을 하지 않는다.

자바 기반으로 웹 어플리케이션을 작성하기 위한 도구로 서블릿이 먼저 만들어졌다. 하지만 서블릿은

HTML코드가 자바 코드 안에 들어가는 구조이다. 디자이너가 자바를 이해하지 못한 채 HTML코드를 자바

형태인 서블릿에서 작성한다는 것은 거의 불가능한 일이다.

이러한 문제점 때문에 등장한 것이 JSP이다. 

JSP는 HTML문서에 자바 코드가 들어가는 구조이기 때문에 서블릿보다는 JSP로 개발하는 편이 훨씬 쉽고 간단하다.

 

[처리과정]

 

개발자가 JSP를 작성 -> MyJSP.jsp파일을 만들고 -> 웹 컨테이너가 서블릿으로 변환한다. -> MyJSP_jsp.java 클래스파일로 변환.

 

[웹 컨테이너가 JSP를 변환하여 만들어 낸 서블릿 코드 순서]

 

HttpJspBase의 하위 클래스를 생성 -> 요청에 대해 응답하는 _jspService()를 만든다 -> JSP를 작성할 때 쓰는 out과 request와 같은 내장 객체를 선언한다. -> 내장 객체를 생성한다. -> JSP에 있는 HTML코드, 스크립트릿을 출력 스트림

out의 출력 메소드로 출력한다.

 

'JSP' 카테고리의 다른 글

[JSP] JSTL(Jsp Standard Tag Library)  (0) 2020.10.26
[JSP] EL(Expression Language)  (0) 2020.10.26
[JSP] JSP - 액션 태그 종류  (0) 2020.10.26
[JSP] JSP페이지 - 구구단 테이블 만들기  (0) 2020.10.19
[JSP] JSP페이지 - 기본 태그  (0) 2020.10.19

다음은 생성된 테이블에 값을 집어 넣는 insert문이다.

 

package DB;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class DBEx4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String driver = "com.mysql.cj.jdbc.Driver"; // 드라이버 연결
		String url = "jdbc:mysql://localhost:3306/app?characterEnconding=UTF-8&serverTimezone=UTC"; // 주소 정보
		Connection conn = null;
		Statement stmt = null; // 상태에 대한 객체를 만들고 데이터베이스에 명령을 수행한다.(데이터베이스에 명령을 내리기 위한 객체)
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, "root", "java");
			System.out.println("데이터베이스 연결 성공");
			stmt = conn.createStatement();
			String sql = insert();
			int result = stmt.executeUpdate(sql);
			String msg = result > -1 ? "successful" : "fail";
			System.out.println(msg);
		} catch (Exception e) {
			System.out.println("데이터베이스 연결 실패");
		} finally {
			try {
				// statement먼저 닫고 connection닫는다.(순서)
				if (stmt != null)stmt.close();
				if (conn != null)conn.close();
			} catch (Exception e) {}
		}
	}//end main
	public static String insert() {
		java.util.Scanner scan = new java.util.Scanner(System.in);
		String sql = "insert into TEST1 values('abc', 'abc123', 100)";
		return sql;
	}
}

 

쿼리문 작성은 다음과 같다.

INSERT INTO DBTEST VALUES('abc' , 'abc123', 100); 

마찬가지로 MySQL 워크벤치에서 직접 쿼리문을 입력하여 데이터를 집어넣을 수 있다.

'DB' 카테고리의 다른 글

[DB] IN연산자  (0) 2021.03.23
[DB]컬럼 별칭 사용  (0) 2021.03.21
[DB]MySQL -1  (0) 2020.10.15
[DB] 용어 설명  (0) 2020.10.15

이클립스와 데이터베이스(MySQL)을 연동(?)하기 위해서는 드라이버 설정이 필요하다.

 

public class DBex {

	public static void main(String[] args) {
//		String driver = "com.mysql.jdbc.Driver" ; // ver5.x
		String driver = "com.mysql.cj.jdbc.Driver"; //ver8.x
		try {
			Class.forName(driver);
			System.out.println("데이터베이스 드라이버 로딩 성공");
		}catch(Exception e) {
			System.out.println("데이터베이스 드라이버 로딩 실패");
		}
	}
}

 

package DB;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBEx2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String driver = "com.mysql.cj.jdbc.Driver"; //드라이버 연결
		//String url = "jdbc:mysql://localhost:3306/app"; //주소 정보 5버전
		String url = "jdbc:mysql://localhost:3306/app?characterEnconding=UTF-8&serverTimezone=UTC"; //주소 정보
		Connection conn = null; 
		try {
			Class.forName(driver);//드라이버 로딩 작업
			System.out.println("데이터베이스 드라이버 로딩 성공");
			conn = DriverManager.getConnection(url, "root", "java"); //연결 시도(준비된 커넥션을 받아주는 놈) - url , 아이디, 비밀번호
			System.out.println("데이터베이스 연결 성공!");
		}catch(Exception e) {
			System.out.println("데이터베이스 드라이버 연결 실패");
		}finally {
			try {
				if(conn != null)conn.close(); //Connection이 null이 아닐때만 close하고 연결 후 다 사용하면 close는 필수로 해줘야함.
			}catch(Exception e) {}
		}
	}

}

 

 

데이터베이스와 연결을 하는 코드이다. 

우선 Connection과 DriverManager를 임포트를 해야 한다.

그 다음 드라이버 연결과 데이터베이스 주소 정보를 가지고 데이터베이스와의 연결을 시도해야 한다.

 

이때 데이터베이스와의 연결을 하려면 예외 처리를 해주어야 하기 떄문에 

try{

}문에 드라이버 로딩 작업과 데이터베이스와의 연결을 시도하는 DriverManger로 데이터베이스와의 연결을 시도한다.

마지막으로 사용이 끝난 Connection을 close()로 닫아주면 데이터베이스와의 연결이 완료된다.

 

 

package DB;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class DBEx3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String driver = "com.mysql.cj.jdbc.Driver"; //드라이버 연결
		String url = "jdbc:mysql://localhost:3306/app?characterEnconding=UTF-8&serverTimezone=UTC"; //주소 정보
		Connection conn = null; 
		Statement stmt = null; //상태에 대한 객체를 만들고 데이터베이스에 명령을 수행한다.(데이터베이스에 명령을 내리기 위한 객체)
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, "root", "java");
			System.out.println("데이터베이스 연결 성공");
			stmt = conn.createStatement();
			int result = stmt.executeUpdate("create table DBTEST(ID varchar(10), PW varchar(10))"); //result에 -1,0,1가 나오는데 0을 포함한 1은 성공, -1은 실패,
			//varbinary는 대소문자 구분을 함.
			String msg = result > -1 ? "successful" : "fail";
			System.out.println(msg);
		}catch(Exception e) {
			System.out.println("데이터베이스 연결 실패");
		}finally {
			try {
				//statement먼저 닫고 connection닫는다.(순서)
				if(stmt!=null)stmt.close();
				if(conn!=null)conn.close();
			}catch(Exception e) {}
		}
	}

}

 

다음은 연결된 데이터베이스에 테이블을 생성하는 쿼리문이다. 이 코드에서 보이는 Statement객체는 데이터베이스에 

명령을 내리기 위한 객체이다. 

다음은 테이블을 생성하는 쿼리문이다. INSERT TABLE DBTEST (ID VARCHAR(10), PW VARCHAR(10), AGE INT);

이렇게 되면 DBTEST라는 테이블이 생성되고 그 안에 컬럼이 ID, PW, AGE로 3개의 컬럼이 생성된다.

                                     

 

DBTEST라는 테이블이 정상적으로 만들어졌다. 이클립스에서 Statement객체를 사용하여 테이블을 생성할 수도 있고

MySQL workbench를 통해 직접 쿼리문을 다음과 같이 입력하여 테이블을 생성할 수 있다.

 

마지막으로 사용한 Statement객체와 Connection 객체를 닫아줌으로써 완료된다.

'DB' 카테고리의 다른 글

[DB] IN연산자  (0) 2021.03.23
[DB]컬럼 별칭 사용  (0) 2021.03.21
[DB] MySQL - 2  (0) 2020.10.15
[DB] 용어 설명  (0) 2020.10.15

+ Recent posts