683
No
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>
댓글 ( 4)
댓글 남기기