JSP 기초
JSP란
- Java Server Page : 서버에서 실행되는 자바파일
-
Java + HTML : HTML 기반에 Java가 첨부되는 것
- 자바영역 :
<% %>
<html>
<body>
<h1>게시판</h1>
<ul>
<%
for(BoardVO vo:list)
{
%>
<li> 번호 - 제목 - 이름 - 작성일 - 조회수 </li>
<%
}
%>
</ul>
</body>
</html>
- 화면 출력 영역 :
<%= %>
=out.println()
<body>
<%
Date date = new Date();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
String today=sdf.format(date);
%>
오늘 날짜는 <%=today %>입니다. <br>
오늘 날짜는 <% out.println(today); %>입니다.
</body>
JSP 구동방식
- 톰캣이 JSP를 .java로 변환함
- 컴파일해서 .class로 변환
- 한줄씩 읽어서 출력함
- 한줄씩 번역
- 메모리 내용(HTML)을 브라우저에서 읽어서 출력
JSP의 구성요소
1. 지시자
- JSP의 시작부분
page : JSP 파일에 대한 정보
- 지정된 속성에 값을 채워야 한다.
jsp<%@ page 속성="값",속성="값"...%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.text.*"%>
- contentType
- 브라우저에 HTML을 전송한다. (브라우저에서 HTML 파싱 준비)
- contentType="text/html" => 화면에 출력
- contentType="text/xml" => 문서저장
- charset
- default는 영문 : ISO-8859_1
- 한글 : UTF-8
- response.setContentType("text/html;charset=euc-=kr")
- import
- 이미 만들어진 클래스를 읽어올 때 사용 (라이브러리 로드)
- pageEncoding 뒤에 써도 되고, 아래처럼 page 태그 뒤에 써도 됨
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
- errorPage="jsp파일 등록"
- 에러가 나면 이동하는 파일임
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,java.text.*" errorPage="error.jsp"%>
- buffer
- 임시 저장장치
- html이 출력되는 장소
- 크기가 커지면 버퍼 수정
tablib : 태그로 자바의 문법을 만들어줌
- 제어문 :
<c:forEach>
,<c:if>
<html>
<body>
<h1>게시판</h1>
<ul>
<c:forEach items="list">
<li> 번호 - 제목 - 이름 - 작성일 - 조회수 </li>
</c:forEach>
</ul>
</body>
</html>
include : 특정 JSP안에 JSP를 첨부
- 조립식 프로그램이 시작됨
- 여러개 파일을 나눠서 하나에 묶어서 처리하는 프로그램 설계를 위해 나온 것이 include임
- 스프링에서 사용됨
2. 자바 코딩 부분
- 스크립트릿
<% %>
: 일반 자바 코딩 - 표현식
<%= %>
: out.println() , 화면에 값을 출력 - 선언식
<%! %>
: 전역변수 , 메소드를 만들 경우 (사용빈도
3. 내장객체 (8개 지원)
- 미리 객체를 생성해 놓고 필요시마다 사용가능하게 만들어주는 것
- request : 사용자의 요청값을 받는 것
- response : 서버에서 처리가되면 응답을 해줘야 하는데, 응답해주는 것을 response라고 함
- session
- pageContext
- page
- config
- exception
- application
4. 액션태그
include
- 조립식 프로그램이 시작됨
- 여러개 파일을 나눠서 하나에 묶어서 처리하는 프로그램 설계를 위해 나온 것이 include임
- 스프링에서 사용됨
useBean
setProperty
5. 표현식 (EL , JSTL)
6. MVC
server.xml
- 경로 :
<Context>
뒤에/
를 지우고</Context>
를 추가한다<Resource>
태그를 활용해서 DBCP을 작성한다.
커넥션 풀이란?
- DBCP = DataBase Connection Pool
- 데이터베이스와 연결된 커넥션을 미리 만들어서 풀 속에 저장해 두고 있다가
필요할 때에 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 기법 - 커넥션을 생성하는데 드는 연결 시간이 소비되지 않는다.
- 커넥션을 재사용하기 때문에 생성되는 커넥션 수가 많지 않다.
- maxActive="10" : Connection의 총 갯수
- maxIdle="10" : 현재 사용 중에 있는 Connection
- maxWait="-1" : 10명이 동시에 사용할 Connection
- 10명이 동시에 사용할 때, 사용이 가능할때까지 기다리는 시간
- -1은 무한대 기다리라는 의미임
- ConnectionPool을 활용하면 Connection 객체를 열때만 달라지게 된다
- 기존 : 직접 생성
- 변경 후 : 미리 만들어져 있기 때문에 만들어진 주소(name)만 얻어오면 된다. ==> jdbc/oracle
<Resource
driverClassName="oracle.jdbc.driver.OracleDriver"
username="hr"
password="happy"
url="jdbc:oracle:thin:@211.238.142.181:1521:XE"
// 윗부분은 데이터베이스 정보임 : 오라클과의 연결을 시도하는 것임
auth="Container"
name="jdbc/oracle"
type="javax.sql.DataSource"
maxActive="10"
maxIdle="10"
maxWait="-1"
/>
####
-
- 웹프로그램은 항상 오라클 연결해서 데이터를 가지고 온다
- 방식 : JDBC , DBCP , ORM(MyBatis)
ORM
- 마이바티스와 하이버네이트같은 프레임워크를 ORM이라고 한다.
- Connection
- PreparedStatement , Resultset