JSP

 

 

class DB

 

package config;

import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DB {

	public static Connection getConn(){
		
		DataSource ds =null;//javax.sql.DataSource
		Connection conn=null;
		try{
			//context.xml 파일을 분석하는 객체
			Context context = new InitialContext();
// context.xml 파일의 Resource 태그의 name 속성 검색	
// java:comp/env/리소스태그의name			
			ds=(DataSource)context.lookup("java:comp/env/jdbc/myoracle");
// 커넥션풀에서 커넥션을 리턴받음			
			conn=ds.getConnection(); 
		}catch(Exception e){
			e.printStackTrace();
		}
		return conn;
	}
	
	
}

 

class Member

package member;

public class Member {
	
	private String member;
	private String passwd;
	private String name;
	
	public String getMember() {
		return member;
	}
	public void setMember(String member) {
		this.member = member;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Member [member=" + member + ", passwd=" + passwd + ", name=" + name + "]";
	}
	
	
	
}

 

class MemberDAO

package member;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import config.DB;

public class MemberDAO {

	public String loginCheck(String userid, String passwd){
		String result=null;
		Connection conn=null;
		PreparedStatement pstmt =null;
		ResultSet rs=null;
		try{
			
			conn=DB.getConn();//DB 커넥션 리턴
			String sql=" select name from member2 where USERID=? and passwd=? ";
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1, userid);//1번 물음표
			pstmt.setString(2, passwd);//2번 물음표
			rs=pstmt.executeQuery();
			if(rs.next()){//로그인 성공하면 이름을 저장
				result=rs.getString("name");
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(rs!=null)rs.close();
			}catch(Exception e){
				e.printStackTrace();
			}
			
			try{
				if(pstmt!=null)pstmt.close();
			}catch(Exception e){
				e.printStackTrace();
			}
			
			try{
				if(conn!=null)conn.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return result;
	}
	
}

 

 

class LoginController

package member;

import java.io.IOException;
import java.net.URLEncoder;

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("/ch04_servlet/*")
public class LoginController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id=request.getParameter("id");
		String pass=request.getParameter("pass");
		
		//사용자가 요청한 url 정보
		//String url=request.getRequestURL().toString();
		String url=request.getRequestURI();
		//문자열.indexOf("검색어") 검색어의 인덱스 리턴
		//검색어가 없으면 -1 을 리턴
		
		System.out.println(url);
		String page="";
		String message="";
		if(url.indexOf("login.do")!=-1){	
				//톰켓의 콘솔창에 출력됨
				System.out.println("아이디 : " + id+ ", 비번 :" + pass);
				MemberDAO dao=new MemberDAO();
				String result=dao.loginCheck(id, pass);
				
				if(result==null){//로그인 실패
					message="아이디 또는 비밀번호가 일치하지 않습니다.";
					page="/ch04_2/sessionTestForm2.jsp?message="
							+ URLEncoder.encode(message, "utf-8");
				}else{ //로그인 성공
					message=result+"님 환영합니다.";
					page="/ch04_2/session_success.jsp";
					//세션 객체 생성
					HttpSession session=request.getSession();
					//세션변수에 값 저장
					session.setAttribute("userid", id);
					session.setAttribute("message", message);
				}
				
		}else if(url.indexOf("logout.do")!=-1){
			//session 객체 생성
			HttpSession session=request.getSession();
			//세션 정보를 초기화시킴(모두 지움)
			session.invalidate();
			message="로그 아웃되었습니다.";
			page="/ch04_2/sessionTestForm2.jsp?message="
					+ URLEncoder.encode(message, "utf-8");
		}
		
		//페이지를 이동시킨
		response.sendRedirect(request.getContextPath()+page);
	}

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

}

 

 

application.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>
<!-- applicationTest.jsp -->

<%
//4가지 저장 영역
//pageContext(현재 페이지)
//request(요청+응답 페이지)
//session(사용자 단위)
//application(서버 단위)

//WAS(Wep Application Server)의 정보
String info=application.getServerInfo();
//배포 디렉토리
String path=application.getRealPath("/");
//콘솔창에 로그 출력
application.log("서비스 경로 :" + path);

//변수 저장(모든 사용자가 공유하는 변수)
application.setAttribute("message", "hello");
%>

<a href="application_result.jsp">서버 변수 확인</a>

</body>
</html>

 

 

responseRedirect.jsp

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>

<%
//response : 클라이언트의 요청을 처리하는 객체
//sendRedirect("이동할 주소") 페이지 주소를 이동시킴

//response.sendRedirect() : 페이지 이동이 목적	
//소량의 스트링 자료만 get 방식으로 전달 가능

//forward()	: 데이터 전달이 목적
//대량의 자료 전달 가능, 모든 자료형
//?뒤의 문자열을 query string(질의 문자열)이라고 함
//url encoding-한글, 특수문자 등을 변환
String name=URLEncoder.encode("홍길동", "utf-8");


//response.setCharacterEncoding("text/html; charset=utf-8");
response.sendRedirect("responseRedirected.jsp?name="+name+"&age=20");
	
%>


</body>
</html>

 

responseRedirected.jsp

<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>

<!-- responseRedirected.jsp -->
<h2>이동된 페이지</h2>

<%
//url?name=kim&age=20
//name변수에 kim, age 변수에 20이 저장되어 전달됨
//get 방식으로 전달되며 스트링으로 처리됨

String name=request.getParameter("name");

//url decode : 인코딩된 문자열을 원상태로 복구
//decode(디코딩할 문자열, 캐릭터넷)
name=URLDecoder.decode(name, "utf-8");
String age=request.getParameter("age");

out.println("이름 : " + name);
out.println("나이: " + age);
%>


</body>
</html>

 

 

 

1. sessionTestForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>

<!-- sessionTestForm.jsp -->

<%
//session객체 : 사용자의 정보를 저장(로그아웃할 때 까지)
//setAttribute("변수명", 값)
//사용자가 로그아웃할 때까지 모든 페이지에서 정보가 유지됨
session.setAttribute("name", "김철수");
session.setAttribute("age", 20);

//다음 페이지까지만 정보가 유지됨
request.setAttribute("name", "김철수");
request.setAttribute("age", 20);
//페이지 이동
//response.sendRedirect("session_result.jsp");

%>

<jsp:forward page="session_result.jsp"></jsp:forward>


</body>
</html>

 

 

session_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>
<!-- session_result.jsp -->

<%
//seesion.getAttribute("변수명") 세션 변수값 조회
String name=(String)session.getAttribute("name");
int age=(Integer)session.getAttribute("age");

%>

이름 : <%=name %><br>
나이 : <%= age %><br>
세션 아이디 : <%= session.getId() %><br>


<a href="session_result2.jsp">세션 확인</a>

<hr>

<h2>request 정보</h2>
이름 : <%= request.getAttribute("name") %><br>
나이 : <%= request.getAttribute("age") %><br>


</body>
</html>

 

 

2. sessionTestForm2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>

<!-- sessionTestForm2.jsp -->
<form method="post" 
 action="<%=request.getContextPath() %>/ch04_servlet/login.do">

아이디 <input name="id"><br/>
비밀번호 <input type="password" name="pass"><br>
<input type="submit" value="로그인">
</form>

<!-- param.message =>request.getParmeter("message"); -->

<span style="color:red;">
${param.message }
</span>

</body>
</html>

 

 

session_result2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>

<%

// session.getAttribute("변수명") 세션 변수값 조회
String name=(String)session.getAttribute("name");
int age=(Integer)session.getAttribute("age");

%>

이름 : <%= name %> <br>
나이 : <%= age %><br>
세션 아이디 : <%= session.getId() %><br>



<hr>

<h2>request 정보</h2>


이름 : <%= request.getAttribute("name") %><br>
나이 : <%= request.getAttribute("age") %><br>



</body>
</html>

 

 

session_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    
<%@ include file="../include/session_check.jsp" %>    
    
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

<script>
$(function(){//자동으로 실행되는 코드
	
	//선택자.이벤트(이벤트핸들러)
	$("#btnLogout").click(function(){//버튼 클릭 이벤트
		//로그아웃 액션으로 이동
	location.href="<%= request.getContextPath() %>/ch04_servlet/logout.do";
		
	});
});

function logout(){
	
	location.href="<%= request.getContextPath() %>/ch04_servlet/logout.do";
	
}

</script>


</head>
<body>

 }


<!--  session_success.jsp 

session.getAttribute("세션변수명") 세션변수에 저장된 값
-->

<h2><%= session.getAttribute("message") %></h2>
<h2>접속중인 아이디 :
<%= session.getAttribute("userid") %>
</h2>
<button type="button" id="btnLogout">로그아웃</button>

</body>
</html>

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

인간은 얼굴을 붉히기도 하며, 혹은 붉힐 필요가 있는 유일한 동물이다. -마크 트웨인

댓글 ( 4)

댓글 남기기

작성