- 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);
	}
}

 

+ Recent posts