



https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api/3.0.0
https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl/3.0.0
https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/overview-summary.html
Overview (TLDDoc Generated Documentation)
FRAMES NO FRAMES All Tags
docs.oracle.com
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 예제</title>
</head>
<body>
<h1>JSTL 예제</h1>
<% // 스크립트 릿 대신에 <c:set....> 태그를 사용할 수 있다. %>
<c:set var="message" value="JSTL ~~~ "/>
<p>메시지 : </p><c:out value="${message}" />
<!-- IF -->
<c:if test="${message != null}">
<p>메시지 값이 null 아닙니다</p>
</c:if>
<!-- foreach -->
<c:forEach var="i" begin="1" end="10" >
<p>Number : ${i}</p>
</c:forEach>
<h2>JSTL Formatting Example</h2>
<c:set var="now" value="<%=new Date() %>"/>
<fmt:formatDate var="formattedDate" value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
<p>현재 시간 : ${formattedDate} </p>
<c:set var="price" value="12345.678"/>
<fmt:formatNumber value="${price}" type="currency" var="formatPrice" />
<p>Format Price : ${formatPrice} </p>
</body>
</html>
User 클래스 생성(DTO)
package com.tenco.mdels;
import lombok.Data;
@Data
public class User {
private int id;
private String username;
private String password;
private String email;
}
UserDAOImpl 생성
package com.tenco.repository;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.cj.protocol.Resultset;
import com.tenco.mdels.User;
/**
* 인터페이스 설계 생략..
*/
public class UserDAOImpl {
private static final String URL = "jdbc:mysql://localhost:3306/demo3?serverTimezone=Asia/Seoul";
private static final String USER = "root";
private static final String PASSWORD = "asd123";
public UserDAOImpl() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public List<User> getAUsers() {
List<User> list = new ArrayList<>();
String sql = " SELECT * FROM users " ;
try(Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
list.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}

package com.tenco.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import com.tenco.mdels.User;
import com.tenco.repository.UserDAOImpl;
@WebServlet("/user/*")
public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAOImpl userDAOImpl;
public UserController() {
userDAOImpl = new UserDAOImpl();
}
// http://localhost:8080/jstl/user/list?id=123&name=길동
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 전체 URL 를 문자를 반환 할려면
String fullURL = request.getRequestURL().toString();
System.out.println("fullURL : " + fullURL);
// URL의 쿼리 문자열을 반환 합니다.(쿼리 문자열이 없으면 null 을 반환)
String queryString = request.getQueryString();
System.out.println("queryString : " + queryString);
// 컨텍스트 루트 경로를 반환 받고 싶다면
String contextPath = request.getContextPath();
System.out.println("contextPath : " + contextPath);
// URL 마지막 경로(엔드포인트)를 반환 받고 싶다면
String pathInfo = request.getPathInfo();
System.out.println("pathInfo : " + pathInfo);
switch (pathInfo) {
case "/list":
userListPage(request, response);
break;
default:
break;
}
}
private void userListPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> userList = userDAOImpl.getAUsers();
request.setAttribute("userList", userList);
request.getRequestDispatcher("/WEB-INF/user/userList.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<%@page import="java.util.List"%>
<%@page import="com.tenco.mdels.User"%>
<%@ 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>
</head>
<body>
<h1>USERLIST PAGE</h1>
<%
List<User> userList = (List<User>)request.getAttribute("userList");
%>
<table border="1">
<tr>
<th>ID</th>
<th>이름</th>
<th>이메일</th>
</tr>
<%
for(User user : userList) { %>
<td><%=user.getId()%></td>
<td><%=user.getUsername()%></td>
<td><%=user.getPassword()%></td>
<%} %>
</table>
</body>
</html>
<%@page import="java.util.List"%>
<%@page import="com.tenco.mdels.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>USERLIST PAGE</h1>
<c:choose>
<c:when test="${not empty userList}">
<table border="1">
<tr>
<th>ID</th>
<th>이름</th>
<th>이메일</th>
</tr>
<c:forEach var="user" items="${userList}" >
<tr>
<td><c:out value="${user.id}"/> </td>
<td><c:out value="${user.username}"/> </td>
<td><c:out value="${user.email}"/> </td>
</tr>
</c:forEach>
</table>
</c:when>
<c:otherwise>
<p>등록된 사용자가 없습니다.</p>
</c:otherwise>
</c:choose>
</body>
</html>
'Java > JSP' 카테고리의 다른 글
JSP와 MVC 패턴 Todo 프로젝트 (5) | 2024.07.15 |
---|---|
서블릿과 JSP의 개념과 차이점 (0) | 2024.07.15 |
쿠키와 세션 관리 (0) | 2024.07.15 |
폼 처리와 요청 방식 (0) | 2024.07.15 |
JSP 내장 객체란 뭘까? (0) | 2024.07.15 |




https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api/3.0.0
https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl/3.0.0
https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/overview-summary.html
Overview (TLDDoc Generated Documentation)
FRAMES NO FRAMES All Tags
docs.oracle.com
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 예제</title>
</head>
<body>
<h1>JSTL 예제</h1>
<% // 스크립트 릿 대신에 <c:set....> 태그를 사용할 수 있다. %>
<c:set var="message" value="JSTL ~~~ "/>
<p>메시지 : </p><c:out value="${message}" />
<!-- IF -->
<c:if test="${message != null}">
<p>메시지 값이 null 아닙니다</p>
</c:if>
<!-- foreach -->
<c:forEach var="i" begin="1" end="10" >
<p>Number : ${i}</p>
</c:forEach>
<h2>JSTL Formatting Example</h2>
<c:set var="now" value="<%=new Date() %>"/>
<fmt:formatDate var="formattedDate" value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
<p>현재 시간 : ${formattedDate} </p>
<c:set var="price" value="12345.678"/>
<fmt:formatNumber value="${price}" type="currency" var="formatPrice" />
<p>Format Price : ${formatPrice} </p>
</body>
</html>
User 클래스 생성(DTO)
package com.tenco.mdels;
import lombok.Data;
@Data
public class User {
private int id;
private String username;
private String password;
private String email;
}
UserDAOImpl 생성
package com.tenco.repository;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.cj.protocol.Resultset;
import com.tenco.mdels.User;
/**
* 인터페이스 설계 생략..
*/
public class UserDAOImpl {
private static final String URL = "jdbc:mysql://localhost:3306/demo3?serverTimezone=Asia/Seoul";
private static final String USER = "root";
private static final String PASSWORD = "asd123";
public UserDAOImpl() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
public List<User> getAUsers() {
List<User> list = new ArrayList<>();
String sql = " SELECT * FROM users " ;
try(Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setEmail(rs.getString("email"));
list.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}

package com.tenco.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import com.tenco.mdels.User;
import com.tenco.repository.UserDAOImpl;
@WebServlet("/user/*")
public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAOImpl userDAOImpl;
public UserController() {
userDAOImpl = new UserDAOImpl();
}
// http://localhost:8080/jstl/user/list?id=123&name=길동
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 전체 URL 를 문자를 반환 할려면
String fullURL = request.getRequestURL().toString();
System.out.println("fullURL : " + fullURL);
// URL의 쿼리 문자열을 반환 합니다.(쿼리 문자열이 없으면 null 을 반환)
String queryString = request.getQueryString();
System.out.println("queryString : " + queryString);
// 컨텍스트 루트 경로를 반환 받고 싶다면
String contextPath = request.getContextPath();
System.out.println("contextPath : " + contextPath);
// URL 마지막 경로(엔드포인트)를 반환 받고 싶다면
String pathInfo = request.getPathInfo();
System.out.println("pathInfo : " + pathInfo);
switch (pathInfo) {
case "/list":
userListPage(request, response);
break;
default:
break;
}
}
private void userListPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User> userList = userDAOImpl.getAUsers();
request.setAttribute("userList", userList);
request.getRequestDispatcher("/WEB-INF/user/userList.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<%@page import="java.util.List"%>
<%@page import="com.tenco.mdels.User"%>
<%@ 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>
</head>
<body>
<h1>USERLIST PAGE</h1>
<%
List<User> userList = (List<User>)request.getAttribute("userList");
%>
<table border="1">
<tr>
<th>ID</th>
<th>이름</th>
<th>이메일</th>
</tr>
<%
for(User user : userList) { %>
<td><%=user.getId()%></td>
<td><%=user.getUsername()%></td>
<td><%=user.getPassword()%></td>
<%} %>
</table>
</body>
</html>
<%@page import="java.util.List"%>
<%@page import="com.tenco.mdels.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>USERLIST PAGE</h1>
<c:choose>
<c:when test="${not empty userList}">
<table border="1">
<tr>
<th>ID</th>
<th>이름</th>
<th>이메일</th>
</tr>
<c:forEach var="user" items="${userList}" >
<tr>
<td><c:out value="${user.id}"/> </td>
<td><c:out value="${user.username}"/> </td>
<td><c:out value="${user.email}"/> </td>
</tr>
</c:forEach>
</table>
</c:when>
<c:otherwise>
<p>등록된 사용자가 없습니다.</p>
</c:otherwise>
</c:choose>
</body>
</html>
'Java > JSP' 카테고리의 다른 글
JSP와 MVC 패턴 Todo 프로젝트 (5) | 2024.07.15 |
---|---|
서블릿과 JSP의 개념과 차이점 (0) | 2024.07.15 |
쿠키와 세션 관리 (0) | 2024.07.15 |
폼 처리와 요청 방식 (0) | 2024.07.15 |
JSP 내장 객체란 뭘까? (0) | 2024.07.15 |