Skip to content

Commit

Permalink
[최주형] 17일차 PR (#195)
Browse files Browse the repository at this point in the history
* FEAT : jdbc 구현 및 테스트

* FEAT : 회원가입 기능 db 연동

* FEAT : 로그인  기능 db 연동

* FEAT : list  기능 db 연동

* FEAT : Html controller, htmlservice Autowired 처리

* FEAT : qna 등록 기능 구현

* FEAT : qna 홈페이지 출력 기능 구현

* FEAT : qna에 글쓴 시간 추가

* FEAT : 한줄 게시판이므로 qna title 삭제

* FEAT : 로그인한 사람만 질문 가능 할 수 있게 구현

* FEAT : 로그아웃 구현

* REFORMAT CODE

* FEAT : qna 날짜순 정렬 구현

* REFACTOR : 필요없는 것 삭제

* FIX : logback.xml 이름 수정
  • Loading branch information
jhchoi57 authored Jan 26, 2023
1 parent cc0f425 commit b6af4b9
Show file tree
Hide file tree
Showing 27 changed files with 456 additions and 83 deletions.
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ dependencies {

// mysql
implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.0.32'

// jdbc
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
}

tasks.named('test') {
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/bejavawebserver/SpringConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//package bejavawebserver;
//
//import bejavawebserver.repository.JdbcRepository;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import javax.sql.DataSource;
//
//
//@Configuration
//public class SpringConfig {
// private DataSource dataSource;
//
// @Autowired
// public SpringConfig(DataSource dataSource){
// this.dataSource = dataSource;
// }
//
// @Bean
// public JdbcRepository jdbcRepository(){
// return new JdbcRepository(dataSource);
// }
//}
6 changes: 3 additions & 3 deletions src/main/java/bejavawebserver/WebserverApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
@SpringBootApplication
public class WebserverApplication {

public static void main(String[] args) {
SpringApplication.run(WebserverApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(WebserverApplication.class, args);
}

}
5 changes: 2 additions & 3 deletions src/main/java/bejavawebserver/controller/HomeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.SessionAttribute;

@Controller
public class HomeController {
@GetMapping("/")
public String home(){
return "index";
public String home() {
return "redirect:/index.html";
}
}
31 changes: 20 additions & 11 deletions src/main/java/bejavawebserver/controller/HtmlController.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
package bejavawebserver.controller;

import bejavawebserver.model.User;
import bejavawebserver.repository.memoryRepository;
import bejavawebserver.service.HtmlService;
import bejavawebserver.service.ListService;
import bejavawebserver.service.LoginService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import bejavawebserver.service.QnaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class HtmlController {
//@GetMapping("/index.html")
@Autowired
HtmlService htmlService;
@Autowired
ListService listService;
@Autowired
QnaService qnaService;

@GetMapping(value = {
"/index.html",
Expand All @@ -27,25 +30,31 @@ public class HtmlController {
"/user/login.html",
"/user/login_failed.html",
"/user/profile.html"})
public String indexHtml(HttpServletRequest httpServletRequest, Model model){
public String indexHtml(HttpServletRequest httpServletRequest, Model model) {
HttpSession session = httpServletRequest.getSession(false);
String uri = httpServletRequest.getRequestURI();

if (uri.equals("/index.html")) qnaService.makeQnaList(model);

// 로그인 상태인 경우
if(LoginService.isLogin(session)) {
return HtmlService.makeLoginView(model, uri, (User)session.getAttribute("user"));
if (LoginService.isLogin(session)) {
return htmlService.makeLoginView(model, uri, (User) session.getAttribute(session.getId()));
}
// 로그인 상태가 아닌 경우
return HtmlService.makeNotLoginView(model, uri);
if (uri.equals("/qna/form.html")) return "redirect:/user/login.html";
return htmlService.makeNotLoginView(model, uri);
}

@GetMapping("/user/list.html")
public String listHtml(HttpServletRequest httpServletRequest, Model model){
public String listHtml(HttpServletRequest httpServletRequest, Model model) {
HttpSession session = httpServletRequest.getSession(false);
String uri = httpServletRequest.getRequestURI();

// 로그인 상태인 경우
if(LoginService.isLogin(session)) return ListService.makeUserList(model, uri, (User)session.getAttribute("user"));
if (LoginService.isLogin(session)) {
listService.makeUserList(model);
return htmlService.makeLoginView(model, uri, (User) session.getAttribute("user"));
}

// 로그인 상태가 아닌 경우
return "redirect:/user/login.html";
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/bejavawebserver/controller/QnaController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package bejavawebserver.controller;

import bejavawebserver.model.Qna;
import bejavawebserver.model.QnaForm;
import bejavawebserver.service.QnaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Controller
public class QnaController {
@Autowired
QnaService qnaService;

@PostMapping("/qna/form")
public String writeQna(QnaForm qnaForm) {
String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
qnaService.addQna(new Qna(qnaForm, time));
return "redirect:/index.html";
}

}
34 changes: 28 additions & 6 deletions src/main/java/bejavawebserver/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,52 @@
import bejavawebserver.model.LoginForm;
import bejavawebserver.model.User;
import bejavawebserver.service.LoginService;
import bejavawebserver.service.LogoutService;
import bejavawebserver.service.SignUpService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
SignUpService signUpService;
@Autowired
LoginService loginService;
@Autowired
LogoutService logoutService;

@PostMapping("/user/create")
public String signUp(User user){
try{
SignUpService.addDatabase(user);
}catch (RuntimeException r){
public String signUp(User user) {
try {
signUpService.addDatabase(user);
} catch (RuntimeException r) {
logger.debug(r.getMessage());
return "redirect:/user/form.html";
}
return "redirect:/";
}

@PostMapping("/user/login")
public String login(LoginForm loginForm, HttpSession session){
if(LoginService.isLoginSuccess(loginForm, session)){
public String login(LoginForm loginForm, HttpSession session) {
if (loginService.isLoginSuccess(loginForm, session)) {
return "redirect:/index.html";
}
return "redirect:/user/login_failed.html";
}

@GetMapping("/user/logout")
public String logout(HttpServletRequest httpServletRequest) {
HttpSession session = httpServletRequest.getSession();
logoutService.removeSession(session);
return "redirect:/";
}

}
22 changes: 22 additions & 0 deletions src/main/java/bejavawebserver/model/Qna.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package bejavawebserver.model;

import lombok.Data;

@Data
public class Qna {
private String writer;
private String contents;
private String time;

public Qna(QnaForm qnaForm, String time) {
this.writer = qnaForm.getWriter();
this.contents = qnaForm.getContents();
this.time = time;
}

public Qna(String writer, String contents, String time) {
this.writer = writer;
this.contents = contents;
this.time = time;
}
}
17 changes: 17 additions & 0 deletions src/main/java/bejavawebserver/model/QnaForm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package bejavawebserver.model;

import lombok.Data;
import lombok.NonNull;

@Data
public class QnaForm {
@NonNull
private String writer;
@NonNull
private String contents;

public QnaForm(@NonNull String writer, @NonNull String contents) {
this.writer = writer;
this.contents = contents;
}
}
Loading

0 comments on commit b6af4b9

Please sign in to comment.