Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/main/java/next/model/User.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package next.model;

import javax.servlet.http.HttpServletRequest;

public class User {
private String userId;
private String password;
Expand All @@ -13,6 +15,19 @@ public User(String userId, String password, String name, String email) {
this.email = email;
}

public User(HttpServletRequest req) {
this.userId = req.getParameter("userId");
this.password = req.getParameter("password");
this.name = req.getParameter("name");
this.email = req.getParameter("email");
}

public void modifyInfo(HttpServletRequest req) {
this.password = req.getParameter("password");
this.name = req.getParameter("name");
this.email = req.getParameter("email");
}

public String getUserId() {
return userId;
}
Expand Down Expand Up @@ -66,4 +81,13 @@ public boolean equals(Object obj) {
return true;
}

@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
5 changes: 2 additions & 3 deletions src/main/java/next/web/CreateUserServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@ public class CreateUserServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = new User(req.getParameter("userId"), req.getParameter("password"), req.getParameter("name"),
req.getParameter("email"));
User user = new User(req);
log.debug("user : {}", user);
DataBase.addUser(user);
resp.sendRedirect("/user/list");
resp.sendRedirect("/");
}
}
31 changes: 31 additions & 0 deletions src/main/java/next/web/UpdateUserFormServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package next.web;

import core.db.DataBase;
import next.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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 java.io.IOException;

@WebServlet("/user/update/*")
public class UpdateUserFormServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log = LoggerFactory.getLogger(UpdateUserFormServlet.class);

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final String userId = req.getPathInfo().substring(1);
log.info("User ID : {}", userId);
final User user = DataBase.findUserById(userId);
log.info("User : {}", user.toString());
req.setAttribute("user", user);
final RequestDispatcher requestDispatcher = req.getRequestDispatcher("/user/update.jsp");
requestDispatcher.forward(req, resp);
}
}
36 changes: 36 additions & 0 deletions src/main/java/next/web/UpdateUserServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package next.web;

import core.db.DataBase;
import next.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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 java.io.IOException;
import java.util.Objects;

@WebServlet("/user/update")
public class UpdateUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log = LoggerFactory.getLogger(UpdateUserServlet.class);

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final String userId = req.getParameter("userId");
final User user = DataBase.findUserById(userId);

resp.sendRedirect("/user/list");

if (Objects.isNull(user)) {
log.info("Can't find user By userId");
return;
}

user.modifyInfo(req);
}
}
37 changes: 37 additions & 0 deletions src/main/java/next/web/UserLoginServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package next.web;

import core.db.DataBase;
import next.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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;
import java.io.IOException;
import java.util.Objects;

@WebServlet("/user/login")
public class UserLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log = LoggerFactory.getLogger(UserLoginServlet.class);

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final String userId = req.getParameter("userId");
final String password = req.getParameter("password");

final User user = DataBase.findUserById(userId);

if (user != null && user.getPassword().equals(password)) {
HttpSession session = req.getSession();
session. setAttribute("user", user);
}

resp.sendRedirect("/");
}
}
28 changes: 28 additions & 0 deletions src/main/java/next/web/UserLogoutServlet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package next.web;

import core.db.DataBase;
import next.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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;
import java.io.IOException;

@WebServlet("/user/logout")
public class UserLogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log = LoggerFactory.getLogger(UserLogoutServlet.class);

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final HttpSession session = req.getSession();
session.removeAttribute("user");
resp.sendRedirect("/");
}
}
71 changes: 9 additions & 62 deletions webapp/index.html → webapp/index.jsp
Original file line number Diff line number Diff line change
@@ -1,3 +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="kr">
<head>
Expand All @@ -12,63 +15,7 @@
<link href="css/styles.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-fixed-top header">
<div class="col-md-12">
<div class="navbar-header">

<a href="index.html" class="navbar-brand">SLiPP</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse1">
<i class="glyphicon glyphicon-search"></i>
</button>

</div>
<div class="collapse navbar-collapse" id="navbar-collapse1">
<form class="navbar-form pull-left">
<div class="input-group" style="max-width:470px;">
<input type="text" class="form-control" placeholder="Search" name="srch-term" id="srch-term">
<div class="input-group-btn">
<button class="btn btn-default btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</form>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-bell"></i></a>
<ul class="dropdown-menu">
<li><a href="https://slipp.net" target="_blank">SLiPP</a></li>
<li><a href="https://facebook.com" target="_blank">Facebook</a></li>
</ul>
</li>
<li><a href="./user/list.html"><i class="glyphicon glyphicon-user"></i></a></li>
</ul>
</div>
</div>
</nav>
<div class="navbar navbar-default" id="subnav">
<div class="col-md-12">
<div class="navbar-header">
<a href="#" style="margin-left:15px;" class="navbar-btn btn btn-default btn-plus dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-home" style="color:#dd1111;"></i> Home <small><i class="glyphicon glyphicon-chevron-down"></i></small></a>
<ul class="nav dropdown-menu">
<li><a href="user/profile.html"><i class="glyphicon glyphicon-user" style="color:#1111dd;"></i> Profile</a></li>
<li class="nav-divider"></li>
<li><a href="#"><i class="glyphicon glyphicon-cog" style="color:#dd1111;"></i> Settings</a></li>
</ul>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse2">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="index.html">Posts</a></li>
<li><a href="user/login.html" role="button">로그인</a></li>
<li><a href="user/form.html" role="button">회원가입</a></li>
<!--
<li><a href="#loginModal" role="button" data-toggle="modal">로그인</a></li>
<li><a href="#registerModal" role="button" data-toggle="modal">회원가입</a></li>
-->
<li><a href="#" role="button">로그아웃</a></li>
<li><a href="#" role="button">개인정보수정</a></li>
</ul>
</div>
</div>
</div>
<%@ include file="./nav/nav.jsp" %>

<div class="container" id="main">
<div class="col-md-12 col-sm-12 col-lg-10 col-lg-offset-1">
Expand All @@ -78,12 +25,12 @@
<div class="wrap">
<div class="main">
<strong class="subject">
<a href="./qna/show.html">국내에서 Ruby on Rails와 Play가 활성화되기 힘든 이유는 뭘까?</a>
<a href="./qna/show.jsp">국내에서 Ruby on Rails와 Play가 활성화되기 힘든 이유는 뭘까?</a>
</strong>
<div class="auth-info">
<i class="icon-add-comment"></i>
<span class="time">2016-01-15 18:47</span>
<a href="./user/profile.html" class="author">자바지기</a>
<a href="./user/profile.jsp" class="author">자바지기</a>
</div>
<div class="reply" title="댓글">
<i class="icon-reply"></i>
Expand All @@ -96,12 +43,12 @@
<div class="wrap">
<div class="main">
<strong class="subject">
<a href="./qna/show.html">runtime 에 reflect 발동 주체 객체가 뭔지 알 방법이 있을까요?</a>
<a href="./qna/show.jsp">runtime 에 reflect 발동 주체 객체가 뭔지 알 방법이 있을까요?</a>
</strong>
<div class="auth-info">
<i class="icon-add-comment"></i>
<span class="time">2016-01-05 18:47</span>
<a href="./user/profile.html" class="author">김문수</a>
<a href="./user/profile.jsp" class="author">김문수</a>
</div>
<div class="reply" title="댓글">
<i class="icon-reply"></i>
Expand All @@ -125,7 +72,7 @@
</ul>
</div>
<div class="col-md-3 qna-write">
<a href="./qna/form.html" class="btn btn-primary pull-right" role="button">질문하기</a>
<a href="./qna/form.jsp" class="btn btn-primary pull-right" role="button">질문하기</a>
</div>
</div>
</div>
Expand Down
64 changes: 64 additions & 0 deletions webapp/nav/nav.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<nav class="navbar navbar-fixed-top header">
<div class="col-md-12">
<div class="navbar-header">

<a href="../index.jsp" class="navbar-brand">SLiPP</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse1">
<i class="glyphicon glyphicon-search"></i>
</button>

</div>
<div class="collapse navbar-collapse" id="navbar-collapse1">
<form class="navbar-form pull-left">
<div class="input-group" style="max-width:470px;">
<input type="text" class="form-control" placeholder="Search" name="srch-term" id="srch-term">
<div class="input-group-btn">
<button class="btn btn-default btn-primary" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</form>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-bell"></i></a>
<ul class="dropdown-menu">
<li><a href="https://slipp.net" target="_blank">SLiPP</a></li>
<li><a href="https://facebook.com" target="_blank">Facebook</a></li>
</ul>
</li>
<li><a href="../user/list.jsp"><i class="glyphicon glyphicon-user"></i></a></li>
</ul>
</div>
</div>
</nav>
<div class="navbar navbar-default" id="subnav">
<div class="col-md-12">
<div class="navbar-header">
<a href="#" style="margin-left:15px;" class="navbar-btn btn btn-default btn-plus dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-home" style="color:#dd1111;"></i> Home <small><i class="glyphicon glyphicon-chevron-down"></i></small></a>
<ul class="nav dropdown-menu">
<li><a href="../user/profile.jsp"><i class="glyphicon glyphicon-user" style="color:#1111dd;"></i> Profile</a></li>
<li class="nav-divider"></li>
<li><a href="#"><i class="glyphicon glyphicon-cog" style="color:#dd1111;"></i> Settings</a></li>
</ul>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse2">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="../index.jsp">Posts</a></li>
<c:choose>
<c:when test="${not empty sessionScope.user}">
<li><a href="/user/logout" role="button">로그아웃</a></li>
<li><a href="/user/list" role="button">개인정보수정</a></li>
</c:when>
<c:otherwise>
<li><a href="../user/login.jsp" role="button">로그인</a></li>
<li><a href="../user/form.jsp" role="button">회원가입</a></li>
</c:otherwise>
</c:choose>
</ul>
</div>
</div>
</div>


Loading