Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

고마구의 개발 블로그

240628 10주차 금요일 - JSP 05 본문

KDT풀스택과정 공부

240628 10주차 금요일 - JSP 05

고마구 2024. 6. 28. 18:19

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>판매 물품 목록</title>
</head>
<body>



<form action="basket.do" method="get"> 
삼성 메모리카드 [40000원]  개수  : <input type="number" name="memory" min=0 max=99 value=0><br>
Asus 메인보드 [100000원]  개수  : <input type="number" name="board" min=0 max=99 value=0><br>
마이크론 파워 서플라이 [80000] 개수   : <input type="number" name="power" min=0 max=99 value=0> <br>
라이젠 CPU [150000] 개수  : <input type="number" name="cpu" min=0 max=99 value=0><br>
장바구니 쿠폰 : <input type="checkbox" name="bcoupon" value="0.07">7%<br>
전자제품 쿠폰(중복가능)    : <input type="checkbox" name="coupon" value="0.05">5% 
<input type="checkbox" name="coupon" value="0.1">10% 
<input type="checkbox" name="coupon" value="0.15">15% <br>
<input type="submit" value="장바구니에 담기"><input type="reset"
value="초기화"> 
</form>
</body>
</html>

 

- scope - (스코프)

java 변수는 전역 변수와 지역변수로 되어 있는데,

jsp같은 경우 서버 클라이언트와 같은 복잡한 구조여서

jsp에서는 특정 범위에서 데이터를 저장할 수 있는 4개의 객체를 제공한다.

사용자가 사용할 범위에 맞춰서 적절히 사용하면 된다.

- 페이지 스코프 : JSP 페이지 내에서만 유효한 스코프입니다.

- 변수를 선언하면 해당 페이지에서만 사용할 수 있습니다.

- 요청 스코프 : HTTP 요청 단위로 유효한 스코프입니다.

- 클라이언트가 서버에 요청을 보낼 때 생성되고, 응답을 받을 때까지 유지됩니다.

- 세션 스코프 : 웹 애플리케이션 사용자 세션 단위로 유효한 스코프입니다.

- 사용자가 로그인한 후 로그아웃할 때까지 유지됩니다.

- 애플리케이션 스코프 : 웹 애플리케이션 전체에 걸쳐 유효한 스코프입니다.

- 웹 애플리케이션이 시작되고 종료될 때까지 유지됩니다.

- page는 해당 page에서 만 접근 가능 하다.

현재 요청한 page1.jsp에서 사용하는 변수를 현재 요청한 page1.jsp에서만 사용할 수 있다.

- request인 경우 요청이 끝날때 까지 접근 가능하다.

현재 요청한 page1.jsp에서 사용하는 변수를 redirect인 경우 page2.jsp에서 사용할 수 없고,

forward 인경우 page2.jsp에서 사용할수 있다.

- session의 경우 page1.jsp이든 page2.jsp이든 관계 없이 같은 사용자라면 언제나 모든 페이지에서 접근 가능하다.

- application인 경우는 누구나 모든 페이지에서 접근 가능하다.

// scope종류

// 1. page 해당 페이지에서만 접근가능 : pageContext

pageContext.setAttribute("page1", "hello page");

// 2. request 요청이 종료할때 까지 값을 유지 : request

request.setAttribute("request1", "hello request");

// 3. session 같은 사용자일때만 값을 유지 : session

session.setAttribute("session1","hello session");

// 4. application 모든 사용자가 값을 유지 : application

application.setAttribute("application1", "hello application");

// 같은 jsp

<%

out.println((String)pageContext.getAttribute("page1"));

out.println((String)request.getAttribute("request1"));

out.println((String)session.getAttribute("session1"));

out.println((String)application.getAttribute("application1"));

%>

// 결과 : hello page, hello request, hello session, hello application,

// 다른 jsp

<%

out.println((String)pageContext.getAttribute("page1"));

out.println((String)request.getAttribute("request1"));

out.println((String)session.getAttribute("session1"));

out.println((String)application.getAttribute("application1"));

%>

// 결과 : null null hello session, hello application,

 

 

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String uri = request.getRequestURI(); 
String conPath = request.getContextPath(); 
String command = uri.substring(conPath.length()); 

String viewPage="";
if(command.equals("/basket.do")) {
int memory=Integer.parseInt(request.getParameter("memory"));
int board=Integer.parseInt(request.getParameter("board"));
int power=Integer.parseInt(request.getParameter("power"));
int cpu=Integer.parseInt(request.getParameter("cpu"));
String bcoupon=request.getParameter("bcoupon");
String[] coupons=request.getParameterValues("coupon");
double csum=0;

HttpSession products=request.getSession();
if(products.getAttribute("")!=null) {
int[] countArr = (int[])products.getAttribute("count");
countArr[0]+=memory;
if(countArr[1]!=board) {countArr[1]+=board;}
if(countArr[2]!=power) {countArr[2]+=power;}
if(countArr[3]!=cpu) {countArr[3]+=cpu;}
products.setAttribute("count",countArr);
}else{
products.setAttribute("count", new int[10]);
int[] countArr = (int[])products.getAttribute("count");

countArr[0]=memory; countArr[1]=board;
countArr[2]=power; countArr[3]=cpu;
products.setAttribute("count",countArr);
}
HttpSession couponrate=request.getSession();
products.setAttribute("rate", new double[10]);
double[] rateArr = (double[])products.getAttribute("rate");

if(coupons!=null) {
for(String coupon:coupons) {
csum+=Double.parseDouble(coupon);
rateArr[0]=csum;
}
}
if(bcoupon!=null) {
double b=Double.parseDouble(bcoupon);
csum+=b;
rateArr[1]=b;
}
rateArr[2]=csum;
products.setAttribute("rate",rateArr);

viewPage="basket2.jsp";
}else if(command.equals("/remove.do")) {
HttpSession couponrate=request.getSession();
couponrate.invalidate();
HttpSession products=request.getSession();
products.invalidate();
viewPage="shopping.jsp?alert=true";
}else if(command.equals("/shopping.do")) {
viewPage="shopping.jsp";
}
response.sendRedirect(viewPage);
}

 

 

 

 

 

 

 

 

 

 

 

 

<%@ 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>
<%
int[] countArr = (int[])session.getAttribute("count");
int totalmemory=(countArr[0]*40000);
if(countArr[0]!=0){
out.println("삼성 메모리카드 [40000원] <br>");
out.println(countArr[0]+"개 = "+totalmemory+"원");
out.println("<hr><br>");
}
%>
<%

int totalboard=(countArr[1]*40000);
if(countArr[1]!=0){
out.println("Asus 메인보드 [100000원]<br>");
out.println(countArr[1]+"개 = "+totalboard+"원");
out.println("<hr><br>");
}
%>
<%

int totalpower=(countArr[2]*40000);
if(countArr[2]!=0){
out.println("마이크론 파워 서플라이 [80000원]<br>");
out.println(countArr[2]+"개 = "+totalpower+"원");
out.println("<hr><br>");
}
%>

<%

int totalcpu=(countArr[3]*40000);
if(countArr[3]!=0){
out.println("라이젠 CPU [150000원] <br>");
out.println(countArr[3]+"개 = "+totalcpu+"원");
out.println("<hr><br>");
}
%>
<%
double total=0+totalmemory+totalboard+totalpower+totalcpu;
if(total==0){
out.println("선택한 상품이 없습니다.");
}else{
out.println("쿠폰 적용전 총 구매 금액 ");
out.println(Math.round(total)+"원 <br>");
out.println("쿠폰 할인율");
double[] rateArr = (double[])session.getAttribute("rate");
double bcoupon=rateArr[1];
double Ecoupon=rateArr[0];
double coupon=rateArr[3];
out.println("<br> 장바구니 쿠폰 "+Math.round(bcoupon*100)+"%");
out.println("<br> 전자제품 쿠폰 총"+Math.round(Ecoupon*100)+"%");
out.println("<br> 총 할인율"+Math.round(coupon*100)+"%<br>");
double ctotal=total*(1+coupon);
out.println("결제 금액은 "+Math.round(ctotal)+"원 입니다");
}
%>
<form action="shopping.do" method="get"> 
<input type="submit" value="장바구니 수정">
</form>

<form action="remove.do" method="get"> 
<input type="submit" value="쇼핑목록 삭제">
</form>

</body>

</html>

'KDT풀스택과정 공부' 카테고리의 다른 글

240701 11주차 월요일 - JDBC 01  (0) 2024.07.01
240629 10주차 토요일  (0) 2024.06.29
240627 10주차 목요일 - JSP 04  (0) 2024.06.27
240626 10주차 수요일 - JSP 03  (0) 2024.06.26
240625 10주차 화요일 - JSP 02  (0) 2024.06.25