- JAVA 프로젝트
1. /WEB-INF/views/user/modify.jsp 페이지 설정
1.1 modelAttribute는 modifyUserBean으로 설정
컨트롤러에서 UserBean을 modifyUserBean에 주입해서 넘겨주기 때문에
UserBean의 필드명과 form input 의 name 값이 같다면 form input에 value속성을 지정하지 않아도 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<c:set var="root" value="${pageContext.request.contextPath }/" />
<!DOCTYPE html>
...
<form:form action="${root }user/modify_pro" method="post" modelAttribute="modifyUserBean">
<div class="form-group">
<form:label path="user_name">이름</form:label>
<form:input path="user_name" class="form-control" readonly="true" />
</div>
<div class="form-group">
<form:label path="user_id">아이디</form:label>
<form:input path="user_id" class="form-control" readonly="true" />
</div>
<div class="form-group">
<form:label path="user_pw">비밀번호</form:label>
<form:password path="user_pw" class="form-control" />
<form:errors path="user_pw" style="color:red" />
</div>
<div class="form-group">
<form:label path="user_pw2">비밀번호 확인</form:label>
<form:password path="user_pw2" class="form-control" />
<form:errors path="user_pw2" style="color:red" />
</div>
<div class="form-group">
<div class="text-right">
<form:button class="btn btn-primary">정보수정</form:button>
</div>
</div>
</form:form>
2. Controller에서의 view 페이지 설정
@Controller
@RequestMapping("/user")
public class UserController {
...
@GetMapping("/join")
public String join(@ModelAttribute("joinUserBean") UserBean joinUserBean) {
return "user/join";
}
3. 정보수정 Mapper 설정
유저의 정보 조회와 수정 처리 쿼리문을 작성 해준다.
package com.example.mapper;
...
public interface UserMapper {
...
@Select("select user_id, user_name " +
"from user_table " +
"where user_idx = #{user_idx}")
UserBean getModifyUserInfo(int user_idx);
@Update("update user_table " +
"set user_pw = #{user_pw} " +
"where user_idx = #{user_idx}")
void modifyUserInfo(UserBean modifyUserBean);
}
4. DAO 설정
@Repository
public class UserDao {
@Autowired
private UserMapper userMapper;
...
public UserBean getModifyUserInfo(int user_idx) {
return userMapper.getModifyUserInfo(user_idx);
}
public void modifyUserInfo(UserBean modifyUserBean) {
userMapper.modifyUserInfo(modifyUserBean);
}
5. 서비스에서 다오 주입 후 컨트롤러 셋팅
컨트롤러에서 modifyUserBean이라는 이름으로 Bean을 주입 받았기 때문에 modifyUserBean에 데이터를 담아야지만
form에서 보여줄 수 있다.
그렇기 때문에 서비스로 modifyUserBean객체를 그대로 넘겨 준다.
public class UserController {
...
@GetMapping("/modify")
public String modify(@ModelAttribute("modifyUserBean") UserBean modifyUserBean) {
userService.getModifyUserInfo(modifyUserBean);
return "/user/modify";
}
서비스에서는 getModifyUserInfo에서 컨트롤러부터 전달받은 modifyUserBean에 값을 담아주기만 하면 된다.
package com.example.service;
...
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Resource(name = "loginUserBean")
private UserBean loginUserBean;
...
public void getModifyUserInfo(UserBean modifyUserBean) {
UserBean tempModifyUserBean = userDao.getModifyUserInfo(loginUserBean.getUser_idx());
modifyUserBean.setUser_id(tempModifyUserBean.getUser_id());
modifyUserBean.setUser_name(tempModifyUserBean.getUser_name());
modifyUserBean.setUser_idx(loginUserBean.getUser_idx());
}
public void modifyUserInfo(UserBean modifyUserBean) {
modifyUserBean.setUser_idx(loginUserBean.getUser_idx());
userDao.modifyUserInfo(modifyUserBean);
}
}
6. 컨트롤러에서 form 데이터 전달 받아 처리할 메서드 설정
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Resource(name = "loginUserBean")
private UserBean loginUserBean;
...
@PostMapping("/modify_pro")
public String modify_pro(@Valid @ModelAttribute("modifyUserBean") UserBean modifyUserBean, BindingResult result) {
if(result.hasErrors()) {
return "user/modify";
}
userService.modifyUserInfo(modifyUserBean);
return "user/modify_success";
}
7. 오류메시지 설정
데이터를 주고 받는 ModelAttribute의 modifyUserBean에 대한 오류 메시지를 설정.
8. Validator에서 modifyUserBean에 대한 조건을 설정.
package com.example.validator;
...
public class UserValidator implements Validator{
@Override
public boolean supports(Class<?> clazz) {
// TODO Auto-generated method stub
return UserBean.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
// TODO Auto-generated method stub
UserBean userBean = (UserBean) target;
String beanName = errors.getObjectName();
if (beanName.equals("joinUserBean") || beanName.equals("modifyUserBean")) {
if (userBean.getUser_pw().equals(userBean.getUser_pw2()) == false) {
errors.rejectValue("user_pw", "NotEquals");
errors.rejectValue("user_pw2", "NotEquals");
}
}
if (beanName.equals("joinUserBean")) {
if (userBean.isUserIdExist() == false) {
errors.rejectValue("user_id", "DontCheckUserIdExist");
}
}
}
}
9. 수정 성공 시 페이지 셋팅
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="root" value="${pageContext.request.contextPath }/" />
<script>
alert("수정 되었습니다.");
location.href="${root}user/modify";
</script>
-XML 프로젝트
자바 프로젝트 설정과 다른 것만 기록을 해본다.
1. 매퍼 설정
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
...
<select id="getModifyUserInfo" parameterType="java.lang.Integer" resultType="com.example.beans.UserBean">
<![CDATA[
select user_id, user_name
from user_table
where user_idx = #{user_idx}
]]>
</select>
<update id="modifyUserInfo" parameterType="com.example.beans.UserBean">
<![CDATA[
update user_table
set user_pw = #{user_pw}
where user_idx = #{user_idx}
]]>
</update>
</mapper>
2. DAO 설정
package com.exmaple.dao;
...
@Repository
public class UserDao {
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
...
public UserBean getModifyUserInfo(int user_idx) {
return sqlSessionTemplate.selectOne("user.getModifyUserInfo", user_idx);
}
public void modifyUserInfo(UserBean modifyUserBean) {
sqlSessionTemplate.update("user.modifyUserInfo", modifyUserBean);
}
}
'프로젝트 > [SPRING MVC] 회원 관리' 카테고리의 다른 글
[SPRING MVC] 글 목록 구현하기 (0) | 2022.05.24 |
---|---|
[SPRING MVC] 로그인 확인 처리(URL 직접 입력 접속 방지) (0) | 2022.05.21 |
[SPRING MVC] 로그아웃 그리고 로그인 시 메뉴 전 후 처리 (0) | 2022.05.20 |
[SPRING MVC] 로그인 처리 (0) | 2022.05.20 |
[SPRING MVC] 회원가입 저장 처리 (0) | 2022.05.19 |