mode2 C.R.U.D. sql을 연동한 로그인 기능

---[request]---

login2.jsp ---> login2Servlet.java ---> login2Svc.java ---> login2VO.java---> login2DAO,java 

---[response]---

login2DAO.java ---> login2VO--> login2Svc.java ---> login2Servlet.java ---> login2.jsp

---[#uid data movement]---

#uid ---> serialize ---> ajax ---> servlet(req) ---> Service (req.getParameter("uid") ---> VO(uid ---> name)

--->DAO (name ---> ok

(name--->

String sql = "SELECT num, name FROM member WHERE num=? AND name=?;";

pstmt = conn.prepareStatement(sql);

pstmt.setString(2, u.getName());

) --->

PrintWriter out = res.getWriter() out.print(String.format("{\"login\":%b}", ok));

---> res.login ---> "login sucess" 

---[if login #uid save session]---

if (ok) {

req.getSession().setAttribute("uid", id);

}

 

login2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>login</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" 
   integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" 
   crossorigin="anonymous"></script>
   <script>
   function login() {
	   var uid = $('#uid').val();
	   var pwd = $('#pwd').val();
	   if(uid=='' || pwd=='') {
		   alert ('Plz input ID & PW!');
	   }
	   var serData = $('#login_form').serialize();
	   alert(serData);
	   
	   $.ajax({
		   url : '/webdemo/login2',
		   method:'post',
		   cache:false,
		   data:serData,
		   dataType:'json',
		   success:function(res){
			   alert(res.login?'로그인 성공':'로그인 실패');
			   location.href='/webdemo/bbs';
		   },
		   error:function(xhr,status,err){
			   alert('에러:'+err);
		   }
	   });
	   return false;
   }
   </script>
</head>
<body bgcolor="#f4c2c2">
<h3>LOGIN</h3>
<form id="login_form" onsubmit="return login();">
<input type="hidden" id="cmd" name="cmd" value="login">
<div>NAME :<input type="text" id="uid" name="uid" value="lucas"></div>
<div>NUM :<input type="text" id="pwd" name="pwd" value="1"></div>
      <button  type="submit">login</button>
      <button  type="reset">cancel</button>
</form>
</body>
</html>

login2Servlet.java

package com.tjoeun.cont;

import java.io.IOException;
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 com.tjoeun.svc.login2Svc;

@WebServlet("/login2"
		+ "")
public class login2Servlet extends HttpServlet {
            
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

		req.setCharacterEncoding("utf-8");
		res.setContentType("text/html; charset=utf-8");
		
		String viewPath = new login2Svc(req,res).exec();
		
		if(viewPath!=null) {
			getServletContext().getRequestDispatcher(viewPath).forward(req, res);
		}
	}

}

 

login2Svc.java

package com.tjoeun.svc;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.tjoeun.dao.login2DAO;
import com.tjoeun.vo.login2VO;

public class login2Svc {

		private HttpServletRequest req;
		private HttpServletResponse res;
		private String cmd;
		
		public login2Svc() {}

		public login2Svc(HttpServletRequest req, HttpServletResponse res) {
			this.req = req;
			this.res = res;
			this.cmd = req.getParameter("cmd");
		}

		
		public String exec() {
			System.out.println("exec: "+cmd);
			if (cmd==null) {
				String add = "/bbs2/login2.jsp";
				return add;
			}
			switch(cmd) {
			case "login": return login();
			default: System.out.println("Error");
				return null;
			}
		}
		
		private String login() {
			String id = req.getParameter("uid");
			String pwd = req.getParameter("pwd");
			System.out.println("암호" +pwd);
			int nPwd = Integer.parseInt(pwd);
			login2VO user = new login2VO();
			user.setName(id);
			user.setNum(nPwd);
			
			login2DAO loginDao = new login2DAO();
			boolean ok = loginDao.login(user);
			
			if (ok) {
				req.getSession().setAttribute("uid", id);
			}
			
			try {
				res.setContentType("application/json; charset=utf-8");
				PrintWriter out = res.getWriter();
				String jsStr = String.format("{\"login\":%b}", ok);
				//System.out.println("서버측 응답"+jsStr);
				out.print(jsStr);
				out.flush();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
		


	
}

login2DAO.java

package com.tjoeun.dao;

import java.sql.*;
import com.tjoeun.vo.login2VO;

public class login2DAO {
//link sql unlink sql from Svc num name
	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	
	private Connection getConn() {
		try {
			String url = "jdbc:mysql://localhost:3306/mydb?"
					+ "characterEncoding=UTF-8&serverTimezone=UTC&SSL=false";
			Class.forName("com.mysql.cj.jdbc.Driver");
			conn = DriverManager.getConnection(url,"root","5227");
			return conn;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	private void closeAll() {
				try {
					if(rs!=null) rs.close();
					if(pstmt!=null) pstmt.close();
					if(conn!=null) conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
	
	public boolean login(login2VO u) {
		conn = getConn(); //connect DB
		String sql = "SELECT num, name FROM member "
				+ "WHERE num=? AND name=?;";
		//System.out.println("dao no="+u.getNum()); ok
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, u.getNum());
			pstmt.setString(2, u.getName());
			rs = pstmt.executeQuery();
			return rs.next();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeAll();
		}
		return false;
	}


}//end C

login2VO.java

package com.tjoeun.vo;

public class login2VO {
	private int num;
	private String name;
	private String phone;
	private String email;

	public login2VO() {}

	public login2VO(int num, String name, String phone, String email) {
		this.num = num;
		this.name = name;
		this.phone = phone;
		this.email = email;
	}

	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

'주말⇞코딩' 카테고리의 다른 글

python) TCP_Socket 을 이용한 회원관리 프로그램  (0) 2022.02.27
장바구니 만들기中  (0) 2022.01.31
자바) 메모장  (0) 2022.01.02
자바 정리_ver.0.3  (0) 2022.01.01
자바) 제비뽑기 / 배열이름 검색  (0) 2021.12.26
Comment