HashMap 형태로 보관할 수 있다.
pageContext
request(주로 사용)
model2
session(주로 사용)
로그인검사에 사용
쇼핑몰 장바구니(임시 저자)
invalidate - 세션 파기
=> 세션과 비교되는 저장소 - cookie ( 세션과 비교가능해야한다 )
application
setAttribute
getAttribute
removeAttribute
=> 벤치마킹을 통해 찾아보기
로그인 전
회원가입
아이디 중복검사
회원가입 인증(sms / email)
로그인
자체 로그인
DB검사 후 로그인
아이디 / 비밀번호 찾기
소셜 로그인
구글 / 카카오 등을 이용한 로그인
로그인 후(session / cookie 정보조회)
로그아웃
회원정보
회원정보 수정
비밀번호 변경
주기 변경 유도
회원탈퇴
관리자 기능(보안을 위해 포트 변경)
특정 로그인 아이디 / 비밀번호
게시판
회원관리
java + html 방식을
=> el + jstl + html 방식으로 자바를 모르는사람에게 쉽게 접근할 수 있게 함
expression language
expression => <%=out.println()
상태 저장소 ... pageContext / request / session
서버의 상태 ... param / header
jstl <= custom tag lib 표준
사용하기 487p
1. 라이브러리 가져와야함
2. taglilb 디렉티브 사용
core의 기능 489 ~ 498P 까지 훑어보기
JSTLEx01 프로젝트에 model1 패키지 생성 후 BoardTO 클래스 생성
package model1;
public class BoardTO {
private String subject;
private String writer;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
System.out.println("setSubject() 호출");
this.subject = subject;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
System.out.println("setWriter() 호출");
this.writer = writer;
}
}
<c:set> : JSP 페이지에서 사용하는 변수를 설정하는 태그
var : 변수의 이름 지정
value : 변수의 값 지정
scope : 정의하는 변수를 scope에 저장.
scope 속성값으로 request, session, application, page를 지정할 수 있으며 기본값은 page
target : setter 메서드를 호출할 자바 객체를 지정
property : 값을 변경할 자바 객체의 멤버변수 이름을 지정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- var : 변수이름 지정, value : 변수의 값 지정, scope : 영역 지정 / 인스턴스화 시켜준 느낌? -->
<c:set var="to" value="<%=new model1.BoardTO() %>" scope="page" />
<!-- target : setter메서드를 호출할 자바 객체를 지정 / property : 값을 변경할 자바 객체의 멤버변수 이름 지정
/ BoardTO로 가서 setter를 통하여 subject변수에 "제목", writer변수에 "작성자" 넣어줌 -->
<c:set target="${to}" property="subject" value="제목" />
<c:set target="${to}" property="writer" value="작성자" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
메서드에 접근하면서 sysout코드를 건들여서 출력이 됨.
jstl03.jsp파일의 body부분에서 코드 추가
<body>
<!-- 데이터 가져오기 -->
제목 : ${to.subject}<br>
작성자 : ${to.writer}<br>
</body>
<c:if> : if문장을 처리하기 위한 태그
test : 결과값이 true 또는 false가 되는 조건식을 지정
var : test속성의 결과값을 저장하는 변수이름 지정
scope : var에 지정한 변수를 scope에 저장
else는 없다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 단순조건 -->
시작<br>
<!-- test가 조건을 실행하는 부분 false면 실행하지 않음 -->
<c:if test="true">
무조건 실행<br>
</c:if>
<c:set var="country" value="korea" scope="page" />
<c:if test="${country == 'korea'}" >
대한민국 입니다.<br>
</c:if>
<!-- null 검사도 가능 -->
<c:if test="${country != null}" >
국가명 : <c:out value="${country}" /> <br>
</c:if>
끝<br>
</body>
</html>
<c:choose> : 여러 개의 조건식을 처리하고자 할때 사용하는 태그
여러 개의 조건들로 구성되어 있으며, 조건에 만족하는 문장 하나만 처리된다.
<c:when> : 자바 문법에서 switch ~ case 또는 if ~ else와 같은 기능을 하는 태그
<c:otherwise> : 자바 문법의 default 또는 else와 같은 기능을 하는 태그
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 단순조건 -->
시작<br>
<c:set var="country" value="korea" scope="page" />
<c:choose>
<c:when test="${country == 'korea'}" >
<c:out value="${country}" />는 더 춥다<br>
</c:when>
<c:otherwise>
안춥다<br>
</c:otherwise>
</c:choose>
끝<br>
</body>
</html>
true일때
false일때
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="num" value="${95}" />
점수 <c:out value="${num}" />은(는)
<c:if test="${num>60}" >
합격입니다.
</c:if>
<br>
점수 <c:out value="${num}"/>은(는)
<c:choose>
<c:when test="${num>=90}">A학점입니다.</c:when>
<c:when test="${num>=80}">B학점입니다.</c:when>
<c:when test="${num>=70}">C학점입니다.</c:when>
<c:when test="${num>=60}">D학점입니다.</c:when>
<c:otherwise>F학점입니다.</c:otherwise>
</c:choose>
<c:forEach> : 지정된 횟수만큼 명령문 반복 시행하는 태그 (for문)
items : 반복 실행할 데이터가 저장된 배열, Collection 객체를 지정.
지정된 데이터의 요소 수만큼 반복 실행.
var : items에 지정된 요소 수만큼 반복 실행될 때 각 요소가 저장되는 변수 이름 지정
begin : 반복 실행 횟수의 시작값 지정
end : 반복 실행 횟수의 끝값 지정
step : 반복 실행 횟수의 증감값 지정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 단순조건 -->
시작<br>
<!-- begin : 시작 end : 끝, step : 증가값 -->
<c:forEach var="i" begin="1" end="10" step="2" >
Hello JSTL : ${i}<br>
</c:forEach>
<br>
<c:forEach var="i" begin="1" end="3">
<c:forEach var="j" begin="1" end="3">
${i} : ${j}<br>
</c:forEach>
</c:forEach>
끝<br>
</body>
</html>
테이블 형태로 구구단 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table width="900" border="1">
<c:forEach var="row" begin="0" end="9">
<tr>
<c:forEach var="col" begin="0" end="9">
<c:choose>
<c:when test="${row == 0 && col == 0}">
<td> </td>
</c:when>
<c:when test="${row == 0}" >
<td> X ${col}</td>
</c:when>
<c:when test="${col == 0})" >
<td>${row} 단</td>
</c:when>
<c:otherwise>
<td>${row} X ${col} = ${row * col}</td>
</c:otherwise>
</c:choose>
</c:forEach>
<tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 데이터 선언 -->
<c:set var="intArr" value="<%=new int[]{1, 2, 3, 4, 5} %>" />
<!-- 배열의 인덱스를 통한 접근 -->
<c:out value="${ intArr[0] }" /> <br>
<c:out value="${ intArr[1] }" /> <br>
<hr>
<!-- 제어문을 써서 나타내보기 / 2부터 4까지만 추출 -->
<c:forEach var="data" items="${intArr}" begin="2" end="4">
<c:out value="${data}" /><br>
</c:forEach>
<hr>
<!-- varStatus : 순서번호값 -->
<c:forEach var="data" items="${intArr}" begin="2" end="4" varStatus="status">
${data} / ${status.index}<br>
</c:forEach>
<hr>
<!-- 문자열 배열로 처리 -->
<c:set var="strArr" value='<%=new String[]{"11", "22", "33", "44", "55"} %>' />
<c:forEach var="data" items="${strArr}">
${data}<br>
</c:forEach>
<hr>
<!-- HashMap에 데이터 넣고 처리 -->
<c:set var="hm1" value="<%=new java.util.HashMap() %>" />
<!-- property가 키 -->
<c:set target="${hm1}" property="name" value="홍길동" />
<c:set target="${hm1}" property="today" value="<%=new java.util.Date() %>" />
<c:forEach var="data" items="${hm1}">
${data.key} - ${data.value}<br>
</c:forEach>
</body>
</html>
<c:forTokens> : 문자열을 특정 문자로 구분하여 분리한 후 분리된 문자열만큼 명령분을 반복수행하는 태그.
items : 분리하고자 하는 문자열 지정
delims : 문자열을 분리할 때 구분자로 사용할 기호를 지정.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 데이터 구분자 지정 / 밑의 코드는 문자열 데이터를 ","로 구분하여 보여줌 -->
<c:forTokens var="token" items="1,2,3,4,5" delims=",">
${token}<br>
</c:forTokens>
<hr>
<c:forTokens var="token" items="홍길동,고길동,김길동" delims=",">
${token}<br>
</c:forTokens>
</body>
</html>
<c:redirect> : 현재 실행중인 페이지에서 다른 페이지로 이동할 때 사용하는 태그
url : 이동할 페이지의 경로 지정
<c:param> : 다른 페이지와 관련된 작업을 할 때 파라미터를 전달하는 태그
name : 변수의 이름 지정
value : 변수에 저장되는 값 지정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 실행시 바로 daum창 오픈 -->
<!--<c:redirect url="https://www.daum.net" />-->
<!-- 실행시 검색되면서 실행 -->
<c:redirect url="https://search.daum.net/search">
<c:param name="w" value="tot" />
<c:param name="q" value="카타르 월드컵" />
</c:redirect>
<c:url> : URL정보를 생성해주는 태그
value : URL정보를 지정
var : URL 정보를 저장할 변수를 지정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- url 찍기 / 문자열로 보이기 -->
<c:url var="url1" value="./list.do" />
${url1}<br>
<c:url var="url2" value="https://search.daum.net/search">
<c:param name="w" value="tot" />
<c:param name="q" value="카타르 월드컵" />
</c:url>
${url2}
<!-- url로 이동 -->
<c:redirect url="${url2}" /> -->
</body>
</html>
<c:import> : 특정 페이지의 처리 결과를 현재 페이지에 삽입하거나 변수에 저장하는 태그
url : 현재 페이지에 결과를 삽입할 페이지의 URL을 지정
var : url 속성에 지정한 페이지의 결과를 저장할 변수 지정
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
시작 <br>
<!-- jstl10.jsp로 간다. -->
<c:import url="./jstl10.jsp" /><br>
끝 <br>
페이지 원본소스 보기 하면 jstl10.jsp 소스가 들어가있는 것을 볼 수 있음.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 밑의 두 코드는 페이지 소스를 보여준다 -->
<!--<c:import var="htmlData" url="./jstl10.jsp" />-->
<c:import var="htmlData" url="https://m.daum.net" charEncoding="utf-8" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<textarea rows="50" cols="800">
${htmlData}
</textarea>
</body>
</html>
영화진흥위원해 오픈 API의 xml의 url
http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.xml?key=f5eef3421c602c6cb7ea224104795888&targetDt=20120101
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 밑의 두 코드는 페이지 소스를 보여준다 -->
<!--<c:import var="htmlData" url="./jstl10.jsp" />-->
<!--<c:import var="htmlData" url="https://m.daum.net" charEncoding="utf-8" />-->
<c:url var="url" value="http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.xml">
<c:param name="key" value="f5eef3421c602c6cb7ea224104795888" />
<c:param name="targetDt" value="20230506" />
</c:url>
<c:import var="htmlData" url="${url}" charEncoding="utf-8" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<textarea rows="50" cols="800">
${htmlData}
</textarea>
</body>
</html>
DB에서 dept테이블 복사한 테이블 만들어주기
create table dept2 as select * from dept where 1 != 1;
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<!-- 데이터베이스 연결에 관한 것 -->
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/sample"
driver="org.mariadb.jdbc.Driver"
user="root"
password="123456"
scope="page"/>
${ds}<br>
<%--
<s:update
var="result"
dataSource="${ds}"
sql="insert into dept2 values(10, '개발', '서울')" />
--%>
<%--
<s:update var="result" dataSource="${ds}">
insert into dept2 values(20, '연구부', '대전')
</s:update>
--%>
<s:update var="result" dataSource="${ds}">
insert into dept2 values(?,?,?)
<!-- param은 쿼리를 실행할때 조건이 있다면 조건에 대한 값을 넣어준다 -->
<s:param value="30" />
<s:param value="생산부" />
<s:param value="대전" />
</s:update>
${result}<br>
데이터베이스에 들어간 것을 볼 수 있음.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/sample"
driver="org.mariadb.jdbc.Driver"
user="root"
password="123456"
scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:query var="rs" dataSource="${ds}" >
select deptno, dname, loc from dept2
</s:query>
<table width="600" border="1">
<tr>
<!-- rs.columnNames는 getColumnNames()(컬럼명 반환)에 접근해서 가져오는 것 -->
<c:forEach var="columnName" items="${rs.columnNames}">
<td>${columnName}</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row["deptno"]}</td>
<td>${row["dname"]}</td>
<td>${row["loc"]}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/sample"
driver="org.mariadb.jdbc.Driver"
user="root"
password="123456"
scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:query var="rs" dataSource="${ds}" >
select deptno as 부서번호, dname as 부서명, loc as 부서위치 from dept2
</s:query>
<table width="600" border="1">
<tr>
<c:forEach var="columnName" items="${rs.columnNames}">
<td>${columnName}</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row["deptno"]}</td>
<td>${row["dname"]}</td>
<td>${row["loc"]}</td>
</tr>
</c:forEach>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row["부서번호"]}</td>
<td>${row["부서이름"]}</td>
<td>${row["부서위치"]}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
context.xml파일 META-INF에 넣기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<s:setDataSource
var="ds"
dataSource="jdbc/mariadb1"
scope="page" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:query var="rs" dataSource="${ds}" >
select deptno as 부서번호, dname as 부서명, loc as 부서위치 from dept2
</s:query>
<table width="600" border="1">
<tr>
<c:forEach var="columnName" items="${rs.columnNames}">
<td>${columnName}</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row["deptno"]}</td>
<td>${row["dname"]}</td>
<td>${row["loc"]}</td>
</tr>
</c:forEach>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row["부서번호"]}</td>
<td>${row["부서이름"]}</td>
<td>${row["부서위치"]}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
똑같이 잘 출력이 된다.
더 간단하게
연동부분 주석처리 하고
<%--
<s:setDataSource
var="ds"
dataSource="jdbc/mariadb1"
scope="page" />
--%>
이쪽에 dataSource 추가
<s:query var="rs" dataSource="jdbc/mariadb1" >
select deptno as 부서번호, dname as 부서명, loc as 부서위치 from dept2
</s:query>
밑의 코드처럼 실행하면 특정 번호 데이터 출력이 가능
<s:query var="rs" dataSource="jdbc/mariadb1" >
select deptno , dname , loc from dept2 where deptno=?
<s:param value="10" />
</s:query>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%--
<s:setDataSource
var="ds"
dataSource="jdbc/mariadb1"
scope="page" />
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:query var="rs" dataSource="jdbc/mariadb1" >
select empno, ename, job, sal from emp where ename like ?
<s:param value="s%" />
</s:query>
<table width="600" border="1">
<tr>
<c:forEach var="columnName" items="${rs.columnNames}">
<td>${columnName}</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.empno}</td>
<td>${row.ename}</td>
<td>${row.job}</td>
<td>${row.sal}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 자체적으로 사용할 함수, 메서드 -->
<%@ 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>
<c:set var="str1" value=" Hello JSTL,Hello JSTL " />
문자열의 길이 : ${ fn:length(str1) }<br><br>
문자열 추출 : ${ fn:substring(str1, 3, 6) }<br><br>
여백 제거 : ${ fn:length(str1) }<br><br>
여백 제거 : ${ fn:trim(str1) }<br><br>
여백 제거 : ${ fn:length( fn:trim(str1) ) }<br><br>
치환 : ${ fn:replace(str1, " ", "-") }<br><br>
검색 : ${ fn:indexOf(str1, "JS") }<br><br>
검색 : ${ fn:startsWith(str1, "He") }<br><br>
검색 : ${ fn:startsWith(str1, " ") }<br><br>
대소문자 : ${ fn:toUpperCase(str1) }<br><br>
대소문자 : ${ fn:toLowerCase(str1) }<br><br>
</body>
</html>
내가한 것(수정 하기)
<%@ 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>
<form action="zipcode_ok.jsp" method="post" >
우편번호 검색 <input type="text" name="dong" />
<input type="submit" value="검색" />
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
request.setCharacterEncoding("utf-8");
%>
<s:setDataSource
var="ds"
dataSource="jdbc/mariadb3"
scope="page" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
pageContext.setAttribute("dong", request.getParameter("dong"));
%>
<s:query var="rs" dataSource="${ds}" >
select zipcode, sido, gugun, dong, ri, bunji, seq from zipcode where dong like ?
<s:param value="${dong}%" />
</s:query>
<table width="800" border="1">
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.zipcode}</td>
<td>${row.sido}</td>
<td>${row.gugun}</td>
<td>${row.dong}</td>
<td>${row.ri}</td>
<td>${row.bunji}</td>
<td>${row.seq}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="zipcode2.jsp" method="post">
동이름 : <input type="text" name="dong" />
<input type="submit" value="검색" />
</form>
<br><hr><br>
<c:if test="${!empty(param.dong)}" >
<s:query var="rs" dataSource="jdbc/mariadb3">
select zipcode, sido, gugun, dong, ri, bunji, seq from zipcode where dong like ?
<s:param value='${param.dong}%' />
</s:query>
</c:if>
<table width="600" border="1">
<tr>
<c:forEach var="columnName" items="${rs.columnNames}">
<td>${columnName}</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.zipcode}</td>
<td>${row.sido}</td>
<td>${row.gugun}</td>
<td>${row.dong}</td>
<td>${row.ri}</td>
<td>${row.bunji}</td>
<td>${row.seq}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
1.Maven Project 직접 진행
2.Dynamic Web Project를 => Maven Project로 변경 (이 방법이 좋음)
WebAppEx01 다이나믹 프로젝트 생성 -> 마우스 오른쪽 클릭 -> Configure -> Convert to Maven Project -> Group id와 Artifact id 설정
webapp에 jstl.jsp 파일 생성
후에 태그 라이브러리 추가하기 위해 porm.xml에서 dependency태그 추가 -> https://mvnrepository.com/ 홈페이지 가서 JSTL 검색 후 세 번째꺼 클릭 -> 들어가서 1.2 버전 클릭 후 밑의 코드 porm.xml에 복사 붙이기
후 -> standard 검색 -> 두 번째꺼 들어가서 1.1.2 클릭 후 밑의 코드 porm.xml에 붙이기
후 -> mariadb 검색 -> 들어가서 3.1.4 클릭 후 밑의 코드 porm.xml에 복사 붙이기
이런식으로 넣어주면 된다.
이렇게 추가됨
그리고 -> context.xml 파일도 넣고 -> 아까만든 우편번호 검색기 파일 가져와서 실행되는지 보고 실행되면 정상
완성