JAVA
20.Web화면 재사용/EL/JSTL
네스이
2022. 8. 10. 17:17
2022.08.10.수
1.화면 재사용
-<%@ include file=""%> 방식
→정적 include : 포함된 후 변환
→jsp을 변환한 *.java file이 하나만 나옴
<%@ 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>main 페이지</h1>
<%@ include file="common/menu.jsp" %>
<hr>
내용<br>
내용<br>
내용<br>
내용<br>
내용<br>
<hr>
<%@ include file="common/copyright.jsp" %>
</body>
</html>
-<jsp:include page="" flush="true"> 방식
→동적 include : 요청 후 변환
→jsp을 변환한 *.java file이 include한 갯수만큼 나옴
<%@ 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>second 페이지</h1>
<jsp:include page="common/menu.jsp" flush="true" ></jsp:include>
<hr>
<jsp:include page="common/copyright.jsp" flush="true" /> <!-- body 없으면 끝 /로 닫을 수 있음 -->
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<a href="">로그인</a> <a href="">회원가입</a>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
copyright ~
2.EL(expression language)
-브라우저에 출력됨
1)${표현식}
2)${값}
3)${값 + 값} : 산술, 비교, 논리 연산가능
<%@ 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>EL 표기법</h1>
${10}<br>
${10 + 1}<br>
${10 - 1}<br>
${10 > 1}<br>
${10 < 1}<br>
${10 == 1}<br>
${10 != 1}<br>
${10 != 1 && 10 == 10}<br>
${10 != 1 || 10 == 10}<br>
</body>
</html>
4)${request key값} : key값에 해당되는 value get + 출력
package com.dto;
public class User
{
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
package com.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
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 com.dto.User;
@WebServlet("/TestController")
public class TestController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//request scope에 값 저장
//1.단일값
request.setAttribute("userid", "abc1234");
//2.DTO
User user = new User("홍길동", 20);
request.setAttribute("user", user);
//3.List
List<User> list = Arrays.asList(new User("홍길동1", 30), new User("홍길동2", 40));
request.setAttribute("user_list", list);
//jsp 위임 => forward
RequestDispatcher dispatch = request.getRequestDispatcher("test.jsp");
dispatch.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
package com.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
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 javax.servlet.http.HttpSession;
import com.dto.User;
@WebServlet("/TestController2")
public class TestController2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//session scope에 값 저장
HttpSession session = request.getSession();
//1.단일값
session.setAttribute("userid", "abc1234");
//2.DTO
User user = new User("홍길동", 20);
session.setAttribute("user", user);
//3.List
List<User> list = Arrays.asList(new User("홍길동1", 30), new User("홍길동2", 40));
session.setAttribute("user_list", list);
//jsp 위임 => forward
RequestDispatcher dispatch = request.getRequestDispatcher("test2.jsp");
dispatch.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
package com.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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 com.dto.User;
@WebServlet("/TestController3")
public class TestController3 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//application scope에 값 저장
ServletContext application = getServletContext();
//1.단일값
application.setAttribute("userid", "abc1234");
//2.DTO
User user = new User("홍길동", 20);
application.setAttribute("user", user);
//3.List
List<User> list = Arrays.asList(new User("홍길동1", 30), new User("홍길동2", 40));
application.setAttribute("user_list", list);
//jsp 위임 => forward
RequestDispatcher dispatch = request.getRequestDispatcher("test3.jsp");
dispatch.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
package com.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
import com.dto.User;
@WebServlet("/TestController4")
public class TestController4 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//3개 스코프에 동일한 키로 저장
HttpSession session = request.getSession();
ServletContext application = getServletContext();
//1.단일값
request.setAttribute("userid", "request");
session.setAttribute("userid", "session");
application.setAttribute("userid", "application");
//jsp 위임 => forward
RequestDispatcher dispatch = request.getRequestDispatcher("test4.jsp");
dispatch.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
<%@page import="java.util.List"%>
<%@page import="com.dto.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>1.이전방식</h1>
<%
//1.단일값
String userid2 = (String)request.getAttribute("userid");
String userid3 = (String)request.getAttribute("userid3");
//2.DTO
User user = (User)request.getAttribute("user");
String name = user.getName();
//3.List
List<User> list = (List<User>)request.getAttribute("user_list");
%>
<%= userid2 %><br>
<%= userid3 %><br> <!-- null 출력 -->
null판단:<%= userid3 == null %><br><br>
User 클래스 출력<br>
이름:<%=name %><br>
나이:<%=user.getAge() %><br><br>
List 출력<br>
<%
for(User x : list)
{
%>
<%=x.getName() %>
<%
}
%>
<br>
<h1>2.EL표기법</h1>
userid:${userid}<br>
userid3:${userid3}<br> <!-- null 출력안함 -->
null판단:${empty userid3}<br><br>
User 클래스 출력<br>
이름:${user.name}<br> <!-- toString으로 출력 -->
나이:${user.age}<br><br>
List 출력<br>
${user_list}<br>
${user_list[0]}<br>
${user_list[0].name}<br>
${user_list[0].age}<br>
</body>
</html>
<%@page import="java.util.List"%>
<%@page import="com.dto.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>1.이전방식</h1>
<%
//1.단일값
String userid2 = (String)session.getAttribute("userid");
String userid3 = (String)session.getAttribute("userid3");
//2.DTO
User user = (User)session.getAttribute("user");
String name = user.getName();
//3.List
List<User> list = (List<User>)session.getAttribute("user_list");
%>
<%= userid2 %><br>
<%= userid3 %><br> <!-- null 출력 -->
null판단:<%= userid3 == null %><br><br>
User 클래스 출력<br>
이름:<%=name %><br>
나이:<%=user.getAge() %><br><br>
List 출력<br>
<%
for(User x : list)
{
%>
<%=x.getName() %>
<%
}
%>
<br>
<h1>2.EL표기법</h1>
userid:${userid}<br>
userid3:${userid3}<br> <!-- null 출력안함 -->
null판단:${empty userid3}<br><br>
User 클래스 출력<br>
이름:${user.name}<br> <!-- toString으로 출력 -->
나이:${user.age}<br><br>
List 출력<br>
${user_list}<br>
${user_list[0]}<br>
${user_list[0].name}<br>
${user_list[0].age}<br>
</body>
</html>
<%@page import="java.util.List"%>
<%@page import="com.dto.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>1.이전방식</h1>
<%
//1.단일값
String userid2 = (String)application.getAttribute("userid");
String userid3 = (String)application.getAttribute("userid3");
//2.DTO
User user = (User)application.getAttribute("user");
String name = user.getName();
//3.List
List<User> list = (List<User>)application.getAttribute("user_list");
%>
<%= userid2 %><br>
<%= userid3 %><br> <!-- null 출력 -->
null판단:<%= userid3 == null %><br><br>
User 클래스 출력<br>
이름:<%=name %><br>
나이:<%=user.getAge() %><br><br>
List 출력<br>
<%
for(User x : list)
{
%>
<%=x.getName() %>
<%
}
%>
<br>
<h1>2.EL표기법</h1>
userid:${userid}<br>
userid3:${userid3}<br> <!-- null 출력안함 -->
null판단:${empty userid3}<br><br>
User 클래스 출력<br>
이름:${user.name}<br> <!-- toString으로 출력 -->
나이:${user.age}<br><br>
List 출력<br>
${user_list}<br>
${user_list[0]}<br>
${user_list[0].name}<br>
${user_list[0].age}<br>
</body>
</html>
<%@page import="com.dto.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>1.이전방식</h1>
<%
String userid1 = (String)request.getAttribute("userid");
String userid2 = (String)session.getAttribute("userid");
String userid3 = (String)application.getAttribute("userid");
%>
userid(request):<%= userid1 %><br>
userid(session):<%= userid2 %><br>
userid(application):<%= userid3 %><br>
<h1>2.EL표기법</h1>
<!-- 3개의 스코프에 키값이 같을 때 default : request -->
userid(request):${userid}<br>
userid(request):${requestScope.userid}<br>
userid(session):${sessionScope.userid}<br>
userid(application):${applicationScope.userid}<br>
</body>
</html>
3.JSTL(JSP Standard Tag Library)
package com.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;
@WebServlet("/TestController")
public class TestController extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//변수설정 및 값 출력
request.setAttribute("username", "홍길동");
//format 실습
request.setAttribute("price", 987654321);
//function 실습
request.setAttribute("str", "HeLlo");
request.setAttribute("str2", "981212-1234567");
request.setAttribute("str3", " 이순신 ");
request.setAttribute("str4", "aaa/bbb/ccc");
request.setAttribute("str5", "HelloWorld");
//jsp 위임
request.getRequestDispatcher("test.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
package com.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 com.dto.User;
@WebServlet("/TestController2")
public class TestController2 extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
request.setAttribute("username", "홍길동");
User user = new User("이순신", 40);
request.setAttribute("user", user);
//jsp 위임
request.getRequestDispatcher("test2.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
package com.controller;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
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 com.dto.User;
@WebServlet("/TestController3")
public class TestController3 extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
List<User> list =
Arrays.asList(new User("홍길동1",20),
new User("홍길동2",30),
new User("홍길동3",40),
new User("홍길동4",50),
new User("홍길동5",60),
new User("홍길동6",70));
request.setAttribute("user_list", list);
//jsp 위임
request.getRequestDispatcher("test3.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- prefix를 추가해야 사용 가능 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSTL 실습</h1>
이름:${username}<br>
<h2>1.변수사용</h2>
<!-- <c:set var="변수명" value="값"></c:set> -->
<c:set var="x" value="${username}" />
이름:${x}<br>
<h2>2.값 출력</h2>
이름:<c:out value="${username}" /><br>
<h2>3.format 출력</h2>
가격1:${price}<br>
가격2:<fmt:formatNumber value="${price}" type="currency" /><br>
<h2>4.function 실습</h2>
문자열값:${str}<br>
문자열길이:${fn:length(str)}<br>
대문자:${fn:toUpperCase(str)}<br>
소문자:${fn:toLowerCase(str)}<br>
<h2>4.function 실습2</h2>
문자열값:${str2}<br>
부분열:${fn:substring(str2, 0, 6)}<br>
문자열값:${str3}<br>
공백제거:${fn:trim(str3)}<br>
문자열값:${str4}<br>
split:${fn:split(str4, "/")[0]}<br>
split:${fn:split(str4, "/")[1]}<br>
split:${fn:split(str4, "/")[2]}<br>
문자열값:${str5}<br>
replace:${fn:replace(str5, "o", "*")}<br>
문자열포함여부:${fn:contains(str5, "Hello")}<br>
문자열포함여부:${fn:contains(str5, "Hello2")}<br>
<c:set var="s1" value='${fn:split(str4, "/")}' />
join:${fn:join(s1, ";")}<br>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- prefix를 추가해야 사용 가능 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSTL 실습</h1>
<h2>1.조건문(단일 if문)</h2>
원본문자열:${username}
<c:if test="${username == '홍길동'}"><br>
홍길동 입니다.
</c:if>
<c:if test="${username != '홍길동2'}"><br>
홍길동 아닙니다.
</c:if>
<c:if test="${user.name == '이순신'}"><br>
이순신 입니다.
</c:if>
<h2>2.조건문(다중 if문)</h2>
<c:choose>
<c:when test="${user.age > 80}">
노년입니다.
</c:when>
<c:when test="${user.age > 60}">
장년입니다.
</c:when>
<c:when test="${user.age > 40}">
청년입니다.
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- prefix를 추가해야 사용 가능 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSTL 실습</h1>
<h2>1.반복문</h2>
<c:forEach begin="1" end="5">
Hello<br>
</c:forEach>
<c:forEach var="x" begin="1" end="5">
${x}:Hello<br>
</c:forEach>
<br>
<h2>2.List 반복문</h2>
<c:forEach var="user" items="${user_list}">
${user}, 이름:${user.name}, 나이:${user.age}<br>
</c:forEach>
<br>
<h2>3.List 반복문 + 반복index</h2>
<c:forEach var="user" items="${user_list}" varStatus="status">
${status.index}:${status.count}:${status.first}:${status.last}:${user.name}<br>
</c:forEach>
<br>
<h2>4.제어문중첩</h2>
<c:forEach var="user" items="${user_list}" varStatus="status">
<c:if test="${status.index % 2 == 0}">
${status.index}:${user}<br>
</c:if>
</c:forEach>
<br>
</body>
</html>