본문 바로가기
학습/JSP

23. 표현 언어(1)

by Elfen Lied 2022. 11. 17.
반응형

- 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/memberForm.jsp : action="member1.jsp"
- test01/member1.jsp
 
 
 
memberForm.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

댓글