1월 23일 Ajax04, ELtag, CoreTag, JSPtag

2020. 6. 13. 02:15프론트엔드 & 백엔드 개발자 과정/jsp

<< Ajax4 index >>

<%@ 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>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>

<p id="demo"></p>
<br>
<button type="button">click</button>

<script type="text/javascript">
$(document).ready(function () {
	
	$("button").click(function () {
		
		$.ajax({
			url:"./hello",
			type:"post",
			datatype:"json",
			data:"num=1",
			success:function( data ){
			//	alert("success");
			//	alert(data[0].number);
			//	alert(data[0].name);
			
				$.each(data, function (i, val) {
					$("#demo").append("i:" + i + " number:" + val.number + " name:" + val.name + "<br>");
				})
			},
			error:function(){
				alert("error");
			}
		});		
	});
});
</script>

</body>
</html>

< CustUserDto.java >

package dto;
import java.io.Serializable;

public class CustUserDto implements Serializable{

	private int number;
	private String name;
	
	public CustUserDto() {
		super();
	}

	public CustUserDto(int number, String name) {
		super();
		this.number = number;
		this.name = name;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "CustUserDto [number=" + number + ", name=" + name + "]";
	}
}

< HelloServlet.java >

package serv;

import java.io.IOException;
import java.util.ArrayList;
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.google.gson.Gson;

import dto.CustUserDto;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		List<CustUserDto> list = new ArrayList<CustUserDto>();
		list.add(new CustUserDto(1001, "정수동"));
		list.add(new CustUserDto(1002, "성춘향"));
		
		resp.setContentType("application/json"); 	// 형식을 json으로 변환
		resp.setCharacterEncoding("utf-8"); 		// 한글을 정상으로 출력
		
		// gson-2.8.5.jar 추가
		String gson = new Gson().toJson(list); // Google jSon
		
		// 리턴해 주는 함수
		resp.getWriter().write(gson);
	}

}

<< ELtag index >>

<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="dto.MemberDto"%>
<%@ 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 : html, JavaScript, CSS, Java
	
	<%! 선언부(class, function, variable(global)) %>
	<%  코드부    %>
	<%= value %>
	: front end에서 Java를 사용하지 않기 위해서
	
	----------------
	EL tag -> value		<-- Java
	Core tag -> 제어문
	----------------
	jsp tag
	
	Expression Language
	표현			언어
	
	JSTL(Java server page Standard Tag Language)
 --%>
 
<%
	String str = "hello";
	request.setAttribute("_str", str);	// request scope
%>

<%
	String s = (String)request.getAttribute("_str"); // object를 String으로 형변환
%>

<%
out.println("s = " + s);
%>
<br><br>

s = <%=s %>
<br><br>

s = ${ _str }	<!-- 위의 setAttribute의 object를 가져온 것이 아니라 문자열("_str")을 가져옴! -->
<br><br>	<!-- ELtag -->

<%='값' %>
<br>
${ '값' }	<!-- ELtag -->
<br>

<%=2 + 3 %>		<!-- 5 -->
<br>
${ 2 + 3 }		<!-- 5 -->

<br><br>

${ 3>2?100:200 }	<!-- 100 -->

<br><br>

<%
	request.setAttribute("data", "안녕하세요");
%>

${ data }

<br><br>

Object가 할당되어 있는지?
<br>

data = ${ empty data }	<!-- true/false -->	<!-- 비워져 있지? 않아 false나옴 -->
<br>
data = ${ not empty data }	<!-- 비워져 있지 않아 true -->
<br><br>

1 < 9 : ${ 1 < 9 }	<!-- 판별식 true/false --><!-- true -->
<br>
2 + 3 : ${ 2 + 3 }	<!-- 연산식 variable --><!-- 5 -->

<%
	Integer a, b;
	a = 10;
	b = 3;
	
	request.setAttribute("a", a);
	request.setAttribute("b", b);

	Boolean c;	// wrapper class
	c = false;
	
	request.setAttribute("c", c);
%>

<pre>

a:${ a }
b:${ b }
c:${ c }

a+b:${ a + b }

eq:${a eq b }	<!-- a와 b가 같냐? No! false-->
eq:${a == b }

ne:${a ne b }
ne:${a != b }	<!-- a와 b가 같지않냐? Yes! true-->

gt:${a gt b }
gt:${a > b }	<!-- true -->

lt:${a lt b }
lt:${a < b }	<!-- false -->

le:${a le b }	<!-- <= -->
ge:${a ge b }	<!-- >= -->

div:${a div b }		<!-- a / b -->
mod:${a mod b }		<!-- a % b -->

c:${ !c }		<!-- true -->

${a == 10 && !c }	<!-- true -->
</pre>

<br>

<%
MemberDto mem = new MemberDto();
mem.setMessage("Hello EL");

request.setAttribute("mem", mem);
%>

<%=mem.getMessage() %>
<br>
${ mem.message }		<!-- mem.getMessage() -->
<br><br>

<%
String array[] = { "hello", "world" };

request.setAttribute("array", array);
%>

<%=array[0] %>
<br>
${ array[0] }	<!-- hello -->
<br><br>

<%
	List<String> list = new ArrayList<>();
	list.add("world");
	list.add("el");
	
	request.setAttribute("list", list);
%>

<%=list.get(0) %>
<br>
${ list[0] }	<!-- world -->
<br><br>

<%
	List<MemberDto> memlist = new ArrayList<>();

	MemberDto m = new MemberDto();
	m.setMessage("첫번째 메시지");
	memlist.add(m);
	
	m = new MemberDto();
	m.setMessage("두번째 메시지");
	memlist.add(m);
	
	request.setAttribute("memlist", memlist);	
%>

<%=memlist.get(1).getMessage() %>	<!-- instance -->
<br>
${ memlist[1].message }		<!-- 문자열, "memlist" -->
<br><br>

<%
	HashMap<String, String> map = new HashMap<>();

	map.put("apple", "사과");
	map.put("grape", "포도");
	
	request.setAttribute("map", map);
%>

<%=map.get("apple") %>	
<br>
${map.apple }	<!-- 사과 -->
<br>
${ map["apple"] }

</body>
</html>

< MemberDto >

package dto;

import javax.servlet.http.HttpServlet;

public class MemberDto extends HttpServlet {
	
	private String message;
	
	public MemberDto() {		
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

<< CoreTag index >>

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

<%--
		EL: 표현식(값, 판별)
		Core: 제어문(for, if) -> EL tag와 같이 사용한다
 --%>
 
<%
request.setAttribute("data", "JSTL입니다");	// set
%>
${ data }
<br>

<%--
String cdata = "core JSTL입니다";
request.setAttribute("cdata", cdata);
--%>				<%-- 아래와 동일 --%>
<!-- set -->
<c:set var="cdata" value="core JSTL입니다"/>
${ cdata }
<br><br>

<!-- out(내장객체) -->
<%--
out.println(cdata);
--%>
<%
session.setAttribute("sessionData", "저장된 데이터");
%>
<c:set var="sdate" value="${sessionData }"/>
<c:out value="${ sdate }"/>
<br><br>

<!-- if -->
<%
	request.setAttribute("count", "10");
%>
<%
String sCount = (String)request.getAttribute("count");
int count = Integer.parseInt(sCount);	/* 형변환 */
if(count >= 10){
	%>
	<p>count:<%=count %></p>
	<%
}
%>
								<!-- 위아래 완전 똑같음! -->
<c:if test="${count >= 10 }">
	<p>core count:<c:out value="${count }"/></p>
</c:if>

<br><br>

<%
	request.setAttribute("name", "졔졔졔");
%>

<c:if test="${ name eq '졔졔졔' }">	<!-- true -->
	<p>제 이름은 졔졔졔가 맞습니다</p>
</c:if>

<%
	request.setAttribute("name", "일지매");
%>

<c:if test="${name == '일지매' }" var="flg"/>		<!-- var에 true 들어감! -->

<c:if test="${flg }">	<!-- true -->
	<p>이름은 일지매입니다</p>
</c:if>

<br><br>

<!-- for -->
<%
for(int i = 0; i < 10; i++) {
	%>
	<%=i %>
	<%
}
%>
<br>				<!-- 위아래 똑같은 결과 -->
<c:forEach begin="0" end="9" step="1" varStatus="i">
	<c:out value="${ i.index }"></c:out>
</c:forEach>

<br><br>

<%
List<MemberDto> list = new ArrayList<>();

MemberDto mem = new MemberDto();
mem.setMessage("하이");
list.add(mem);

mem = new MemberDto();
mem.setMessage("안녕");
list.add(mem);

mem = new MemberDto();
mem.setMessage("건강혀");
list.add(mem);

request.setAttribute("list", list);
%>

<%--
for(int i = 0;i < list.size(); i++){
	MemberDto m = list.get(i);
}
for(MemberDto m : list){	
}
--%>

<c:forEach begin="0" end="2" var="m" items="${list }" varStatus="i">
	<p>index:<c:out value="${ i.index }"/></p>
	<p>data:<c:out value="${ m.message }"></c:out>
</c:forEach>
<br><br>

<!-- Map -->
<%
	Map<String, String> map = new HashMap<>();

	map.put("passionfruit", "백향과");
	map.put("mangosteen", "망고스틴");
	map.put("mango", "망고");
	
	request.setAttribute("map", map);
%>
<c:forEach var="obj" items="${map }">
	key:<c:out value="${obj.key }"></c:out>
	value:<c:out value="${obj.value }"></c:out>
</c:forEach>

</body>
</html>

< MemberDto.java >

package dto;

import javax.servlet.http.HttpServlet;

public class MemberDto extends HttpServlet {
	
	private String message;
	
	public MemberDto() {		
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

<< JSPtag index >>

<%@page import="dto.MemberDto"%>
<%@ 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>

<%--
	forward(이동하기), include(불러오기) -> iframe
 --%>
<h3>index.jsp start</h3>

<jsp:include page="NewFile.jsp" flush="false"></jsp:include>

<h3>index.jsp end</h3>

<%-- <jsp:forward page="NewFile.jsp"></jsp:forward> --%>

<%--
EL, Core 에 없는 부분
MemberDto dto = new MemberDto();
 --%>
 
<%--
	MemberDto mem = new MemberDto();
	mem.setMessage("안녕하세요");
	String msg = mem.getMessage();
	
	request.setAttribute("mem", mem);
--%>

<jsp:useBean id="mem" class="dto.MemberDto"></jsp:useBean>
<jsp:setProperty property="message" name="mem" value="안녕하세요"/>
<jsp:getProperty property="message" name="mem"/>

message:${mem.message }
<br>


</body>
</html>

< NewFile.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>NewFile.jsp</h1>

</body>
</html>

< MemberDto >

package dto;

import javax.servlet.http.HttpServlet;

public class MemberDto extends HttpServlet {
	
	private String message;
	
	public MemberDto() {		
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
​