- elTest.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>
불리언 : ${true}, ${false} <br>
널 : ${null} <br>
정수와 실수 : ${10}, ${11.2}, ${2 + 4} <br>
문자열 : ${"Hello"}, ${'hello'} <br> <!-- 큰따옴표("), 작은따옴표(') 둘다 가능 -->
<h1>표현언어 이스케이프</h1>
\${10 + 100}
<h1>연산</h1>
10+2 : ${10 + 2} <br>
9-2 : ${9 - 2} <br>
9*2 : ${9 * 2} <br>
10/8 : ${10 / 8} <br>
<h1>문자열 연산</h1>
<%-- ${'Hello' + ' World'} 안됨 --%>
<%-- ${"Hello" + " World"} 안됨 --%>
${"Hello" += " World"} <br>
<h1>숫자형 문자열의 계산</h1>
"10"+"2" : ${"10" + "2"}<br>
"10"+2 : ${"10" + 2}<br>
10+"2" : ${10 + "2"}<br>
<h1>null과의 연산</h1>
${null + 10} <br>
${null + "10"} <br>
<!-- 숫자, 숫자형 문자와 null 연상시 null값은 0으로 간주함 -->
</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>
<h2>산술 연산자</h2>
100/9 : ${100 / 9} <br>
100 div 9 : ${100 div 9} <br><br>
나머지 연산자 <br>
100%9 : ${100 % 9} <br>
100 mod 9 : ${100 mod 9} <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>
<h2>비교 연산자</h2>
${10 == 10} <br>
${10 eq 10} <br>
${'Hello' eq 'hello'} <br><br>
<h4>~와 같지 않다</h4>
${10 != 10} <br>
${10 ne 10} <br>
${'Hello' ne 'hello'} <br><br>
<h4>~보다 작다</h4>
${10 < 10} <br>
${10 lt 10} <br><br>
<h4>~보다 크다</h4>
${10 > 10} <br>
${10 gt 10} <br><br>
<h4>~보다 작거나 같다</h4>
${10 <= 10} <br>
${10 le 10} <br><br>
<h4>~보다 크거나 같다</h4>
${10 >= 10} <br>
${10 ge 10} <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>
<h2>논리 연산자</h2>
${true && true } <br>
${true and true } <br><br>
${true || false } <br>
${true or false } <br><br>
${!true } <br>
${not true } <br><br>
</body>
</html>
- empty 연산자
메이븐 저장소에서 jstl 다운로드
https://mvnrepository.com/
jstl 검색해서 가장 많이 조회된 버전을 찾아서 jar 파일 다운로드
elTest.jsp 파일 상단에 <%@ taglib.... 부분 추가해준다.
<%@ 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>
<%
/*
String hello = "Hello";
String str1 = null; // 널
String str2 = ""; // 빈문자
String str3 = " "; // 공백문자
*/
%>
<%--
<c:set var="hello" value="<%=hello %>" />
<c:set var="str1" value="<%=str1 %>" />
<c:set var="str2" value="<%=str2 %>" />
<c:set var="str3" value="<%=str3 %>" />
--%>
<c:set var="hello" value="Hello" />
<c:set var="str1" value="${null}" />
<c:set var="str2" value="" />
<c:set var="str3" value=" " />
</head>
<body>
<h2>empty 연산자</h2>
${hello } <br>
${str1} <br>
${str2} <br>
${str3} <br>
------------------------------ <br>
${empty hello } <br>
널 : ${empty str1} <br> <!-- null이면 true -->
빈문자 : ${empty str2} <br> <!-- 빈문자이면 true -->
공백문자 : ${empty str3} <br><br> <!-- 공백문자이면 false -->
<!-- hello값이 비어있지 않으면 -->
<!-- hello값이 null이 아니고 빈문자가 아니면-->
${not empty hello } <br>
</body>
</html>
- maven 사용
프로젝트에 우클릭해서 confiture
pom.xml 파일이 생기는데
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pro15</groupId>
<artifactId>pro15</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
</project>
<packagin>과 <bulid> 사이에 <dependencies> 추가 해서
메이븐 저장소에서 검색해 파일 다운이 아닌 아래쪽 코드를 복사해서 붙여넣는다
그리고 저장 하면 자동으로 빌드되고 기존 lib 폴더안에 jar 파일 넣을필요 없어짐
만약 maven -> update Project 눌렀는데 오류가 뜨면
아래쪽 체크박스 중 offline 밑에 Force Update 체크하고 OK 해본다
그래도 빨간줄이 생기거나 하면 그 코드를 지운뒤에 다시 돌려본다.
- param 내장객체
- test01/member1.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="member1.jsp" method="post"><br>
<input type="hidden" name="addr" value="대구광역시">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pwd"><br>
이름 : <input type="text" name="name"><br>
이메일 : <input type="text" name="email"><br>
<button>가입하기</button>
</form>
</body>
</html>
member1.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
*/
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
아이디 : <%=id %><br>
비밀번호 : <%=pwd %><br>
이름 : <%=name %><br>
이메일 : <%=email %><br>
--%>
아이디 : ${param.id }<br>
비밀번호 : ${param.pwd }<br>
이름 : ${param.name }<br>
이메일 : ${param.email }<br>
주소 : ${param.addr }
</body>
</html>
== 만약 한글이 깨지면 filter 파일 만들어서 매핑을 /*로 해줌 ==
다른거 그래도 두고 doFilter 안에 request.setCharacterEncoding("utf-8"); 추가하면 끝
package sec01.ex01;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
@WebFilter("/*")
public class EncoderFilter extends HttpFilter implements Filter {
`
`
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
`
`
}
- requestScope 내장객체
파일
- test01/memberForm.jsp : action="forward.jsp"
- test01/forward.jsp
- test02/member2.jsp
memberForm.jsp : action 부분을 forward.jsp로 변경해준다
`
`
<body>
<form action="forward.jsp" method="post"><br>
`
- forward.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("major", "영어영문");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:forward page="member2.jsp"></jsp:forward>
</body>
</html>
- pageContext 내장객체
login.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>
<c:set var="ctxPath" value="${pageContext.request.contextPath }" scope="page"/>
<!-- <a href="/pro15/member/memberJoin.jsp">회원가입 페이지</a> <br> -->
<!-- 컨텍스트 패스 구하기 -->
<%= request.getContextPath() %> <br>
${pageContext.request.contextPath }<br>
<%-- <a href="<%= request.getContextPath() %>/member/memberJoin.jsp">회원가입 페이지</a> <br> --%>
<%-- <a href="${pageContext.request.contextPath }/member/memberJoin.jsp">회원가입 페이지</a> <br> --%>
<a href="${ctxPath }/member/memberJoin.jsp">회원가입 페이지</a> <br>
</body>
</html>
c:set 설명
- value 에 있는 값을
- var에 이름으로 변수명처럼 쓸수 있다
- scope는 변수가 저장되는 범위 - page, request, session, application
- 기본은 page
memberJoin.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>
<h1>회원가입</h1>
${ctxPath }
</body>
</html>
회원가입 페이지 를 클릭해보자
scope를 page로 할경우
컨텍스트 패스가 표시되지 않음.
- 표현언어에서 빈 접근
- test01/memberForm.jsp : action="member3.jsp"
- test02/member3.jsp
member3.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>
<jsp:useBean id="member" class="sec01.ex01.MemberBean"/>
<jsp:setProperty property="*" name="member"/>
아이디 : ${member.id } <br> <!-- MemberBean의 getId() 호출 -->
비밀번호 : ${member.pwd } <br> <!-- MemberBean의 getPwd() 호출 -->
이름 : ${member.name } <br> <!-- MemberBean의 getName() 호출 -->
이메일 : ${member.email } <br> <!-- MemberBean의 getEmail() 호출 -->
</body>
</html>
- Collection 객체 사용
파일
- test01/memberForm.jsp : action="member4.jsp"
- test01/member4.jsp
member4.jsp 생성
<%@page import="java.util.ArrayList"%>
<%@page import="sec01.ex01.MemberBean"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean" />
<jsp:setProperty property="*" name="m1"/>
<jsp:useBean id="memberList" class="java.util.ArrayList"/>
<%
MemberBean m2 = new MemberBean();
m2.setId("son");
m2.setPwd("1234");
m2.setName("쏘니");
m2.setEmail("son@exam.com");
memberList.add(m1);
memberList.add(m2);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<h3>첫 번째 회원</h3>
아이디 : ${memberList[0].id}
비밀번호 : ${memberList[0].pwd}
이름 : ${memberList[0].name}
이메일 : ${memberList[0].email}
</div>
<div>
<h3>두 번째 회원</h3>
아이디 : ${memberList[1].id}
비밀번호 : ${memberList[1].pwd}
이름 : ${memberList[1].name}
이메일 : ${memberList[1].email}
</div>
</body>
</html>
memberForm.jsp에서 실행
가입을 해보면
- HashMap 사용
파일
- test01/memberForm.jsp : action="member5.jsp"
- test01/member5.jsp
member5.jsp 생성
<%@page import="sec01.ex01.MemberBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean" />
<jsp:setProperty property="*" name="m1"/>
<jsp:useBean id="memberList" class="java.util.ArrayList"/>
<jsp:useBean id="memberMap" class="java.util.HashMap"/>
<%
memberMap.put("id", "park");
memberMap.put("pwd", "1234");
memberMap.put("name", "박효신");
memberMap.put("email", "park@exam.com");
MemberBean m2 = new MemberBean();
m2.setId("son");
m2.setPwd("1234");
m2.setName("쏘니");
m2.setEmail("son@exam.com");
memberList.add(m1);
memberList.add(m2);
memberMap.put("list", memberList);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
아이디 : ${memberMap.id } <br>
비밀번호 : ${memberMap.pwd } <br>
이름 : ${memberMap.name } <br>
이메일 : ${memberMap.email } <br>
</div>
<br>
<div>
아이디 : ${memberMap.list[0].id } <br>
비밀번호 : ${memberMap.list[0].pwd } <br>
이름 : ${memberMap.list[0].name } <br>
이메일 : ${memberMap.list[0].email } <br>
</div>
<br>
<div>
아이디 : ${memberMap.list[1].id } <br>
비밀번호 : ${memberMap.list[1].pwd } <br>
이름 : ${memberMap.list[1].name } <br>
이메일 : ${memberMap.list[1].email } <br>
</div>
</body>
</html>
memberForm.jsp에서 action을 member5.jsp 로 변경 하고 실행함
- Has-A 관계 빈 사용
파일
- sec01.ex02.MemberBean.java
- sec01.ex02.Address.java
- test01/member6.jsp
member6.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="m1" class="sec01.ex02.MemberBean"/>
<jsp:setProperty property="id" name="m1" value="hey"/>
<jsp:setProperty property="pwd" name="m1" value="1234"/>
<jsp:setProperty property="name" name="m1" value="헤이맨"/>
<jsp:setProperty property="email" name="m1" value="heyman@exam.com"/>
<jsp:useBean id="addr" class="sec01.ex02.Address"/>
<jsp:setProperty property="city" name="addr" value="대구광역시"/>
<jsp:setProperty property="zipcode" name="addr" value="088766"/>
<jsp:setProperty property="address" name="m1" value="${addr }"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디 : ${m1.id } <br>
비밀번호 : ${m1.pwd } <br>
이름 : ${m1.name } <br>
이메일 : ${m1.email } <br>
주소 : ${m1.address.city } - ${m1.address.zipcode } <br>
</body>
</html>
'학습 > JSP' 카테고리의 다른 글
25. JSTL - Core 태그 라이브러리 사용(1) (0) | 2022.11.18 |
---|---|
24. 표현 언어(2) (0) | 2022.11.18 |
22. useBean, setProperty, getProperty 액션 태그 사용 (0) | 2022.11.17 |
21. JSP 스크립트 요소 기능 (0) | 2022.11.16 |
20. 디렉티브 태그 (0) | 2022.11.16 |
댓글