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 |