상태유지를 확인하기 위한 session
- 사용자의 현재 상태를 유지시키기 위하여 JSP가 제공하는 내장 객체
- 쿠키 방식과 달리 정보를 모두 저장하지 않고 id만을 웹 브라우저에 저장하고 서버측의 id와 브라우저의 id를 비교해 같은 값이면 서버측의 정보를 실행
- 예를 들어 진짜 로그인을 하고 있는지 판단하고 싶은 경우 사용
session 사용 법
- 사용하는 방법은 마치 map과 유사
- session 객체의 값을 담는 법
- setAttribute(key, value);
- session 객체에 담긴 값을 읽어 오는 법
- Object 변수명 = session.getAttribute(key);
반환을 오브젝트로 하기 때문에 변수에 담는 경우 해당 객체로 캐스팅이 필요하다.
로그인 기능 ( session )
- DB연동 체크 후 로그인 상태 유지해서 로그인 전용 페이지로 연결 하는 기능 구현
ㅇ 로그인 창 페이지(사용자가 아이디와 암호 입력) / login.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>
<form action="LoginOk.jsp" method="post">
아이디 <input type="text" name="id"><br>
비밀번호 <input type="password" name="pwd"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
ㅇ 로그인이 제대로 되었는지 확인하는 페이지 / LoginOk.jsp
<%@page import="com.db.MemberDao"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ 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 id = request.getParameter("id");
String pwd = request.getParameter("pwd");
MemberDao dao = new MemberDao();
String name = dao.isMember(id, pwd);
if(name != null)
{
session.setAttribute("member", "ok");
System.out.println(name);
%>
<jsp:forward page="main.jsp">
<jsp:param value="<%=name%>" name="name"/>
</jsp:forward>
<%
}
else
{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
ㅇ 로그인이 DB 받아 오기 위한 ConnectionProvider 클래스
package com.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConnectionProvider {
public static Connection getConnection()
{
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@203.236.209.94:1521:XE", "madang", "madang");
}catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
return conn;
}
public static void close(ResultSet rs, Statement stmt, Connection conn)
{
try {
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
}
ㅇ 로그인 정보와 DB 확인 하기 위한 DAO / MemberDao.jsp
package com.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class MemberDao {
public String isMember(String id, String pwd)
{
String name = null;
String sql = "select name from member where id=? and pwd=?";
try {
Connection conn = ConnectionProvider.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
ResultSet rs = pstmt.executeQuery();
if(rs.next())
{
name = rs.getString(1);
}
}catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
return name;
}
}
ㅇ 로그인 완료를 알려주는 페이지 / main.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 bgcolor="#E3E0EB">
<%
String re = (String)session.getAttribute("member");
if(re==null)
{
response.sendRedirect("login.jsp");
}
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
%>
<h2><%=name %> 회원님 환영합니다.</h2>
<hr>
<a href="service01.jsp">1번째 서비스</a><br>
<a href="service02.jsp">2번째 서비스</a><br>
<a href="service03.jsp">3번째 서비스</a><br>
</body>
</html>
ㅇ 로그인 섹션 확인 시 포함될 페이지 / sessionLogin.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>
<%
if(session.getAttribute("member")==null)
{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
ㅇ 로그인 해야 볼 수 있는 페이지/ 직접 session / service01.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 bgcolor="C8EBFA">
<%
if(session.getAttribute("member")==null)
{
response.sendRedirect("login.jsp");
}
%>
<h2>1번째 서비스 입니다.</h2>
<hr>
<a href="service02.jsp">2번째 서비스</a><br>
<a href="service03.jsp">3번째 서비스</a><br>
</body>
</html>
ㅇ 로그인 해야 볼 수 있는 페이지 session /지시자include / service02.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 bgcolor="FBCFD0">
<%@include file="sessionLogin.jsp" %>
<h2>2번째 서비스 입니다.</h2>
<hr>
<a href="service01.jsp">1번째 서비스</a><br>
<a href="service03.jsp">3번째 서비스</a><br>
</body>
</html>
반응형
'Java | spring > JSP | MVC 패턴' 카테고리의 다른 글
JSP 서블릿 한글 세팅(한글 깨짐 해결 하기) (1) | 2019.05.18 |
---|---|
JSP filter 흐름제어( + 로그인 유지 ex ) (0) | 2019.05.18 |
JSP 문장 구성요소( 지시자, 스크립트릿, 표현식 등) (0) | 2019.05.18 |
JSP에서 중요한 get / post 방식 요청 (0) | 2019.05.18 |
JSP란 무엇인가? 서블릿은? (0) | 2019.05.18 |
댓글