JSP - 2
.jsp 페이지 내부에서 모든 로직을 작성
유지보수에 불리한 방법
로직을 JAVA Bean 클래스로 생성
.jsp 페이지 내부에서 Bean 클래스의 객체를 인스턴스화(new)하여 사용
<%-- <jsp:useBean id=""></jsp:useBean>--%>
유지보수에 유리한 방법
실습때 사용한방법
제어문자
:띄어쓰기 할 수 있음
html에서는 띄어쓰기를 여러개 하고있는데
하나밖에 인식하지 못함
>ㅅ<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>