프론트

JSP - 2

hyun9_9 2024. 1. 5. 22:31

.jsp 페이지 내부에서 모든 로직을 작성
유지보수에 불리한 방법


로직을 JAVA Bean 클래스로 생성

.jsp 페이지 내부에서 Bean 클래스의 객체를 인스턴스화(new)하여 사용
<%-- <jsp:useBean id=""></jsp:useBean>--%>
유지보수에 유리한 방법
실습때 사용한방법

제어문자
&nbsp; :띄어쓰기 할 수 있음
html에서는 띄어쓰기를 여러개 하고있는데 
하나밖에 인식하지 못함
&gt;ㅅ&lt;bb

 

 

가장 처음 사용하던 방식
기능을 수행하는 로직을 Servlet클래스에 작성하고,
action속성에 그 Servlet 경로를 작성하는 방식
+) 서블릿에 직접 로직이 작성x
로직이 모듈화된 클래스를 서블릿에서 호춣하여 사용 O

★ .jsp 파일이 컴파일 되면 Servlet .java가 된다!!!

서블릿은 클래스의 한 종류이며,
not POJO 이다
필더,리스너,서블릿

스크립트릿 사용법★

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트릿 사용</title>
</head>
<body>

<%
//스크립트릿
//JAVA 코드 공간
for(int i=1;i<=5;i++){
	out.println(i+"<br>");
}
%>

<hr>

<%
	for(int i=1;i<=5;i++){
		%>
		<%=i %>
		<br>
		
		
		<%
	}

%>


</body>
</html>

 

 

 


에러페이지 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  errorPage="error/error.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러가 발생할 수 있는 코드를 작성</title>
</head>
<body>
<%
String str="apple";
int num=Integer.parseInt(str);
//에러의 유무보다는,
//에러가 발생했을때에 사용자에게 서비스가 끊기지 않도록 안내하는 것이 중요!!
%>

</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러 페이지</title>
</head>
<body>
<h1>현재 에러가 밠갱했습니다</h1>
<h2>빠르게 수정하겠습니다</h2>
<a href="https://www.naver.com/">메인으로 이동하기</a>

</body>
</html>

 

 

out
request
response
session
application
.
.
.
JSP 내장객체
.jsp 가 컴파일 되면 Srevlert 클래스 파일이 되는데 이때 제공되는 객체들을 "JSP내장객체라고 한다

사용자에게 화면을 제공하는 용도로 사용하는 객체
:out ,response

사용자가 입력한 값을 저장하는 용도로 사용하는 객체
:request,session,application
>>scope(유효범위)가 다름!

request
요청 단위
새로운 요청을 하면 기존 request정보가 사라짐

session ☆ 세션으로 로그인 정보 넣어라
브라우저 단위 /시간 단위
창을 닫으면 기존 session정보가 사라짐
일정 시간이 흐르면 기존 session 정보가 사라짐

application
서버 단위
서버를 꺼야(톰캣을 종료해야) application 정도가 사라짐


[session]
session.getAttribute("userName")으로 값을 받아올수있음


[application]
Object 단위로 데이터를 저장할 수 있음
캐스팅(형변환)이슈를 잘 확인해야함!

 

 

 

[session]

ex1)

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 내장객체 : session</title>
</head>
<body>

	<%
	if (session.isNew()) {
		out.println("<script>alert('세션을 새로 만듦!')</script>");
		session.setAttribute("userName", "작은 티모");
		//기본 제공 시간 30분 (아마)
	}
	%>

	<%-- 이상한 값을 넣어도 null이 나온다 에러 x --%>
	<h1><%=session.getAttribute("userName")%>님, 안녕하세요! :D
	</h1>

</body>
</html>

 

 

[application]

ex1)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 내장객체  :application</title>
</head>
<body>
<%
application.setAttribute("count", 0);

//어플리케이션은 서버 단위라 세션을 껏다 켜도 유지가 된다


%>


	<a href="test08.jsp">방문자 수 확인하기</a>

</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>
<%
//방문자 수를 +1 시키는 로직

//application 오브젝트 (객체단위로 저장)
Integer count=(Integer)application.getAttribute("count");
count++;
application.setAttribute("count", count);

%>

<h1>방문자수 : <%=application.getAttribute("count") %>명</h1>

</body>
</html>

 

 

[문제1 ]

로그인 정보를세션에 저장하고 장바구니도 세션에 저장하는 구매로직

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쇼핑몰 예제 01</title>
</head>
<body>

<h1>로그인 페이지</h1>
<form action="test10.jsp" method="post">
	ID<input type="text" name="mid" placeholder="ID를 입력하세요." required > 
	<input type="submit" value="로그인">


</form>



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

<%
	String mid =request.getParameter("mid");
	session.setAttribute("mid", mid);
%>

<h1>상품 목록</h1>
<hr>
<%=session.getAttribute("mid")%>님 안녕하세요
<hr>
<form action="test12.jsp" method="post">
	<select name="product">
		<option>탕후루</option>
		<option>붕어빵</option>
		<option>민트초코</option>
		<option>마라탕</option>
		<option>바나나</option>
	</select>
	
	<input type="submit" value="구매">
	

</form>
<hr>
<a href="test11.jsp" >최종 결제하기</a>


</body>
</html>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결제 페이지</title>
</head>
<body>

<h1>결제 페이지</h1>

<%
ArrayList<String> cart = (ArrayList<String>) session.getAttribute("cart");
if (cart == null) {
	out.println("결제랗 상품이 없습니다");
	//상품 구매 페이지로 이동
} else {

	for (String data : cart) {
		out.println(data + "<br>");
	}
}

%>




</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.ArrayList" %>
    
    
    
    
    
    <% request.setCharacterEncoding("UTF-8"); %>
    
    
    
    
    
    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>장바구니에 상풍을 추가</title>
</head>
<body>
<%
	ArrayList<String> cart=(ArrayList<String>) session.getAttribute("cart");
	if(cart==null){//첫 구매라서 장바구니가 없었다면
		cart=new ArrayList<String>();
		session.setAttribute("cart", cart);
	}

	String product=request.getParameter("product");
	cart.add(product);

%>

<script type="text/javascript">
alert('<%=product %>이가 추가되었습니다');
history.go(-1);
//방문 목록중에 한다계 뒤로가기 해줄래

</script>


</body>
</html>