diff --git a/.springBeans b/.springBeans
index 4d9eb32..4558973 100644
--- a/.springBeans
+++ b/.springBeans
@@ -1,13 +1,17 @@
1
-
+
+
+ src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
+ src/main/webapp/WEB-INF/spring/root-context.xml
+
diff --git a/pom.xml b/pom.xml
index fecd7ef..674e4f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,145 +1,112 @@
-
- 4.0.0
- com.shoppingmall
- biz
- ShoppingMall
- war
- 1.0.0-BUILD-SNAPSHOT
-
- 1.6
- 3.1.1.RELEASE
- 1.6.10
- 1.6.6
-
-
-
-
- org.springframework
- spring-context
- ${org.springframework-version}
-
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.springframework
- spring-webmvc
- ${org.springframework-version}
-
-
-
-
- org.aspectj
- aspectjrt
- ${org.aspectj-version}
-
-
-
-
- org.slf4j
- slf4j-api
- ${org.slf4j-version}
-
-
- org.slf4j
- jcl-over-slf4j
- ${org.slf4j-version}
- runtime
-
-
- org.slf4j
- slf4j-log4j12
- ${org.slf4j-version}
- runtime
-
-
- log4j
- log4j
- 1.2.15
-
-
- javax.mail
- mail
-
-
- javax.jms
- jms
-
-
- com.sun.jdmk
- jmxtools
-
-
- com.sun.jmx
- jmxri
-
-
- runtime
-
+
+ 4.0.0
+ com.shoppingmall
+ biz
+ ShoppingMall
+ war
+ 1.0.0-BUILD-SNAPSHOT
+
+ 1.8
+ 5.3.23
+ 1.9.9.1
+ 1.7.36
+ 4.13.2
+
+
+
+
+ org.springframework
+ spring-jdbc
+ 5.3.24
+
-
-
- javax.inject
- javax.inject
- 1
-
-
-
-
- javax.servlet
- servlet-api
- 2.5
- provided
-
-
- javax.servlet.jsp
- jsp-api
- 2.1
- provided
-
-
- javax.servlet
- jstl
- 1.2
-
-
-
-
- junit
- junit
- 4.7
- test
-
-
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+
+
+
+
+ org.aspectj
+ aspectjrt
+ ${aspectj.version}
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ org.slf4j
+ jcl-over-slf4j
+ ${slf4j.version}
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j.version}
+
+
+ log4j
+ log4j
+ 1.2.17
+
+
+
+
+ javax.inject
+ javax.inject
+ 1
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+ provided
+
+
+ javax.servlet
+ javax.servlet.jsp-api
+ 2.3.1
+ provided
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
-
- maven-eclipse-plugin
- 2.9
-
-
- org.springframework.ide.eclipse.core.springnature
-
-
- org.springframework.ide.eclipse.core.springbuilder
-
- true
- true
-
-
org.apache.maven.plugins
maven-compiler-plugin
- 2.5.1
+ 3.8.1
- 1.6
- 1.6
+ ${java.version}
+ ${java.version}
-Xlint:all
true
true
@@ -148,7 +115,7 @@
org.codehaus.mojo
exec-maven-plugin
- 1.2.1
+ 1.6.0
org.test.int1.Main
diff --git a/src/main/java/com/miniproject/user/UserService.java b/src/main/java/com/miniproject/user/UserService.java
new file mode 100644
index 0000000..911d80c
--- /dev/null
+++ b/src/main/java/com/miniproject/user/UserService.java
@@ -0,0 +1,6 @@
+package com.miniproject.user;
+
+public interface UserService {
+ UserVO loginUser(String id, String pass);
+ boolean registerUser(UserVO user);
+}
diff --git a/src/main/java/com/miniproject/user/UserSservice.java b/src/main/java/com/miniproject/user/UserSservice.java
deleted file mode 100644
index ff8c8fc..0000000
--- a/src/main/java/com/miniproject/user/UserSservice.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.miniproject.user;
-
-public interface UserSservice {
-
-}
diff --git a/src/main/java/com/miniproject/user/UserVO.java b/src/main/java/com/miniproject/user/UserVO.java
index 5d90a03..aae7976 100644
--- a/src/main/java/com/miniproject/user/UserVO.java
+++ b/src/main/java/com/miniproject/user/UserVO.java
@@ -1,5 +1,15 @@
package com.miniproject.user;
-public class UserVO {
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class UserVO {
+ private String id;
+ private String pass;
+ private String name;
+ private String phone;
+ private String nickname;
}
diff --git a/src/main/java/com/miniproject/user/controller/JoinController.java b/src/main/java/com/miniproject/user/controller/JoinController.java
new file mode 100644
index 0000000..fb3efa4
--- /dev/null
+++ b/src/main/java/com/miniproject/user/controller/JoinController.java
@@ -0,0 +1,37 @@
+package com.miniproject.user.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.miniproject.user.UserService;
+import com.miniproject.user.UserVO;
+
+@Controller
+@RequestMapping("/user")
+public class JoinController {
+
+ private final UserService userService;
+
+ @Autowired
+ public JoinController(UserService userService) {
+ this.userService = userService;
+ }
+
+ @RequestMapping(value = "/join.do", method = RequestMethod.GET)
+ public String showJoinForm() {
+ return "join"; // 회원가입 폼을 보여줍니다.
+ }
+
+ @RequestMapping(value = "/join.do", method = RequestMethod.POST)
+ public String join(UserVO user) {
+ boolean isRegistered = userService.registerUser(user);
+ if (isRegistered) {
+ return "redirect:/user/login.do"; // 회원가입 성공 후 로그인 페이지로 리다이렉트
+ } else {
+ return "join"; // 회원가입 실패 시 다시 회원가입 페이지로
+ }
+ }
+}
diff --git a/src/main/java/com/miniproject/user/controller/LoginController.java b/src/main/java/com/miniproject/user/controller/LoginController.java
new file mode 100644
index 0000000..3c923b0
--- /dev/null
+++ b/src/main/java/com/miniproject/user/controller/LoginController.java
@@ -0,0 +1,38 @@
+// LoginController.java
+package com.miniproject.user.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.miniproject.user.UserService;
+import com.miniproject.user.UserVO;
+
+@Controller
+@RequestMapping("/user")
+public class LoginController {
+
+ private final UserService userService;
+
+ @Autowired
+ public LoginController(UserService userService) {
+ this.userService = userService;
+ }
+
+ @RequestMapping(value = "/login.do", method = RequestMethod.GET)
+ public String showLoginForm() {
+ return "login"; // 로그인 폼을 보여줍니다.
+ }
+
+ @RequestMapping(value = "/login.do", method = RequestMethod.POST)
+ public ModelAndView login(String id, String pass) {
+ UserVO user = userService.loginUser(id, pass);
+ if (user != null) {
+ return new ModelAndView("index", "user", user); // 로그인 성공 후 index.jsp로 이동
+ } else {
+ return new ModelAndView("login", "message", "Invalid credentials"); // 로그인 실패
+ }
+ }
+}
diff --git a/src/main/java/com/miniproject/userImpl/UserDAO.java b/src/main/java/com/miniproject/userImpl/UserDAO.java
index 5f3f06a..f609575 100644
--- a/src/main/java/com/miniproject/userImpl/UserDAO.java
+++ b/src/main/java/com/miniproject/userImpl/UserDAO.java
@@ -1,39 +1,48 @@
package com.miniproject.userImpl;
-import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Servlet implementation class UserDAO
- */
-public class UserDAO extends HttpServlet {
- private static final long serialVersionUID = 1L;
-
- /**
- * @see HttpServlet#HttpServlet()
- */
- public UserDAO() {
- super();
- // TODO Auto-generated constructor stub
+import com.miniproject.user.UserVO;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import javax.sql.DataSource;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import org.springframework.dao.EmptyResultDataAccessException;
+
+@Repository
+public class UserDAO {
+
+ private final JdbcTemplate jdbcTemplate;
+
+ public UserDAO(DataSource dataSource) {
+ this.jdbcTemplate = new JdbcTemplate(dataSource);
}
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- response.getWriter().append("Served at: ").append(request.getContextPath());
- }
-
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doGet(request, response);
- }
+ public UserVO selectUserByIdAndPassword(String id, String pass) {
+ String sql = "SELECT * FROM users WHERE id = ? AND pass = ?";
+ try {
+ return jdbcTemplate.queryForObject(sql, new Object[]{id, pass}, new UserRowMapper());
+ } catch (EmptyResultDataAccessException e) {
+ return null;
+ }
+ }
+
+ public boolean insertUser(UserVO user) {
+ String sql = "INSERT INTO users (id, pass, name, phone, nickname) VALUES (?, ?, ?, ?, ?)";
+ int rowsAffected = jdbcTemplate.update(sql, user.getId(), user.getPass(), user.getName(), user.getPhone(), user.getNickname());
+ return rowsAffected > 0;
+ }
+ private static class UserRowMapper implements RowMapper {
+ @Override
+ public UserVO mapRow(ResultSet rs, int rowNum) throws SQLException {
+ UserVO user = new UserVO();
+ user.setId(rs.getString("id"));
+ user.setName(rs.getString("name"));
+ user.setPhone(rs.getString("phone"));
+ user.setNickname(rs.getString("nickname"));
+ return user;
+ }
+ }
}
diff --git a/src/main/java/com/miniproject/userImpl/UserServiceImpl.java b/src/main/java/com/miniproject/userImpl/UserServiceImpl.java
index c594bfa..230fd2c 100644
--- a/src/main/java/com/miniproject/userImpl/UserServiceImpl.java
+++ b/src/main/java/com/miniproject/userImpl/UserServiceImpl.java
@@ -1,39 +1,33 @@
package com.miniproject.userImpl;
-import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
-/**
- * Servlet implementation class UserServiceImpl
- */
-public class UserServiceImpl extends HttpServlet {
- private static final long serialVersionUID = 1L;
-
- /**
- * @see HttpServlet#HttpServlet()
- */
- public UserServiceImpl() {
- super();
- // TODO Auto-generated constructor stub
- }
+import com.miniproject.user.UserService;
+import com.miniproject.user.UserVO;
+
+@Service
+public class UserServiceImpl implements UserService {
+ private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
+
+ private final UserDAO userDAO;
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- response.getWriter().append("Served at: ").append(request.getContextPath());
- }
+ @Autowired
+ public UserServiceImpl(UserDAO userDAO) {
+ this.userDAO = userDAO;
+ }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doGet(request, response);
- }
+ @Override
+ public UserVO loginUser(String id, String pass) {
+ logger.info("Logging in user with id: {}", id);
+ return userDAO.selectUserByIdAndPassword(id, pass);
+ }
+ @Override
+ public boolean registerUser(UserVO user) {
+ logger.info("Registering user with id: {}", user.getId());
+ return userDAO.insertUser(user);
+ }
}
diff --git a/src/main/resources/config/datasource.properties b/src/main/resources/config/datasource.properties
new file mode 100644
index 0000000..8efb6a1
--- /dev/null
+++ b/src/main/resources/config/datasource.properties
@@ -0,0 +1,4 @@
+jdbc.driver=oracle.jdbc.driver.OracleDriver
+jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
+jdbc.username=miniproject
+jdbc.password=1234
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml b/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
index bd85171..1a3ae9d 100644
--- a/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
+++ b/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml
@@ -1,29 +1,26 @@
-
+
-
-
-
-
+
+
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/main/webapp/join.jsp b/src/main/webapp/join.jsp
index 4aa69fd..13eb06b 100644
--- a/src/main/webapp/join.jsp
+++ b/src/main/webapp/join.jsp
@@ -121,24 +121,28 @@ body {
-
-
ID
-
-
-
PASSWORD
-
-
-
NAME
-
-
-
NICKNAME
-
-
-
CONTACT
-
-
-
+
+