12일차

|
@@@@@@@@@@@@@@@@@ 0819 실습

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>first</title>
</head>
<body>
	<input type="button" value="회원가입하기" onClick="location.href='signup.jsp'">
	<input type="button" value="로그인하기" onClick="location.href='login.jsp'">
</body>
</html>

===========

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="day0819.*"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="m" class="day0819.MemberBean" scope="session"/>
<jsp:setProperty property="*" name="m" />
<jsp:setProperty property="name" name="m" value="<%=m.getName()%>" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 창</title>
</head>
<body>
	<form method = "post" action="/pro14/MemberServlet">
		아이디 : <input type = "text" name = "member_id"><br>
		암호 : <input type = "password" name = "password"><br>
		<input type = "submit" value = "로그인">
		<input type="hidden" name="name" value=<jsp:getProperty  name="m" property="name" />>
		<input type="hidden" name="mode" value="login">
	</form>
</body>
</html>

==============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="day0819.*"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<script type="text/javascript">
		function fn_validate(){
			var frmLogin = document.frmLogin;
			var member_id = frmLogin.member_id.value;
			var name = frmLogin.name.value;
			var password = frmLogin.password.value;
			var password_chk = frmLogin.password_chk.value;
			
			if(member_id.length == 0 || member_id == ""){
				alert("아이디는 필수입니다.");
			} else if (name.length == 0 || name == ""){
				alert("이름은 필수입니다.");
			} else if (password.length == 0 || password == ""){
				alert("비밀번호는 필수입니다.");
			} else if (password !== password_chk){
				alert("비밀번호가 동일하지 않습니다.");
			} else {
				frmLogin.method = "post";
				frmLogin.action = "/pro14/MemberServlet";
				frmLogin.submit();
			}
		}
	</script>
<title>회원가입 창</title>
</head>
<body>
	<form name="frmLogin" method="post" encType="UTF-8">
		ID<input type="text" name="member_id"><br>
		이름<input type="text" name="name"><br>
		암호<input type="password" name="password"><br>
		확인<input type="password" name="password_chk"><br>
		<input type="submit" value="가입" onClick="fn_validate()">
		<input type="hidden" name="mode" value="signup">
	</form>
</body>
</html>

====================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	String member_id = request.getParameter("member_id");
	session.getAttribute("member_id");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>암호변경 창</title>
</head>
<body>
	<form method = "post" action="/pro14/MemberServlet">
		현재 암호 : <input type = "password" name = "password"><br>
		새 암호 : <input type = "password" name = "password_new"><br>
		<input type = "submit" value = "암호변경">
		<input type="hidden" name="member_id" value=<%= member_id %>>
		<input type="hidden" name="mode" value="changeok">
	</form>
</body>
</html>

========================

package day0819;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

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 MemberServlet
 */
@WebServlet("/MemberServlet")
public class MemberServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String p_mode = request.getParameter("mode");
		
	    MemberDAO dao=new MemberDAO();
	    MemberBean vo = new MemberBean();
	    
    	String member_id = request.getParameter("member_id");
    	String password = request.getParameter("password");
    	String password_new = request.getParameter("password_new");
    	String name = request.getParameter("name");
    	
    	vo.setMember_id(member_id);
    	vo.setName(name);
    	vo.setPassword(password);
	    
	    if(p_mode != null && p_mode.equals("change")) {
			RequestDispatcher dispatch = request.getRequestDispatcher("/pro14/day0819/change.jsp");
			dispatch.forward(request, response);
//	    	request.setAttribute("member_id", member_id);
//	    	response.sendRedirect("/pro14/day0819/change/?member_id=member_id.jsp");
	    }else if(p_mode != null && p_mode.equals("changeok")) {
	    	HttpSession session = request.getSession();
			session.setAttribute("result", true); //조회 결과가 true이면 isLogOn 속성을 true로 세션에 저장.
			session.setAttribute("change.member_id", member_id); // 조회한 결과가 true이면 ID와 pwd를 세션에 저장.
			session.setAttribute("change.password", password);
	    	dao.change(member_id, password, password_new);
	    	response.sendRedirect("/pro14/day0819/first.jsp");
		}else if(p_mode != null && p_mode.equals("signup")) {
	    	dao.signup(vo);
	    	response.sendRedirect("/pro14/day0819/first.jsp");
	    }else if(p_mode != null && p_mode.equals("login")) {
	    	boolean result = dao.isExisted(vo);
			if(result) {
				// 사용자 존재하므로 세션에 사용자 정보 설정
//				member_id="";
//				password="";
//				result=false;
				System.out.println(name + "2");
				HttpSession session = request.getSession();
				// 로그인 성공여부 설정
//				if(session!= null) {
				session.setAttribute("result", true); //조회 결과가 true이면 isLogOn 속성을 true로 세션에 저장.
				session.setAttribute("login.member_id", member_id); // 조회한 결과가 true이면 ID와 pwd를 세션에 저장.
				session.setAttribute("login.name", name); // 조회한 결과가 true이면 ID와 pwd를 세션에 저장.
				session.setAttribute("change.member_id", member_id); // 조회한 결과가 true이면 ID와 pwd를 세션에 저장.
				session.setAttribute("login.password", password);
				out.print("<html><body>");
				out.print("안녕하세요 " + name + "님!!!");
				out.println("<input type=\"button\" value=\"로그아웃하기\" onClick=\"location.href='/pro14/day0819/first.jsp'\">");
				out.println("<input type=\"button\" value=\"암호변경하기\" onClick=\"location.href='/pro14/day0819/change.jsp?member_id=" + member_id + "'\">");
				out.print("</html></body>");
//				} else {
//					response.sendRedirect("/pro14/day0819/first.jsp");
//				}
			} else {
				out.println("<html><body><center>회원 아이디가 틀립니다.");
				out.println("<a href='/pro14/day0819/login.jsp'\">다시 로그인 하기</a>");			
				out.println("</html></body>");	
	    }
//			RequestDispatcher dispatch = request.getRequestDispatcher("/pro14/day0819/first.jsp");
//			dispatch.forward(request, response);
	}

	}
}


====================

package day0819;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public MemberDAO()
	{
		try
		{
			Context ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env");
			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public boolean isExisted(MemberBean memberBean) {
		boolean result = false;
		String member_id = memberBean.getMember_id();
		String password = memberBean.getPassword();
		try {
			con = dataFactory.getConnection();
			// 오라클의 decode 함수를 이용해 조회하여 ID와 비밀번호가 테이블에 존재하면 true를, 존재하지 않으면 false를 조회함.
			String query = "select decode(count(*),1,'true','false') as result from member";
					query += " where member_id=? and password=?";
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, member_id);
			pstmt.setString(2, password);
			ResultSet rs = pstmt.executeQuery();
			rs.next(); // 커서를 첫번째 레코드로 위치시킴.
			result = Boolean.parseBoolean(rs.getString("result"));
			System.out.println("result=" + result);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	public void signup(MemberBean memberBean)
	{ // 회원 가입
		try
		{
			Connection con = dataFactory.getConnection();
			String member_id = memberBean.getMember_id();
			String password = memberBean.getPassword();
			String name = memberBean.getName();
			String query = "insert into member";
			query += " (member_id,password,name,regdate)";
			query += " values(?,?,?,sysdate)"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, member_id);
			pstmt.setString(2, password);
			pstmt.setString(3, name);
//			pstmt.setDate(4, regdate);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void change(String member_id, String password, String password_new)
	{ // 비밀번호 변경
		try
		{
			Connection con = dataFactory.getConnection();
			String query = "UPDATE member";
			query += " SET password = ?";
			query += " WHERE member_id = '" + member_id + "'";
			query += " AND password ='" + password + "'";
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, password_new);
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("비밀번호 변경 로그확인");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}


========================

package day0819;

import java.sql.Date;

public class MemberBean {
	private String member_id;
	private String password;
	private String name;
	private Date regdate;
	
	public MemberBean()
	{
		System.out.println("MemberBean 생성자 호출");
	}

	public String getMember_id() {
		return member_id;
	}

	public void setMember_id(String member_id) {
		this.member_id = member_id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getRegdate() {
		return regdate;
	}

	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}
	
	
	
}

'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

13일차  (0) 2019.08.26
게시판  (0) 2019.08.26
11일차  (0) 2019.08.14
10일차  (0) 2019.08.13
9일차  (0) 2019.08.12
And