note

Spring DB 연동 회원가입 JdbcTemplate 본문

JSP/Spring

Spring DB 연동 회원가입 JdbcTemplate

투한 2012. 3. 8. 11:31





비어있는 설정파일

springExp.war

 






완성본

springExp.war











파일 위치

selectList.jsp 에러가 나는데 이클립스 인식오류 입니다
실행시 이상없음 





추가, 리스트


























수정 삭제

































dispatcher-servlet.xml



 	
 	
 	
 	
 	
 	
 		
 	
 	
 	
 	
 		
 	
 	
 	
 	
 	
 	
 	
 		
 	
 	
 	
    
   
		
			
				messages.label
				messages.validation
			
		
	
	
	
		
			
				exception
			
		
	
	
	
		
		
	







InsertController
package dr.mini.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import dr.mini.dao.MemberDao;
import dr.mini.domain.MemberCommand;
import dr.mini.validator.MemberValidator;

@Controller
public class InsertController {
	private MemberDao memberDao;
	private String formViewName = "insertForm";

	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}
	@RequestMapping(value="/insert.do",method=RequestMethod.GET)
	public String form(){
		return formViewName;
	}

	@ModelAttribute
	public MemberCommand formBacking(){
		return new MemberCommand();
	}
	@RequestMapping(value="/insert.do",method=RequestMethod.POST)
	public String submit(@Valid MemberCommand memberCommand,BindingResult result){
		if(result.hasErrors()){
			return formViewName;
		}
		memberDao.insertMember(memberCommand);		
		return "redirect:/list.do";
	}
	@InitBinder
	protected void initBinder(WebDataBinder binder){
		binder.setValidator(new MemberValidator());
	}
}







SelectListController
package dr.mini.controller;

import java.util.Collections;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import dr.mini.dao.MemberDao;
import dr.mini.domain.MemberCommand;

@Controller
public class SelectListController {

	private static Log log = LogFactory.getLog(SelectListController.class);

	private MemberDao memberDao;

	private int pageSize = 10; // 한페이지의 글의 개수

	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}

	@RequestMapping("/list.do")
	public ModelAndView process(
			@RequestParam(value = "pageNum", required = false) String pageNum) {

		if(pageNum == null){
			pageNum = "1";
		}
		int currentPage = Integer.parseInt(pageNum);
		//한 페이지의 시작글 번호
		int startRow = (currentPage - 1)* pageSize +1;
		//한 페이지의 마지막 글번호
		int endRow = currentPage * pageSize;
		
		if(log.isDebugEnabled()){
			log.debug("memberDao : "+memberDao);
		}
		int count = memberDao.getMemberCount();
		Listlist = null;
		if(count>0){
			list = memberDao.getMemberList(startRow,endRow);
		}else{
			list = Collections.emptyList();
		}
		ModelAndView mav = new ModelAndView();
		mav.setViewName("selectList");
		mav.addObject("count",count);
		mav.addObject("currentPage",currentPage);
		mav.addObject("pageSize",pageSize);
		mav.addObject("list",list);
		
		return mav;
	}
}







SelectController
package dr.mini.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;


import dr.mini.dao.MemberDao;
import dr.mini.domain.MemberCommand;

@Controller
public class SelectController {
	private static Log log = LogFactory.getLog(SelectController.class);

	private MemberDao memberDao;

	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}

	@RequestMapping("/detail.do")
	public ModelAndView process(@RequestParam("id") String id){
		if(log.isDebugEnabled()){
			log.debug("memberDao : "+memberDao);
		}
		MemberCommand member = memberDao.getMember(id);
		return new ModelAndView("select","member",member);
	}
}







UpdateController
package dr.mini.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import dr.mini.dao.MemberDao;
import dr.mini.domain.MemberCommand;
import dr.mini.validator.MemberValidator;

@Controller
public class UpdateController{

	private MemberDao memberDao;
	private String formViewName = "updateForm";

	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}

	@RequestMapping(value="/update.do", method=RequestMethod.GET)
	public ModelAndView form(@RequestParam("id") String id){
		MemberCommand memberCommand = memberDao.getMember(id);
		return new ModelAndView(formViewName, "memberCommand", memberCommand);
	}
	@ModelAttribute
	public MemberCommand formBacking() {
		return new MemberCommand();
	}
	@RequestMapping(value="/update.do", method=RequestMethod.POST)
	public String submit(@Valid MemberCommand memberCommand, BindingResult result){

		if(result.hasErrors()){
			return formViewName;
		}
		memberDao.updateMember(memberCommand);
		return "redirect:/list.do";
	}
	@InitBinder
	protected void initBinder(WebDataBinder binder){
		binder.setValidator(new MemberValidator());
	}
}











DeleteController
package dr.mini.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import dr.mini.dao.MemberDao;

@Controller
public class DeleteController{

	private MemberDao memberDao;

	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}
	@RequestMapping("/delete.do")
	public ModelAndView process(@RequestParam("id") String id){
		memberDao.deleteMember(id);
		return new ModelAndView("redirect:list.do");
	}
	
}











MemberDao
package dr.mini.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import dr.mini.domain.MemberCommand;

public class MemberDao {
	private JdbcTemplate jdbcTemplate;

	public MemberDao(DataSource dataSource) {
		jdbcTemplate = new JdbcTemplate(dataSource);
	}

	// 글 등록
	private static final String INSERT_SQL = "insert into MEMBER1 values (?,?,?,sysdate)";

	public void insertMember(MemberCommand member) {
		jdbcTemplate.update(
				INSERT_SQL,
				new Object[] { member.getId(), member.getPasswd(),
						member.getName() });
	}

	// 글의 총 갯수
	private static final String SELECT_COUNT_SQL = "select count(*) from MEMBER1";

	public int getMemberCount() {
		return jdbcTemplate.queryForInt(SELECT_COUNT_SQL);
	}

	// 글 목록
	private static final String SELECT_LIST_SQL = "select * from (select a.*, rownum rnum from (select * from MEMBER1 order by register desc)a) where rnum >= ? and rnum <=?";

	public List getMemberList(int startRow, int endRow) {
		List list = jdbcTemplate.query(SELECT_LIST_SQL,
				new Object[] { startRow, endRow },
				new RowMapper() {
			public MemberCommand mapRow(ResultSet rs, int rowNum)
					throws SQLException {
				MemberCommand member = new MemberCommand();
				member.setId(rs.getString("id"));
				member.setPasswd(rs.getString("passwd"));
				member.setName(rs.getString("name"));
				member.setRegister(rs.getTimestamp("register"));

				return member;
			}
		});
		return list;
	}

	//글 상세
	private static final String SELECT_SQL ="select * from MEMBER1 where id=?";

	public MemberCommand getMember(String id){
		MemberCommand member = (MemberCommand)jdbcTemplate.queryForObject(SELECT_SQL, new Object[]{ id }, new RowMapper(){
					public MemberCommand mapRow(ResultSet rs, int rowNum)throws SQLException{
						MemberCommand member = new MemberCommand();
						member.setId(rs.getString("id"));
						member.setPasswd(rs.getString("passwd"));
						member.setName(rs.getString("name"));
						member.setRegister(rs.getTimestamp("register"));

						return member;
					}
				});
		return member;
	}
	
	
	
}



익명 내부 클래스의 형태로 사용 





MemberCommand
package dr.mini.domain;

import java.sql.Timestamp;

public class MemberCommand{
	private String id;
	private String passwd;
	private String name;
	private Timestamp register;
	
	public String getId() {
		return id;
	} 
	public void setId(String id) {
		this.id = id;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Timestamp getRegister() {
		return register;
	}
	public void setRegister(Timestamp register) {
		this.register = register;
	}
	@Override
	public String toString() {
		return "Member [id=" + id + ", name=" + name + ", passwd=" + passwd
				+ ", reg_date=" + register + "]";
	}
	
}







MemberValidator
package dr.mini.validator;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import dr.mini.domain.MemberCommand;

public class MemberValidator implements Validator {

	public boolean supports(Class clazz) {
		return MemberCommand.class.isAssignableFrom(clazz);
	}

	public void validate(Object target, Errors errors) {
		MemberCommand command = (MemberCommand) target;
		System.out.println(command);
		ValidationUtils.rejectIfEmptyOrWhitespace(errors,"id", "error.required.member.id");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors,"passwd", "error.required.member.passwd");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors,"name", "error.required.member.name");
	}
}







deleteForm.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<<span class="hljs-attribute">spring</span>:message code=<span class="hljs-string">"member.delete.title"</span>/>

  

member1 테이블에 레코드 삭제 예제







exception.jsp
<%@ page contentType="text/html; charset=EUC-KR" %>



에러


요청을 처리하는 과정에서 문제가 발생했습니다:
${exception.message}
<%
Throwable exception = (Throwable) request.getAttribute("exception");
exception.printStackTrace();
%>








insertForm.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<span class="hljs-operator"><</span>spring:message code<span class="hljs-operator">=</span><span class="hljs-string">"member.insert.title"</span><span class="hljs-operator">/></span>

  

member1 테이블에 레코드삽입(추가)예제

아이디 :
패스워드 :
이름:






select.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:message code=<span class="hljs-string">"member.detail.title"</span> arguments=<span class="hljs-string">"<span class="hljs-variable">${member.id }</span>"</span> />

    아이디 : ${member.id }

패스워드 : ${member.passwd }

이름:${member.name }

날짜:

목록보기 | 수정 | 삭제






selectList.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<<span class="hljs-attribute">spring</span>:message code=<span class="hljs-string">"member.list.title"</span>/>

  

회원목록

출력할 리스트가 없습니다. 등록
등록
아이디 패스워드 이름 가입일자
${member.id } ${member.passwd } ${member.name }


selectList.jsp가 에러가 나지만 이클립스 오류이다





updateForm.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


     <<span class="hljs-attribute">spring</span>:message code=<span class="hljs-string">"member.update.title"</span> />


  

member1 테이블에 레코드 수정 예제

아이디 : ${memberCommand.id}

패스워드 :

이름:




공통 작업을 할경우에 공유 할수 있는 정보는 applicationContext.xml에 명시한다

 
JdbcTemplate 에서 주로 사용하는 메소드는 update(insert delete update) 한건의 레코드는 queryForObject

?의 문자열을 넘길때는 Object[] 배열을 이용

 
단지 목록을 처리할때 한건의 레코드는 RowMapper를 사용