Server

JSP STEP 11 - JSP Model 2 + EL + JSTL

2023. 5. 11. 12:48
728x90

★ JSP Model 2 + EL + JSTL

  • JSP 페이지에서 자바 구문을 사용하지 말자!! 에서 나온 문법들
  • 자바 구문 : 스크립 틀릿(<% %>, <%= %>) 
  • EL, Expression Language 
- 표현식 언어
- 자바의 값을 HTML 문서에 출력하는 역할
- 내장 객체(pageContext, request, session, application)안에 있는 데이터를 출력하는 언어
- 일반 데이터는 출력 불가능;;

사용 구문
${내장객체의 데이터 키}

 

■ 필요 파일들

- com.test.mvc > "Address.java"	: Controller
           > "AddressDAO.java" : Model(?)
           > "AddressVO.java" : Model
- webapp > mvc > "address.jsp"	: view

 

■ 자주 사용하는 서블릿 코드 -> 템플릿 등록

  • windows -> preferences -> template -> java(template) -> new 등록
  • ${primary_type_name} : 바뀌는 클래스명에 따라 자동으로 적힘
  • ${name} : URL 이름을 담는곳

서블릿 기초 시작 코드

  • template 실행
  • 자동 import : Ctrl + shift + o
package com.test.mvc;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//자동 import : Ctrl + shift + o

@WebServlet("/address.do")
public class Address extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		//Address.java

		RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/mvc/address.jsp");
		dispatcher.forward(req, resp);
	}

}

 

■ Address.java -> Controller

  • DB 작업 > select > 주소록 몇명?
  • DB 작업 담당자 > "AddressDAO.java"
package com.test.mvc;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//자동 import : Ctrl + shift + o

@WebServlet("/address.do")
public class Address extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		//Address.java
		
		//DB 작업 > select > 주소록 몇명?
		//DB 작업 담당자 > "AddressDAO.java"
		
		AddressDAO dao = new AddressDAO();
		int count = dao.getCount();
		
		int[] nums = {10, 20, 30, 40, 50};
		
		List<Integer> nums2 = new ArrayList<Integer>();
		nums2.add(100);
		nums2.add(200);
		nums2.add(300);
		
		Map<String,Integer> nums3 = new HashMap<String,Integer>();
		nums3.put("kor", 100);
		nums3.put("eng", 90);
		nums3.put("math", 80);
		
		AddressVO vo = new AddressVO();
		vo.setSeq("1");
		vo.setName("홍길동");
		vo.setAge("20");
		vo.setTel("010-1234-1234");
		vo.setAddress("서울시 강남구 역삼동");

		req.setAttribute("count", count);
		req.setAttribute("nums", nums);
		req.setAttribute("nums2", nums2);
		req.setAttribute("nums3", nums3);
		req.setAttribute("vo", vo);
		
		

		RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/mvc/address.jsp");
		dispatcher.forward(req, resp);
	}

}

 

■ address.jsp -> view

<%@ 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 rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>

	<h1>Address</h1>
	
	<!-- 
	
		JSP 페이지에서 자바 구문을 사용하지 말자!!
		- 지저분함;;
		
	
		EL, Expression Language
		- 표현식 언어
		- 자바의 값을 HTML 문서에 출력하는 역할
		- 내장 객체(pageContext, request, session, application)안에 있는 데이터를 출력하는 언어
		- 일반 데이터는 출력 불가능;;
	
	 -->
	 
	 <div>
	 	<!-- 기존 표현식 -->
	 	<div>주소록 총 인원수 : <%= request.getAttribute("count") %></div>
	 	<!-- EL 표현식 -->
	 	<div>주소록 총 인원수 : ${count} </div>
	 	
	 	<!-- X2를 할 경우 -->
	 	<!-- 기존 표현식 -->
	 	<div>주소록 총 인원수 : <%= (int)request.getAttribute("count") * 2 %></div>
	 	<!-- EL 표현식 -->
	 	<div>주소록 총 인원수 : ${count * 2} </div>
	 	
	 	<hr>
	 	
	 	<!-- 리터럴 표현 -->
	 	
	 	<div>${100}</div>
	 	<div>${3.14}</div>
	 	<div>${"홍길동"}</div>
	 	<div>${'홍길동'}</div>
	 	<div>${true}</div>
	 	<div>${null}</div>
	 	
	 	<hr>
	 	
	 	<!-- 배열 -->
	 	<div>${nums}</div>
	 	<div>${nums[0]}</div>
	 	
	 	<hr>
	 	
	 	<!-- List -->
	 	<div>${nums2}</div>
	 	<div>${nums2.get(0)}</div>
	 	<div>${nums2[0]}</div>
	 	
	 	<hr>
	 	
	 	<!-- Map -->
	 	<div>${nums3}</div>
	 	<div>${nums3.get("kor")}</div>
	 	<div>${nums3["kor"]}</div>
	 	
	 	<hr>
	 	
	 	<!-- Object -->
	 	<div>${vo}</div>
	 	<div>${vo.getName()}</div>
	 	<div>${vo["name"]}</div>
	 	<div>${vo.name}</div>
	 	
	 </div>
	 
	 	



<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>

 

■ AddressDAO.java -> Model

package com.test.mvc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.test.my.DBUtil;

public class AddressDAO {

	
	public int getCount() {
		
		try {
			Connection conn = null;
			Statement stat = null;
			ResultSet rs = null;
			
			conn = DBUtil.open();
			
			String sql = "select count(*) as cnt from tblAddress";
			
			stat = conn.createStatement();
			
			rs = stat.executeQuery(sql);
			
			if (rs.next()) {
				
				return rs.getInt("cnt");
				
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		return 0;
	}
}

 

■ AddressVO.java -> Model

package com.test.mvc;

//tblAddress > 레코드 1개를 담을 수 있는 객체
//Address Value Object
public class AddressVO {

	private String seq;
	private String name;
	private String age;
	private String tel;
	private String address;
	
	public String getSeq() {
		return seq;
	}
	public void setSeq(String seq) {
		this.seq = seq;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
}

 

★ EL ex)

  • 리터럴 표현
<!-- 리터럴 표현 -->
<div>${100}</div>
<div>${3.14}</div>
<div>${"홍길동"}</div>
<div>${'홍길동'}</div>
<div>${true}</div>
<div>${null}</div>

  • 배열
<!-- 배열 -->
<div>${nums}</div>
<div>${nums[0]}</div>

  • List
<!-- List -->
<div>${nums2}</div>
<div>${nums2.get(0)}</div>
<div>${nums2[0]}</div>

  • Map
<!-- Map -->
<div>${nums3}</div>
<div>${nums3.get("kor")}</div>
<div>${nums3["kor"]}</div>

  • object
<!-- Object -->
<div>${vo}</div>
<div>${vo.getName()}</div>
<div>${vo["name"]}</div>
<div>${vo.name}</div>

  • 연산자
<!-- 연산자 -->

<div>a: ${a}</div>
<div>b: ${b}</div>

<div>a + b : <%= (int)request.getAttribute("a") + (int)request.getAttribute("b") %></div>

<div>a + b : ${a + b}</div>
<div>a - b : ${a - b}</div>
<div>a * b : ${a * b}</div>
<div>a / b : ${a / b}</div>
<div>a % b : ${a % b}</div>

  • 비교 연산자
<div>${a > b}</div>
<div>${a gt b}</div>
<div>${a >= b}</div>
<div>${a ge b}</div>
<div>${a < b}</div>
<div>${a lt b}</div>
<div>${a <= b}</div>
<div>${a le b}</div>
<div>${a == b}</div>
<div>${a eq b}</div>
<div>${a != b}</div>
<div>${a ne b}</div>

  • 논리 연산자
<div>${a > 10 && b < 5}</div>
<div>${a > 10 and b < 5}</div>
<div>${a > 10 || b < 5}</div>
<div>${a > 10 or b < 5}</div>
<div>${!(a>10)}</div>
<div>${not(a>10)}</div>

  • 삼항 연산자
<div>${a > 0 ? "양수" : "음수"}</div>

  • 저장소에 대한 검색 범위 지정
<%

    //pageContext > request > session > application

    pageContext.setAttribute("age", 20);
    request.setAttribute("age", 30);
    session.setAttribute("age", 40);
    application.setAttribute("age",50);

%>
<div>나이 <%= pageContext.getAttribute("age") %></div>
<div>나이 <%= request.getAttribute("age") %></div>

<div>나이 : ${age}</div>

<div>나이 : ${pageScope.age}</div>
<div>나이 : ${requestScope.age}</div>
<div>나이 : ${sessionScope.age}</div>
<div>나이 : ${applicationScope.age}</div>

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Server' 카테고리의 다른 글

Servlet+JSP STEP 1 - File UPLOAD  (0) 2023.05.11
JSTL STEP 1 - JSTL 기초 셋팅 및 응용  (0) 2023.05.11
JSP STEP 10 - JSP Model  (2) 2023.05.11
JSP STEP 9 - Web Security  (0) 2023.05.10
JSP STEP 8 - DB를 연동하여, 주소록 사이트 만들기  (2) 2023.05.10
'Server' 카테고리의 다른 글
  • Servlet+JSP STEP 1 - File UPLOAD
  • JSTL STEP 1 - JSTL 기초 셋팅 및 응용
  • JSP STEP 10 - JSP Model
  • JSP STEP 9 - Web Security
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 개발블로그
  • IT자격증
  • DB
  • 프론트엔드
  • 개발자
  • java
  • 앱개발자
  • 정보처리기사필기
  • it
  • 웹개발
  • 백준
  • 정보보안전문가
  • jquery
  • 백엔드
  • JavaScript
  • DBA
  • jsp
  • 코딩테스트
  • 웹페이지
  • 정보처리기사
  • 웹개발자
  • css
  • 데이터베이스
  • 자바
  • IT자격증공부
  • IT개발자
  • React
  • 알고리즘
  • html
  • ajax

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JSP STEP 11 - JSP Model 2 + EL + JSTL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.