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 |