---[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 |