Skip to content

Commit 42fac50

Browse files
committed
REFACTOR: Spring 전환
1 parent dc2fd96 commit 42fac50

29 files changed

+758
-874
lines changed

java-webMVC.iws

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,35 @@
55
</component>
66
<component name="ChangeListManager">
77
<list default="true" id="b8532e5e-d8f5-4e8c-a002-746704734daf" name="Changes" comment="">
8-
<change afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/UserController.java" afterDir="false" />
9-
<change afterPath="$PROJECT_DIR$/src/main/webapp/js/scripts.js" afterDir="false" />
10-
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
11-
<change beforePath="$PROJECT_DIR$/java-webMVC.ipr" beforeDir="false" afterPath="$PROJECT_DIR$/java-webMVC.ipr" afterDir="false" />
8+
<change afterPath="$PROJECT_DIR$/src/main/java/jwp/repository/QuestionRepository.java" afterDir="false" />
9+
<change afterPath="$PROJECT_DIR$/src/main/java/jwp/repository/UserRepository.java" afterDir="false" />
10+
<change afterPath="$PROJECT_DIR$/src/main/java/jwp/service/QuestionService.java" afterDir="false" />
11+
<change afterPath="$PROJECT_DIR$/src/main/java/jwp/service/UserService.java" afterDir="false" />
1212
<change beforePath="$PROJECT_DIR$/java-webMVC.iws" beforeDir="false" afterPath="$PROJECT_DIR$/java-webMVC.iws" afterDir="false" />
13-
<change beforePath="$PROJECT_DIR$/src/main/java/WebServerLauncher.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/WebServerLauncher.java" afterDir="false" />
14-
<change beforePath="$PROJECT_DIR$/src/main/java/core/jdbc/JdbcTemplate.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/jdbc/JdbcTemplate.java" afterDir="false" />
13+
<change beforePath="$PROJECT_DIR$/src/main/java/core/jdbc/ConnectionManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/jdbc/ConnectionManager.java" afterDir="false" />
14+
<change beforePath="$PROJECT_DIR$/src/main/java/core/jdbc/KeyHolder.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/jdbc/KeyHolder.java" afterDir="false" />
15+
<change beforePath="$PROJECT_DIR$/src/main/java/core/jdbc/PreparedStatementSetter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/jdbc/PreparedStatementSetter.java" afterDir="false" />
16+
<change beforePath="$PROJECT_DIR$/src/main/java/core/jdbc/RowMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/core/jdbc/RowMapper.java" afterDir="false" />
17+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/Controller.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/Controller.java" afterDir="false" />
18+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateQuestionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateQuestionController.java" afterDir="false" />
19+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateQuestionFormController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateQuestionFormController.java" afterDir="false" />
20+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/CreateUserController.java" afterDir="false" />
21+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/DispatcherServlet.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/DispatcherServlet.java" afterDir="false" />
22+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/ForwardController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/ForwardController.java" afterDir="false" />
23+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/HomeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/HomeController.java" afterDir="false" />
24+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/ListUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/ListUserController.java" afterDir="false" />
25+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/LoginController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/LoginController.java" afterDir="false" />
26+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/LogoutController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/LogoutController.java" afterDir="false" />
27+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/RequestMapping.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/RequestMapping.java" afterDir="false" />
28+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/ShowQuestionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/ShowQuestionController.java" afterDir="false" />
29+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/UpdateUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/UpdateUserController.java" afterDir="false" />
30+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/UpdateUserFormController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/UpdateUserFormController.java" afterDir="false" />
31+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/controller/UserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/controller/UserController.java" afterDir="false" />
32+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/dao/QuestionDao.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/dao/QuestionDao.java" afterDir="false" />
1533
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/dao/UserDao.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/dao/UserDao.java" afterDir="false" />
34+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/model/Question.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/model/Question.java" afterDir="false" />
1635
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/model/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/model/User.java" afterDir="false" />
17-
<change beforePath="$PROJECT_DIR$/webapp/WEB-INF/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/.gitignore" afterDir="false" />
18-
<change beforePath="$PROJECT_DIR$/webapp/css/styles.css" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/css/styles.css" afterDir="false" />
19-
<change beforePath="$PROJECT_DIR$/webapp/css/styles2.css" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/css/styles2.css" afterDir="false" />
20-
<change beforePath="$PROJECT_DIR$/webapp/favicon.ico" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/favicon.ico" afterDir="false" />
21-
<change beforePath="$PROJECT_DIR$/webapp/home.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/home.jsp" afterDir="false" />
22-
<change beforePath="$PROJECT_DIR$/webapp/img/KUIT.png" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/img/KUIT.png" afterDir="false" />
23-
<change beforePath="$PROJECT_DIR$/webapp/img/picture.jpeg" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/img/picture.jpeg" afterDir="false" />
24-
<change beforePath="$PROJECT_DIR$/webapp/include/header.jspf" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/include/header.jspf" afterDir="false" />
25-
<change beforePath="$PROJECT_DIR$/webapp/include/navigation.jspf" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/include/navigation.jspf" afterDir="false" />
26-
<change beforePath="$PROJECT_DIR$/webapp/js/scripts.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.properties" afterDir="false" />
27-
<change beforePath="$PROJECT_DIR$/webapp/qna/form.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/qna/form.jsp" afterDir="false" />
28-
<change beforePath="$PROJECT_DIR$/webapp/qna/show.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/qna/show.jsp" afterDir="false" />
29-
<change beforePath="$PROJECT_DIR$/webapp/user/form.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/user/form.jsp" afterDir="false" />
30-
<change beforePath="$PROJECT_DIR$/webapp/user/list.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/user/list.jsp" afterDir="false" />
31-
<change beforePath="$PROJECT_DIR$/webapp/user/login.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/user/login.jsp" afterDir="false" />
32-
<change beforePath="$PROJECT_DIR$/webapp/user/loginFailed.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/user/loginFailed.jsp" afterDir="false" />
33-
<change beforePath="$PROJECT_DIR$/webapp/user/updateForm.jsp" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/user/updateForm.jsp" afterDir="false" />
36+
<change beforePath="$PROJECT_DIR$/src/main/java/jwp/support/context/ContextLoaderListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/jwp/support/context/ContextLoaderListener.java" afterDir="false" />
3437
</list>
3538
<option name="SHOW_DIALOG" value="false" />
3639
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -149,15 +152,16 @@
149152
"Gradle.KUIT6_Server-webMVC.executor": "Run",
150153
"JUnit.UserTest.executor": "Run",
151154
"RunOnceActivity.ShowReadmeOnStart": "true",
152-
"git-widget-placeholder": "week5junyong",
155+
"Spring Boot.WebServerLauncher.executor": "Run",
156+
"git-widget-placeholder": "week06junyong",
153157
"kotlin-language-version-configured": "true",
154158
"last_opened_file_path": "C:/Users/samsung-user/Documents/KU/clubs/KUIT/KUIT6_Server-webMVC",
155159
"node.js.detected.package.eslint": "true",
156160
"node.js.detected.package.tslint": "true",
157161
"node.js.selected.package.eslint": "(autodetect)",
158162
"node.js.selected.package.tslint": "(autodetect)",
159163
"nodejs_package_manager_path": "npm",
160-
"project.structure.last.edited": "Modules",
164+
"project.structure.last.edited": "Project",
161165
"project.structure.proportion": "0.15",
162166
"project.structure.side.proportion": "0.23492062",
163167
"settings.editor.selected.configurable": "reference.settingsdialog.project.gradle",
@@ -169,7 +173,7 @@
169173
<recent name="C:\Users\samsung-user\Documents\KU\clubs\KUIT\KUIT6_Server-webMVC\src\main" />
170174
</key>
171175
</component>
172-
<component name="RunManager" selected="Gradle.KUIT6_Server-webMVC">
176+
<component name="RunManager" selected="Spring Boot.WebServerLauncher">
173177
<configuration default="true" type="Applet" factoryName="Applet">
174178
<module name="" />
175179
<option name="MAIN_CLASS_NAME" />
@@ -270,13 +274,22 @@
270274
<option name="BuildArtifacts" enabled="false" />
271275
</method>
272276
</configuration>
277+
<configuration name="WebServerLauncher" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
278+
<module name="org.example.java-webMVC.main" />
279+
<option name="SPRING_BOOT_MAIN_CLASS" value="WebServerLauncher" />
280+
<method v="2">
281+
<option name="Make" enabled="true" />
282+
</method>
283+
</configuration>
273284
<list>
274285
<item itemvalue="Application.WebServerLauncher" />
275286
<item itemvalue="Gradle.KUIT6_Server-webMVC" />
276287
<item itemvalue="JUnit.UserTest" />
288+
<item itemvalue="Spring Boot.WebServerLauncher" />
277289
</list>
278290
<recent_temporary>
279291
<list>
292+
<item itemvalue="Spring Boot.WebServerLauncher" />
280293
<item itemvalue="Application.WebServerLauncher" />
281294
<item itemvalue="JUnit.UserTest" />
282295
</list>
@@ -319,7 +332,7 @@
319332
<workItem from="1761813440661" duration="22235000" />
320333
<workItem from="1761983761744" duration="329000" />
321334
<workItem from="1762087694007" duration="8947000" />
322-
<workItem from="1762319002804" duration="6322000" />
335+
<workItem from="1762319002804" duration="10575000" />
323336
</task>
324337
<servers />
325338
</component>
Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
package core.jdbc;
2-
3-
import org.apache.commons.dbcp2.BasicDataSource;
4-
5-
import javax.sql.DataSource;
6-
import java.sql.Connection;
7-
import java.sql.SQLException;
8-
9-
public class ConnectionManager {
10-
private static final String DB_DRIVER = "org.h2.Driver";
11-
private static final String DB_URL = "jdbc:h2:~/jwp-basic";
12-
private static final String DB_USERNAME = "sa";
13-
private static final String DB_PW = "";
14-
15-
private static BasicDataSource ds;
16-
public static DataSource getDataSource() {
17-
if (ds == null) {
18-
ds = new BasicDataSource();
19-
ds.setDriverClassName(DB_DRIVER);
20-
ds.setUrl(DB_URL);
21-
ds.setUsername(DB_USERNAME);
22-
ds.setPassword(DB_PW);
23-
}
24-
return ds;
25-
}
26-
27-
public static Connection getConnection() { // DB의 커넥션 풀 중 커넥션 하나를 받아올 수 있음
28-
try {
29-
return getDataSource().getConnection();
30-
} catch (SQLException e) {
31-
throw new IllegalStateException(e);
32-
}
33-
}
34-
}
1+
//package core.jdbc;
2+
//
3+
//import org.apache.commons.dbcp2.BasicDataSource;
4+
//
5+
//import javax.sql.DataSource;
6+
//import java.sql.Connection;
7+
//import java.sql.SQLException;
8+
//
9+
//public class ConnectionManager {
10+
// private static final String DB_DRIVER = "org.h2.Driver";
11+
// private static final String DB_URL = "jdbc:h2:~/jwp-basic";
12+
// private static final String DB_USERNAME = "sa";
13+
// private static final String DB_PW = "";
14+
//
15+
// private static BasicDataSource ds;
16+
// public static DataSource getDataSource() {
17+
// if (ds == null) {
18+
// ds = new BasicDataSource();
19+
// ds.setDriverClassName(DB_DRIVER);
20+
// ds.setUrl(DB_URL);
21+
// ds.setUsername(DB_USERNAME);
22+
// ds.setPassword(DB_PW);
23+
// }
24+
// return ds;
25+
// }
26+
//
27+
// public static Connection getConnection() { // DB의 커넥션 풀 중 커넥션 하나를 받아올 수 있음
28+
// try {
29+
// return getDataSource().getConnection();
30+
// } catch (SQLException e) {
31+
// throw new IllegalStateException(e);
32+
// }
33+
// }
34+
//}
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package core.jdbc;
2-
3-
public class KeyHolder {
4-
private long id;
5-
6-
public void setId(long id) {
7-
this.id = id;
8-
}
9-
10-
public long getId() {
11-
return id;
12-
}
13-
}
1+
//package core.jdbc;
2+
//
3+
//public class KeyHolder {
4+
// private long id;
5+
//
6+
// public void setId(long id) {
7+
// this.id = id;
8+
// }
9+
//
10+
// public long getId() {
11+
// return id;
12+
// }
13+
//}
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package core.jdbc;
2-
3-
import java.sql.PreparedStatement;
4-
import java.sql.SQLException;
5-
6-
@FunctionalInterface
7-
public interface PreparedStatementSetter {
8-
void setParameters(PreparedStatement ps) throws SQLException;
9-
}
1+
//package core.jdbc;
2+
//
3+
//import java.sql.PreparedStatement;
4+
//import java.sql.SQLException;
5+
//
6+
//@FunctionalInterface
7+
//public interface PreparedStatementSetter {
8+
// void setParameters(PreparedStatement ps) throws SQLException;
9+
//}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package core.jdbc;
2-
3-
import jwp.model.User;
4-
5-
import java.sql.ResultSet;
6-
import java.sql.SQLException;
7-
8-
@FunctionalInterface
9-
public interface RowMapper<T> {
10-
T mapRow(ResultSet rs) throws SQLException;
11-
12-
}
1+
//package core.jdbc;
2+
//
3+
//import jwp.model.User;
4+
//
5+
//import java.sql.ResultSet;
6+
//import java.sql.SQLException;
7+
//
8+
//@FunctionalInterface
9+
//public interface RowMapper<T> {
10+
// T mapRow(ResultSet rs) throws SQLException;
11+
//
12+
//}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package jwp.controller;
2-
3-
import javax.servlet.ServletException;
4-
import javax.servlet.http.HttpServletRequest;
5-
import javax.servlet.http.HttpServletResponse;
6-
import java.io.IOException;
7-
import java.sql.SQLException;
8-
9-
public interface Controller {
10-
String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException;
11-
}
1+
//package jwp.controller;
2+
//
3+
//import javax.servlet.ServletException;
4+
//import javax.servlet.http.HttpServletRequest;
5+
//import javax.servlet.http.HttpServletResponse;
6+
//import java.io.IOException;
7+
//import java.sql.SQLException;
8+
//
9+
//public interface Controller {
10+
// String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException;
11+
//}
Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package jwp.controller;
22

3-
import jwp.dao.QuestionDao;
3+
44
import jwp.model.Question;
55
import jwp.model.User;
6+
import jwp.service.QuestionService;
67
import jwp.support.session.UserSessionUtils;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RequestParam;
713

814
import javax.servlet.ServletException;
915
import javax.servlet.http.HttpServletRequest;
@@ -12,27 +18,20 @@
1218
import java.io.IOException;
1319
import java.sql.SQLException;
1420

15-
public class CreateQuestionController implements Controller {
16-
private final QuestionDao questionDao = new QuestionDao();
17-
18-
@Override
19-
public String execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, SQLException {
20-
if (!"POST".equalsIgnoreCase(req.getMethod())) {
21-
return "redirect:/qna/form";
22-
}
23-
24-
HttpSession session = req.getSession(false);
25-
if (!UserSessionUtils.isLogined(session)) {
21+
@Controller
22+
@RequestMapping("/qna")
23+
@RequiredArgsConstructor
24+
public class CreateQuestionController{
25+
private final QuestionService questionService;
26+
@PostMapping("/create")
27+
public String createQuestion(@RequestParam String title,
28+
@RequestParam String contents,
29+
HttpSession session) {
30+
User user = UserSessionUtils.getUserFromSession(session);
31+
if (user == null) {
2632
return "redirect:/user/loginForm";
2733
}
28-
29-
User user = UserSessionUtils.getUserFromSession(session);
30-
String title = req.getParameter("title");
31-
String contents = req.getParameter("contents");
32-
33-
Question newQuestion = new Question(null, user.getUserId(), title, contents, null, 0);
34-
questionDao.insert(newQuestion);
35-
34+
questionService.createQuestion(user.getUserId(), title, contents);
3635
return "redirect:/";
3736
}
3837
}

src/main/java/jwp/controller/CreateQuestionFormController.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
package jwp.controller;
22

33
import jwp.support.session.UserSessionUtils;
4+
import org.springframework.stereotype.Controller;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.RequestMapping;
47

5-
import javax.servlet.ServletException;
6-
import javax.servlet.http.HttpServletRequest;
7-
import javax.servlet.http.HttpServletResponse;
88
import javax.servlet.http.HttpSession;
9-
import java.io.IOException;
109

11-
public class CreateQuestionFormController implements Controller {
10+
@Controller
11+
@RequestMapping("/qna")
12+
public class CreateQuestionFormController {
1213

13-
@Override
14-
public String execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
15-
HttpSession session = req.getSession();
14+
@GetMapping("/form")
15+
public String showForm(HttpSession session) {
1616
if (UserSessionUtils.isLogined(session)) {
17-
return "/qna/form.jsp";
17+
return "qna/form.jsp";
1818
}
1919
return "redirect:/user/loginForm";
2020
}

0 commit comments

Comments
 (0)