scope_el.java
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>scople_el</title>
</head>
<body>
<form action="objelOk.jsp" method="get">
ID : <input type="text" name="id"><br />
PW : <input type="password" name="pw">
<input type="submit" value="login">
</form>
<%
application.setAttribute("application_name", "application_value");
session.setAttribute("session_name", "session_value");
pageContext.setAttribute("page_name", "page_value");
request.setAttribute("request_name", "request_value");
%>
pageScope : ${ pageScope.page_name }<br />
<jsp:forward page="objelOk.jsp" />
</body>
</html>
objelOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>obj-el-OK</title>
</head>
<body>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
ID : <%= id %><br />
PW : <%= pw %><br />
<hr />
applicationScope : ${ applicationScope.application_name }<br />
sessionScope : ${ sessionScope.session_name }<br />
pageScope : ${ pageScope.page_name }<br />
requestScope : ${ requestScope.request_name }
</body>
</html>
lib 안에 2개 삽입 (jstl.jar, standard.jar)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
각 언어 형식 별 표현 방법
c:out, c:set, c:remove, c:if(test, var),
c:choose, c:when, c:otherwise,
c:forEach
JSTL에서도 EL 문법을 쓸 수 있다.
JSTL은 pageContext 영역에 저장된다.
jstl_ex.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL_ex</title>
</head>
<body>
<!-- c:out => 출력 -->
<c:out value="hello world" />
<br />
<c:out value="hello world"></c:out>
<br />
<c:out value='${"hello world"}' />
<br />
<!-- c:set => 변수 다루기 -->
<c:set var="name1" value="홍길동" />
<c:set var="name2" value="홍길순" />
<%
pageContext.setAttribute("name1", "김길동");
%>
${ name1 }
<br>${ name2 }<br>
<hr />
<!-- c:remove => 메모리에 있는 것 지우기 -->
<c:remove var="name1" />
${ name1 }
<br>${ name2 }<br>
<hr />
<c:if test="${10 > 20}" var="result1">
10은 20보다 크다.<br>
</c:if>
result1 : ${result1}
<br>
<c:if test="${10 < 20}" var="result2">
20은 10보다 크다.<br>
</c:if>
result2 : ${result2}
<hr />
<!-- choose, when, otherwise -->
<c:set var="user" value="abcd123" /><!-- value를 admin으로 바꿔서 테스트 -->
<c:choose>
<c:when test="${ user == 'admin' }">
관리자 페이지
</c:when>
<c:otherwise>
${user}님 반갑습니다.
</c:otherwise>
</c:choose>
<hr />
<!-- c:forEach => 반복문 -->
<% pageContext.setAttribute("numList", new String[]{"1", "2", "3", "4", "5"}); %>
<ul>
<c:forEach var="num" items="${numList}" begin="1" end="3">
<!-- index처럼 0부터 시작해서 돈다. -->
<li>${num }</li>
</c:forEach>
</ul>
</body>
</html>
- ArrayList를 만든다.
- 리스트 요소를 ArrayList에 추가한다.
- pageContext에 ArrayList를 속성 추가한다.
- ul 태그 안의 li 태그로 나올 수 있도록 c:forEach를 사용해준다. (ul 안에서)
<%
List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("pineapple");
fruits.add("kiwi");
fruits.add("melon");
pageContext.setAttribute("fruits", fruits);
%>
<ul>
<c:forEach var="fruit" items="${fruits}">
<li>${fruit}</li>
</c:forEach>
</ul>
1번
<%
EmpDAO dao = new EmpDAO();
List<EmpVO> vos = dao.empSelect();
List<String> names = new ArrayList<>();
for(EmpVO vo : vos){
names.add(vo.getEname());
}
pageContext.setAttribute("names", names);
%>
<ul>
<c:forEach var="name" items="${names}">
<li>${name}</li>
</c:forEach>
</ul>
2번
<%
EmpDAO dao = new EmpDAO();
List<EmpVO> emps = dao.empSelect();
pageContext.setAttribute("emps", emps);
%>
<ul>
<c:forEach var="emp" items="${emps}">
<li>${emp.ename}</li>
</c:forEach>
</ul>
3번
<%
EmpDAO dao = new EmpDAO();
List<EmpVO> emps = dao.empSelect();
pageContext.setAttribute("emps", emps);
%>
<ul>
<c:forEach var="emp" items="${emps}">
<li>${emp.getEname()}</li>
</c:forEach>
</ul>
1번
<% pageContext.setAttribute("numList", new String[]{"1", "2", "3", "4", "5","6","7","8","9"}); %>
<ul>
<c:forEach var="num1" items="${numList}" begin="1" end="8">
<li>
<ul>
<c:forEach var="num2" items="${numList}" >
<li>${num1} * ${num2} = ${num1 * num2}</li>
</c:forEach>
</ul>
</li>
<hr />
</c:forEach>
</ul>
2번
<table border="1">
<c:forEach var="i" begin="1" end="9">
<tr>
<c:forEach var="j" begin="1" end="9">
<td>${j }x ${i} = ${i*j}</td>
</c:forEach>
</tr>
</c:forEach>
</table>
<%
EmpDAO dao = new EmpDAO();
List<EmpVO> emps = dao.empSelect();
pageContext.setAttribute("emps", emps);
%>
<c:forEach var=" emp" items="${emps }">
<div class="col-sm-4">
<div class="product-image-wrapper">
<div class="single-products">
<div class="productinfo text-center">
<img src="images/home/product1.jpg" alt="" />
<h2>${emp.sal}</h2>
<p>${emp.hiredate}</p>
<a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to
cart</a>
</div>
<div class="product-overlay">
<div class="overlay-content">
<h2>${emp.sal}</h2>
<p>${emp.hiredate}</p>
<a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to
cart</a>
</div>
</div>
</div>
<div class="choose">
<ul class="nav nav-pills nav-justified">
<li><a href="#"><i class="fa fa-plus-square"></i>Add
to wishlist</a></li>
<li><a href="#"><i class="fa fa-plus-square"></i>Add
to compare</a></li>
</ul>
</div>
</div>
</div>
</c:forEach>
EmpVO.java에 함수 추가
public int getImgNum() {
return (int) (Math.random() * 6) + 1;
}
emp_shop.jsp 내의 이미지 코드 수정
<img src="images/home/product${emp.getImgNum()}.jpg" alt="" />
create table mvc_board(
bid NUMBER(4) PRIMARY KEY,
bname VARCHAR2(50),
btitle VARCHAR2(100),
bcontent VARCHAR2(1000),
bdate DATE DEFAULT SYSDATE,
bhit NUMBER(4) DEFAULT 0,
bgroup NUMBER(4),
bstep NUMBER(4),
bindent NUMBER(4)
);
commit;
create sequence mvc_board_seq;
insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent)
values (mvc_board_seq.nextval, 'test' , '테스트', '테스트', 0, mvc_board_seq.currval, 0, 0);
select * from mvc_board;
게시판 코드
시퀀스 : auto sequence
Controller (Servlet) : Client에서 받는 모든 것들을 담는다.
BoardController.java
package edu.global.board.controller;
import java.io.IOException;
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 edu.global.board.command.BCommand;
/**
* Servlet implementation class BoardController
*/
@WebServlet("/.do")
public class BoardController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BoardController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet() ... ");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost() ... ");
}
private void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("actionDo() ... ");
request.setCharacterEncoding("UTF-8");
String viewPage = null;
BCommand command = null; // Board의 커맨드
}
}
BCommand.java
package edu.global.board.command;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class BoardController
*/
public abstract interface BCommand {
void execute(HttpServletRequest request, HttpServletResponse response);
}
// 실행 함수를 interface로 저장
BListCommand.java
package edu.global.board.command;
import java.io.IOException;
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 edu.global.board.dao.BDao;
public class BListCommand implements BCommand{
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
BDao dao = new BDao(); // Board DAO 호출
}
}
BDao.java
package edu.global.board.dao;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BDao {
private DataSource dataSource;
public BDao() {
try {
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
}