스프링

 

 

 

Restful) Spring form tag를 이용하여 PUT,DELETE 사용하기

SPRING MVC 

 

class UserController

 

	@RequestMapping("{uid}/form")
	public String updateForm(@PathVariable("uid") String userId, Model model, HttpSession session){
				
		if(userId ==null){
			throw new IllegalArgumentException("사용자 아이디가 필요합니다.");
		}
		
		User temp =(User)session.getAttribute("user");
		if(temp==null){
			throw new NullPointerException();
		}
		
		User user1=new User();
		user1.setUserId(userId);
		if(!user1.matchUserId(temp.getUserId())){
			throw new NullPointerException();
		}
		
		User user =userDao.findById(userId);
		model.addAttribute("user", user);
		return "users/form";
	}
	
	
	@RequestMapping(value="", method=RequestMethod.PUT)
	public String update(@Valid User user, Model model, BindingResult bindingResult , HttpSession session){
		logger.debug("User : {} " , user);
		if(bindingResult.hasErrors()){
			logger.debug("Binding Result has error!");
			List<ObjectError> errors=bindingResult.getAllErrors();
			for(ObjectError error : errors){
				logger.debug("error : {}, {}", error.getCode(), error.getDefaultMessage());
			}
			model.addAttribute("user", user);
			return "users/form";
		}
		
		User temp =(User)session.getAttribute("user");
		if(temp==null){
			throw new NullPointerException();
		}
		
		if(!user.matchUserId(temp.getUserId())){
			throw new NullPointerException();
		}
		
		
		userDao.update(user);
		logger.debug("Database : {} " , userDao.findById(user.getUserId()));
		return "redirect:/";
	}
	

 

 

 

web.xml

<filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <servlet-name>appServlet</servlet-name>
</filter-mapping>
	
	
	
	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

 

class User

	public boolean matchUserId(String userId2) {
		return this.userId.equals(userId2);
	}	
    

 

 

class UserDao

	public void update(User user) {
		String sql =" update USERS set password = ? , name=?, email=? where userId=? ";
		getJdbcTemplate().update(sql, user.getPassword(),  user.getName(), user.getEmail(), user.getUserId());
	}
	

 

 

form.jsp

         
          
          <form:form name="question" method="${method}" action="/users"    modelAttribute="user">
                <div class="form-group">
                    <label for="userId">사용자 아이디</label>
                    <c:choose>
	                  <c:when test="${ empty user.userId }">
	                    <form:input path="userId" cssClass="form-control" name="userId"/>
	                    <form:errors path="userId" />
	                  </c:when>
	                  <c:otherwise>
	                  	<p>${user.userId }</p>
	       				<form:hidden path="userId"  value="${user.userId }" />
	                  </c:otherwise>
                    </c:choose>
                </div>
                <div class="form-group">
                    <label for="password">비밀번호</label>
                  <!--   <input type="password" class="form-control" id="password" name="password" placeholder="Password"> -->
                    <form:password path="password" cssClass="form-control" name="password"/>
                    <form:errors path="password" />
                </div>
                <div class="form-group">
                    <label for="name">이름</label>
                  <!--   <input class="form-control" id="name" name="name" placeholder="Name"> -->
                    <form:input path="name" cssClass="form-control" name="name"/>
                    <form:errors path="name" />
                </div>
                <div class="form-group">
                    <label for="email">이메일</label>
                   <!--  <input type="email" class="form-control" id="email" name="email" placeholder="Email"> -->
                    <form:input path="email" cssClass="form-control" name="email"/>
                    <form:errors path="email" />
                </div>
                <c:choose>
                	<c:when test="${ empty user.userId }">
                	<button type="submit" class="btn btn-success clearfix pull-right">회원가입</button>
                	</c:when>
                	<c:otherwise>
                	<button type="submit" class="btn btn-success clearfix pull-right">정보수정</button>
                	</c:otherwise>
                </c:choose>
                
                <div class="clearfix" ></div>
            </form:form>

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

의무의 이행이 없으면 성장이 없다. -생텍쥐페리

댓글 ( 4)

댓글 남기기

작성