jsp용 bean class

  1. 패키지화 되어져야 한다. 
  2. 가급적이면 defalut생성자를 가지고 있어야 한다. (아규먼트 가지지 않는 생성자
  3. 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는 유니크 해야함
      • id값은 변수가 된다. 
    • scope : 언제까지 유효한 객체인지 (기본값 : page)
      • 생략하면 : 객체를 무조건 생성한다고 생각하면 됨
    • 무조건 객체 생성하지 않음
      • 이미 객체가 생성되어있으면, 객체 가져옴
      • 생성 안 되어있으면, 생성함
  • set/get Property
    •  getProperty
      • 사용가능한 상태로 만든 자바 객체에 대해서 getter메소드 생성해서 이 자리에 출력하겠다. 
      • 자바 bean 클래스가 가지고 있는 것 중에서 getter만 호출함
        • getter를 호출하고 그 자리에 리턴 결과를 출력해준다. 
    • setProperty
      • 사용가능한 상태로 만든 자바 객체에 대해서 setter를 호출
    • 어떤 클래스에 대해서 set, get주냐 ?
      • name속성에 대해 정해짐 : id값을 줌
    • 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 스코프
    • 서버가 죽을 때 까지 유효한 객체
      • 로그 처리
      • 사이트가 운영하는 내내 필요한 객체
    • 하나만 생성해서 모든 클라이언트와 공유
      • ex) 한 달 동안 몇 명이 방문했다.. 
    • servletContext (컨테이너 객체)

 


  • 컨테이너 객체
    • 종류 
      • HttpServletRequest
      • HttpSession
      • ServletContext
        • getservletcontext
          • WAS가 객체 생성해줌
          • reload 되면 다시 생성함
    • 기능
      • setAttribut
      • getAttribut
      • removeAttribute

 

MVC

  • model-view-contorller
  • 요청 받는 얘와 응답하는 얘 나눠서 개발
  • 병렬적으로 개발
  • 개발 생산성 높음
  • 유지보수 편함

 

  •  controller
    • 서버에 요청을 해왔을 때, 요청을 받아서 요청받은 목적에 맞게 기능 수행
    • servlet
  • model 
    • db연동, 값 처리-> view한테 넘김
    • c와 v사이 부가적인 기능 제공 java클래스
    • java Bean
      • jsp에서도 사용 가능하게
    • 도메인모델, 서비스 모델
      • 도메인 모델 - DTO(data transfor object), VO
        • 값 보관해서 누구에게 전달
      • 서비스 모델
        • DAO - DB 연동 로직
        • 비즈니스 로직 - BIZ
  • view
    • 응답 (클라이언트한테 어떻게 보여줄까)
    • ex) 봄, 여름, 가을, 겨울 마다 웹페이지가 바뀌는 것 (배치, 이미지, 등)
    • jsp

 

 

'study > JAVA 전문가' 카테고리의 다른 글

[JSP] EL  (0) 2022.01.05
[ServletJSP] 시험 준비  (0) 2022.01.04
[jsp] 액션태그  (0) 2022.01.03
[fileIUpload,jsp] 서블릿 구현  (0) 2021.12.30
[servlet]요청 재지정  (0) 2021.12.29

+ Recent posts