상태유지

값 보관

HashMap 형태로 보관할 수 있다.

보관장소

  • pageContext

  • request(주로 사용)
    model2

  • session(주로 사용)
    로그인검사에 사용
    쇼핑몰 장바구니(임시 저자)
    invalidate - 세션 파기
    => 세션과 비교되는 저장소 - cookie ( 세션과 비교가능해야한다 )

  • application

저장방법

setAttribute

저장한 값 가져오기

getAttribute

지우기

removeAttribute



회원관리 흐름 (DFD - 기능)

=> 벤치마킹을 통해 찾아보기

로그인 전
		회원가입
        		아이디 중복검사
                회원가입 인증(sms / email)              
        로그인
        		자체 로그인
                			DB검사 후 로그인
                        	아이디 / 비밀번호 찾기
                소셜 로그인
                			구글 / 카카오 등을 이용한 로그인
                            
로그인 후(session / cookie 정보조회)
		로그아웃
        회원정보
        		회원정보 수정
                비밀번호 변경
                			주기 변경 유도
        회원탈퇴
        
        관리자 기능(보안을 위해 포트 변경)
        		특정 로그인 아이디 / 비밀번호 
        		
게시판
회원관리



view page 변화

java + html 방식을
=> el + jstl + html 방식으로 자바를 모르는사람에게 쉽게 접근할 수 있게 함

el

expression language
expression => <%=out.println()
상태 저장소 ... pageContext / request / session
서버의 상태 ... param / header

jstl

jstl <= custom tag lib 표준

사용하기 487p
1. 라이브러리 가져와야함
2. taglilb 디렉티브 사용

core의 기능 489 ~ 498P 까지 훑어보기



jstl 해보기

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;
	}
	
	
}

jstl03.jsp 파일 생성 후

<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>



제어흐름 - 조건 493P

jstl04.jsp

<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>


jstl05.jsp

<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일때



494P 예제 해보기

<%@ 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 : 반복 실행 횟수의 증감값 지정

jstl06.jsp

<%@ 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>



구구단 해보기

테이블 형태로 구구단 출력하기

gugudan.jsp

<%@ 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>&nbsp;</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>



배열 데이터 처리 / HashMap 데이터 처리

<%@ 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>



sendredirect - 검색

<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>



URL

<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>



import

<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>



import를 통해 영화 정보 페이지 소스 불러오기

영화진흥위원해 오픈 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>



taglib를 통한 DB 연결처리

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>

데이터베이스에 들어간 것을 볼 수 있음.



select 만들기

<%@ 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>



dept2 테이블의 특정 번호 데이터 출력

밑의 코드처럼 실행하면 특정 번호 데이터 출력이 가능

<s:query var="rs" dataSource="jdbc/mariadb1" >
	select deptno , dname , loc  from dept2 where deptno=?
	<s:param value="10" />
</s:query>



s로 시작하는 사원들의 정보 출력하기

<%@ 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>



el, jstl로 우편번호 검색기 만들기

내가한 것(수정 하기)

zipcode.jsp

<%@ 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>

zipcode_ok.jsp

<%@ 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>



zipcode2.jsp

<%@ 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 파일도 넣고 -> 아까만든 우편번호 검색기 파일 가져와서 실행되는지 보고 실행되면 정상

완성

profile
개발자 꿈나무

0개의 댓글