jsp용 bean class
- 패키지화 되어져야 한다.
- 가급적이면 defalut생성자를 가지고 있어야 한다. (아규먼트 가지지 않는 생성자
- bin을 통해서 기능을 처리하는데 있어서, jsp를 통해서 클라이언트에 표현하는 목적을 가짐
- bin이 어떤 기능이든 간에, 수행결과를 추출하는 메서드는 get---라고 시작해야한다.
- 설정하는 기능 : setter로 만들어줘야 한다.
- 자바 잘 모르는 사람도 잘 하기 위해서
- 태그로 객체 생성 가능하게
- elu로 생성 가능
package jspbean;
import java.time.LocalDateTime;
public class Today {
private int year;
private int month;
private int date;
private int hour;
private int minute;
public Today() {
LocalDateTime currentTime = LocalDateTime.now();
year = currentTime .getYear();
month = currentTime .getMonthValue();
date = currentTime .getDayOfMonth();
hour = currentTime .getHour();
minute = currentTime.getMinute();
}
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getYear() {
return year;
}
public int getMonth() {
return month;
}
public int getDate() {
return date;
}
}
1.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="jspbean.Today"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폰트 끌어오기</title>
<link href="https://fonts.googleapis.com/css?family=Dokdo:400"
rel="stylesheet">
</head>
<body>
<h1 style="font-family: 'Dokdo'">
지금은 <%Today obj = new Today();%>
<%=obj.getYear()%>년
<%=obj.getMonth()%>월
<%=obj.getDate()%>일
<%=obj.getHour()%>시
<%=obj.getMinute()%>분 입니당
</h1>
</body>
</html>
- 자유롭게 가져올 수 있음
- 패키지화만 되어있으면 가능
- 객체 생성하는 코드, 메서드 호출하는 코드 구현할 줄 알아야
2.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="https://fonts.googleapis.com/css?family=Gamja+Flower:400"
rel="stylesheet">
</head>
<body>
<h1 style="font-family: 'Gamja Flower'">
지금은
<jsp:useBean id="obj" class="jspbean.Today" />
<jsp:getProperty name="obj" property="year" />년
<jsp:getProperty name="obj" property="month" />월
<jsp:getProperty name="obj" property="date" />일
<jsp:getProperty name="obj" property="hour" />시
<jsp:getProperty name="obj" property="minute" />분 입니당
</h1>
</body>
</html>
- 액션태그 사용함 = useBean, getProperty
- useBean : jsp에서 사용 가능한 자바 클래스
- 태그를 가지고 사용가능한 자바 클래스
- 어떤 자바 클래스를 사용하고 싶은가? class속성에 패키지 명
- 모든 멤버가 static이 아니면 객체 생성해서 사용해야함
- 여러번 사용할 수 있지만, id는 유니크 해야함
- scope : 언제까지 유효한 객체인지 (기본값 : page)
- 생략하면 : 객체를 무조건 생성한다고 생각하면 됨
- 무조건 객체 생성하지 않음
- 이미 객체가 생성되어있으면, 객체 가져옴
- 생성 안 되어있으면, 생성함
- set/get Property
- getProperty
- 사용가능한 상태로 만든 자바 객체에 대해서 getter메소드 생성해서 이 자리에 출력하겠다.
- 자바 bean 클래스가 가지고 있는 것 중에서 getter만 호출함
- getter를 호출하고 그 자리에 리턴 결과를 출력해준다.
- setProperty
- 사용가능한 상태로 만든 자바 객체에 대해서 setter를 호출
- 어떤 클래스에 대해서 set, get주냐 ?
- property : get/set을 뺀 나머지 (첫 글자만 소문자로 바꿔서 지정)
3.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="jspbean.Today"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>3번째 방법</title>
<link href="https://fonts.googleapis.com/css?family=Poor+Story:400"
rel="stylesheet">
</head>
<body>
<h1 style="font-family: 'Poor Story';">
지금은 <%pageContext.setAttribute("obj", new Today());%>
${obj.year}년
${obj.month}월
${obj.date}일
${obj.hour}시
${obj.minute}분
입니당
</h1>
</body>
</html>
- 표현식 태그를 간단하게 해주는 것 : EL
- setter호출 불가
- obj라고 보관된 객체를 찾음
- <%pageContext.setAttribute("obj", new Today());%>
- el만의 구문을 가짐
- 일반 변수가 아니고, 어떤 객체를 어딘가 보관한 이름이라고 생각하면 됨
- setAttribute
- 어떤 객체 안에 보관하느냐
스코프
- 객체 공유
- 객체의 스코프 : 객체가 생성되어 유지되는 기간
- 여러가지 목적에 의해서, 여러 jsp들이 객체에 보관해 놓으면 다른 얘가 가지고 갈 수 있는
- 어떤 jsp/servlet를 요청하든 여러 jsp가 공유하도록
- page 스코프
- 요청된 서블릿,jsp가 수행한 동안에 유효한 객체
- 공유 X
- servlet
- 객체 생성해서 지역변수에 담으면 됨 - servlet
- jsp
- page context에 보관하면 됨
- use bean속성 사용해서 scope 속성 생략해도 됨
- request 스코프
- 요청이 끝날 때까지 공유함
- forward, include했을 때 의미가 있음
- 요청이 끝나면 사라짐
- 객체를 보관한 뒤 jsp에 넘기고 jsp는 꺼내게 만듦
- 객체 생성을 해서 httpservletRequest에 보관하면 된다.
- session 스코프
- 브라우저가 살아있는 동안 공유함
- session객체가 살아있는 동안 (일정시간 동안)
- 클라이언트마다 각각 할당
- 다음 요청시에도 클라이언트별로 객체를 생성해서 사용하고 싶을 때 - httpsession
- application 스코프
- 서버가 죽을 때 까지 유효한 객체
- 로그 처리
- 사이트가 운영하는 내내 필요한 객체
- 하나만 생성해서 모든 클라이언트와 공유
- servletContext (컨테이너 객체)
- 컨테이너 객체
- 종류
- HttpServletRequest
- HttpSession
- ServletContext
- getservletcontext
- WAS가 객체 생성해줌
- reload 되면 다시 생성함
- 기능
- setAttribut
- getAttribut
- removeAttribute
MVC
- model-view-contorller
- 요청 받는 얘와 응답하는 얘 나눠서 개발
- 병렬적으로 개발
- 개발 생산성 높음
- 유지보수 편함
- controller
- 서버에 요청을 해왔을 때, 요청을 받아서 요청받은 목적에 맞게 기능 수행
- servlet
- model
- db연동, 값 처리-> view한테 넘김
- c와 v사이 부가적인 기능 제공 java클래스
- java Bean
- 도메인모델, 서비스 모델
- 도메인 모델 - DTO(data transfor object), VO
- 서비스 모델
- DAO - DB 연동 로직
- 비즈니스 로직 - BIZ
- view
- 응답 (클라이언트한테 어떻게 보여줄까)
- ex) 봄, 여름, 가을, 겨울 마다 웹페이지가 바뀌는 것 (배치, 이미지, 등)
- jsp