jspblog : user login/logout
This commit is contained in:
@@ -54,6 +54,12 @@
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.8.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>jstl</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.example.jspblog.domain.user;
|
||||
|
||||
import com.example.jspblog.config.DB;
|
||||
import com.example.jspblog.domain.user.dto.JoinReqDto;
|
||||
import com.example.jspblog.domain.user.dto.LoginReqDto;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -36,10 +37,6 @@ public class UserDao {
|
||||
|
||||
}
|
||||
|
||||
public void usernameCheck() { // 아이디 중복 체크
|
||||
|
||||
}
|
||||
|
||||
public void findById() { // 회원정보보기
|
||||
|
||||
}
|
||||
@@ -66,4 +63,35 @@ public class UserDao {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public User findByUsernameAndPassword(LoginReqDto dto) {
|
||||
String sql = "select id, username, email, address from user where username=? and password=?";
|
||||
|
||||
Connection conn = DB.getConnection();
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
||||
if (conn != null) {
|
||||
try {
|
||||
pstmt = conn.prepareStatement(sql);
|
||||
pstmt.setString(1, dto.getUsername());
|
||||
pstmt.setString(2, dto.getPassword());
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next()) {
|
||||
return User.builder()
|
||||
.id(rs.getInt("id"))
|
||||
.username(rs.getString("username"))
|
||||
.email(rs.getString("email"))
|
||||
.address(rs.getString("address"))
|
||||
.build();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
DB.close(conn, pstmt, rs);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class UserService {
|
||||
}
|
||||
|
||||
public User 로그인(LoginReqDto dto) {
|
||||
return null;
|
||||
return userDao.findByUsernameAndPassword(dto);
|
||||
}
|
||||
|
||||
public int 회원수정(UpdateReqDto dto) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.example.jspblog.web;
|
||||
|
||||
import com.example.jspblog.domain.user.User;
|
||||
import com.example.jspblog.domain.user.dto.JoinReqDto;
|
||||
import com.example.jspblog.domain.user.dto.LoginReqDto;
|
||||
import com.example.jspblog.service.UserService;
|
||||
@@ -29,42 +30,61 @@ public class UserController extends HttpServlet {
|
||||
String cmd = request.getParameter("cmd");
|
||||
UserService userService = new UserService();
|
||||
|
||||
if(cmd.equals("loginForm")) {
|
||||
response.sendRedirect("user/loginForm.jsp");
|
||||
} else if (cmd.equals("login")) {
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
LoginReqDto dto = new LoginReqDto();
|
||||
dto.setUsername(username);
|
||||
dto.setPassword(password);
|
||||
userService.로그인(dto);
|
||||
} else if (cmd.equals("joinForm")) {
|
||||
response.sendRedirect("user/joinForm.jsp");
|
||||
} else if (cmd.equals("join")) {
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
String email = request.getParameter("email");
|
||||
String address = request.getParameter("address");
|
||||
JoinReqDto dto = new JoinReqDto();
|
||||
dto.setUsername(username);
|
||||
dto.setPassword(password);
|
||||
dto.setEmail(email);
|
||||
dto.setAddress(address);
|
||||
int result = userService.회원가입(dto);
|
||||
if (result == 1) {
|
||||
response.sendRedirect("index.jsp");
|
||||
} else {
|
||||
Script.back(response, "회원가입실패");
|
||||
switch (cmd) {
|
||||
case "loginForm":
|
||||
response.sendRedirect("user/loginForm.jsp");
|
||||
break;
|
||||
case "login": {
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
LoginReqDto dto = new LoginReqDto();
|
||||
dto.setUsername(username);
|
||||
dto.setPassword(password);
|
||||
User userEntity = userService.로그인(dto);
|
||||
if (userEntity != null) {
|
||||
request.getSession().setAttribute("principal", userEntity);
|
||||
response.sendRedirect("index.jsp");
|
||||
} else {
|
||||
Script.back(response, "로그인 실패");
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else if (cmd.equals("usernameCheck")) {
|
||||
BufferedReader br = request.getReader();
|
||||
String username = br.readLine();
|
||||
int result = userService.유저네임중복체크(username);
|
||||
PrintWriter out = response.getWriter();
|
||||
if (result == 1) {
|
||||
out.print("ok");
|
||||
} else {
|
||||
out.print("fail");
|
||||
case "joinForm":
|
||||
response.sendRedirect("user/joinForm.jsp");
|
||||
break;
|
||||
case "join": {
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
String email = request.getParameter("email");
|
||||
String address = request.getParameter("address");
|
||||
JoinReqDto dto = new JoinReqDto();
|
||||
dto.setUsername(username);
|
||||
dto.setPassword(password);
|
||||
dto.setEmail(email);
|
||||
dto.setAddress(address);
|
||||
int result = userService.회원가입(dto);
|
||||
if (result == 1) {
|
||||
response.sendRedirect("index.jsp");
|
||||
} else {
|
||||
Script.back(response, "회원가입실패");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "usernameCheck": {
|
||||
BufferedReader br = request.getReader();
|
||||
String username = br.readLine();
|
||||
int result = userService.유저네임중복체크(username);
|
||||
PrintWriter out = response.getWriter();
|
||||
if (result == 1) {
|
||||
out.print("ok");
|
||||
} else {
|
||||
out.print("fail");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "logout": {
|
||||
request.getSession().invalidate();
|
||||
response.sendRedirect("index.jsp");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
|
||||
<%@ include file="../layout/header.jsp"%>
|
||||
|
||||
<h1>세션 테스트</h1>
|
||||
로그인 유저네임 : ${sessionScope.principal.username}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@@ -13,20 +15,40 @@
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-expand-md bg-dark navbar-dark">
|
||||
<a class="navbar-brand" href="#">블로그</a>
|
||||
<a class="navbar-brand" href="${pageContext.request.contextPath}/index.jsp">블로그</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=joinForm">회원가입</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=loginForm">로그인</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${sessionScope.principal != null}">
|
||||
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/board?cmd=writeForm">글쓰기</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=updateForm">회원정보</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=logout">로그아웃</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="collapse navbar-collapse" id="collapsibleNavbar">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=joinForm">회원가입</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="${pageContext.request.contextPath}/user?cmd=loginForm">로그인</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</nav>
|
||||
<br>
|
||||
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
|
||||
<%@ include file="../layout/header.jsp"%>
|
||||
|
||||
<div class="container">
|
||||
<form action="${pageContext.request.contextPath}/user?cmd=login" method="post">
|
||||
<div class="form-group">
|
||||
<label for="username">Username:</label>
|
||||
<input name="username" type="text" class="form-control" placeholder="Enter username" id="username" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="pwd">Password:</label>
|
||||
<input name="password" type="password" class="form-control" placeholder="Enter password" id="pwd" required>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">로그인</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user