본문 바로가기

IT&코딩/국비지원

Servlet - 4 (HttpSession)

728x90
반응형

■ 로그인 세션 예제

 

□ login.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인</h1>

<form action="HSession" method="get">
	아이디 <input type="text" name="id" required><br>
	암호 <input type="text" name="pw" required><br>
	<input type="submit" value="가자">
</form>

</body>
</html>

<!-- MVC2 input --- servlet --- output -->

 

□ HSession.java

 

package com.hsession.main;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;

@WebServlet("/HSession")
public class HSession extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public HSession() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
				
		PrintWriter out = response.getWriter();
//		
//		String id = request.getParameter("id");
//		String pw = request.getParameter("pw");
//		// ========================== 세션 test ==========================
//		HttpSession ses1 = null;
//		// 클래스명 객체명
//		
//		ses1 = request.getSession(); // getSession(true) : 세션이 있으면 세션 return
//											// 세션이 없으면 만들어 준다.
//		if(ses1.isNew())
//			out.print("세션 생성<br>");
//		
//		ses1.setAttribute("love1", new String("나 세션속성 하나"));
//		ses1.setAttribute("love2", new String("나 세션속성 둘"));
//		
//		String str1 = (String)ses1.getAttribute("love1");
//		out.print("세션속성내용 : " + str1 + "<br>");
//		out.print("세션 getId() : " + ses1.getId() + "<br>"); // 세션의 자체 아이디
//		out.print("세션 Interval : " + ses1.getMaxInactiveInterval() + "<br>");
//		// 세션 Interval : 1800(초)
//		
//		ses1.removeAttribute("love2");
//		ses1.invalidate();
//		
//		ses1 = request.getSession(false); // 세션있으면 return 세션 없으면 null
//		if(ses1 == null)
//			out.print("세션 없어!");
		
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	if(id.equals("babo") && pw.equals("ondal")) {
		
		HttpSession ses2 = request.getSession(); // 세션있으면 return 없으면 생성
		ses2.setAttribute("sid", id);
		ses2.setAttribute("spw", pw);
		RequestDispatcher rd1 = request.getRequestDispatcher("output.jsp");
		rd1.forward(request, response);
		
	} else {
		
		out.print("<script> alert('id pw 에러!');");
		out.print("history.back();");
		out.print("</script>");
		
	}
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

 

□ output.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>
	
	<%
		session = request.getSession();
		// 서블릿에서 만들어진 세션(ses2)을 jsp의 session 내장객체에 넣는 작업
		
		out.print("id = " + session.getAttribute("sid") + "<br>");
		out.print("pw = " + session.getAttribute("spw") + "<br>");
	%>

</body>
</html>

 

 


 

■ 장바구니 세션 예제

 

index.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>신상 목록</title>

</head>
<body><!-- index.jsp -->
<h1>신상목록</h1>

<form action="Cartro" method="post">
	<input type="radio" name="sang" value="phone">phone<br>
	<input type="radio" name="sang" value="bag">bag<br>
	<input type="radio" name="sang" value="shirt">shirt<br>
	<input type="radio" name="sang" value="shoes">shoes<br>
	<input type="submit" value="장바구니로">
</form>

</body>
</html>

 

□ Cartro.java

 

package com.hsession.main;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;

/**
 * Servlet implementation class Cartro
 */
@WebServlet("/Cartro")
public class Cartro extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Cartro() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		// 입력 파라미터 얻기
		String sang = request.getParameter("sang");
		
		// 지금이 서블릿이므로 서블릿=세션으로 작성
		
		// 세션객체 얻기
		HttpSession ses1 = request.getSession();
		
		ArrayList<String> alist1 = (ArrayList<String>)ses1.getAttribute("sessang");
		// 세션꺼내 컬렉션으로
		
		if(alist1 == null) { // 처음 장바구니라면
			alist1 = new ArrayList<String>();
			alist1.add(sang);
			// 세션 안의 속성창들은 여기서 만들어진다.
			ses1.setAttribute("sessang", alist1); // 넣기
		} else {
			alist1.add(sang);
		}
		
		// 세션 결과(장바구니 결과) 출력을 위해 .jsp 파일 output2.jsp로 출발
		RequestDispatcher rd1 = request.getRequestDispatcher("output2.jsp");
		rd1.forward(request, response);
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

 

□ output2.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>
	<%
		session = request.getSession();
		out.print("장바구니 보기" + "<br>");
		out.print(session.getAttribute("sessang") + "<br>");
		out.print("<a href='index.jsp'>[신상 담으러 가기]</a>" + "<br>");
		out.print("<a href='Carempty'>[장바구니 비우러 가기]</a>" + "<br>");
		out.print("<a href='Kooip'>[결제하러 가기]</a>" + "<br>");
		// sessang에 들어가는 형식은 컬렉션이므로
		// [0]호에 구두, [1]호에 셔츠, ....
	%>

</body>
</html>

 

□ Carempty.java

 

package com.hsession.main;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.servlet.http.HttpSession;


@WebServlet("/Carempty")
public class Carempty extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Carempty() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		HttpSession ses1 = request.getSession(false);
		if(ses1 != null)
			ses1.invalidate();
		else
			out.print("error<br>");
		
		out.print("<h2>장바구니를 비웠습니다</h2>" + "<br>");
		out.print("<a href='index.jsp'>[신상 담으러 가기]</a>" + "<br>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}
728x90
반응형

'IT&코딩 > 국비지원' 카테고리의 다른 글

스프링 - 1  (0) 2023.06.20
Servlet - 5 (파일업로드)  (0) 2023.06.13
Servlet - 3 (MVC_board)  (0) 2023.06.02
Servlet - 2 (frontcontroller)  (0) 2023.06.02
Servlet - 1 (설명, no_frontcontroller)  (0) 2023.05.29