티스토리 뷰
SpringMVC + ibatis // SpringConfig를 Multi // Annotation // Ajax + spring(xml/annotation) // mybatis 순으로 남은 2일동안 강의 진행
XML 설정을 이용한 개발 부분
config package
customer.xml
1 2 3 4 5 6 7 8 9 10 11 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="customer"> <select id="find" resultClass="hashmap"> select * from customer where ssn=#value# </select> <select id="findCustomerBySsn" resultClass="model.CustomerVO"> SELECT * FROM CUSTOMER WHERE ssn = #value# </select> </sqlMap> |
member.xml
1 2 3 4 5 6 7 8 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="member"> <select id="findMemberById" resultClass="hashmap"> SELECT * FROM MEMBER WHERE ID = #value# </select> </sqlMap> |
SqlMapConfig.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!-- 여러 sql 정의 xml 을 구분해서 사용하기 위해 네임 스페이스를 사용한다. --> <settings useStatementNamespaces="true"/> <!-- spring에서 dbcp 정보를 di하므로 필요없음. --> <!-- SQL 정의 XML을 링크 --> <sqlMap resource="config/member.xml"/> <sqlMap resource="config/customer.xml"/> </sqlMapConfig> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.CustomerService; import model.CustomerVO; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class CustomerController extends MultiActionController { private CustomerService customerService; public CustomerController(CustomerService customerService) { super(); this.customerService = customerService; System.out.println("controller injection..."+customerService); } public ModelAndView findCustomer(HttpServletRequest request, HttpServletResponse response, CustomerVO cvo) throws Exception{ String ssn = cvo.getSsn(); CustomerVO vo = customerService.findCustomerBySsn(ssn); ModelAndView mav = new ModelAndView(); if(vo != null){ mav.setViewName("find_ok"); mav.addObject("info", vo); }else{ mav.setViewName("find_fail"); } return mav; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.MemberService; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class MemberController extends MultiActionController { private MemberService memberService; public MemberController(MemberService memberService) { super(); this.memberService = memberService; System.out.println("controller injection..."+memberService); } public ModelAndView findMemberById(HttpServletRequest request, HttpServletResponse response) throws Exception{ String id = request.getParameter("id"); Map map = memberService.findMemberById(id); ModelAndView mav = new ModelAndView(); mav.setViewName("member_result"); if(map == null){ mav.addObject("info","찾는 회원 없음"); }else{ mav.addObject("info",map.toString()); } return mav; } } |
1 2 3 4 5 6 7 8 9 | package model; import org.springframework.orm.ibatis.SqlMapClientTemplate; public interface CustomerDao { public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate); public CustomerVO findCustomerBySsn(String ssn) throws Exception; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package model; import org.springframework.orm.ibatis.SqlMapClientTemplate; public class CustomerDaoImpl implements CustomerDao { private SqlMapClientTemplate sqlMapClientTemplate; @Override public void setSqlMapClientTemplate( SqlMapClientTemplate sqlMapClientTemplate) { this.sqlMapClientTemplate = sqlMapClientTemplate; System.out.println("dao injection..."+sqlMapClientTemplate); } @Override public CustomerVO findCustomerBySsn(String ssn) throws Exception { return (CustomerVO) sqlMapClientTemplate.queryForObject("customer.findCustomerBySsn", ssn); } } |
1 2 3 4 5 6 7 | package model; public interface CustomerService { public void setCustomerDao(CustomerDao customerDao); public CustomerVO findCustomerBySsn(String ssn) throws Exception; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package model; public class CustomerServiceImpl implements CustomerService { private CustomerDao customerDao; @Override public void setCustomerDao(CustomerDao customerDao) { this.customerDao = customerDao; System.out.println("service injection..."+customerDao); } @Override public CustomerVO findCustomerBySsn(String ssn) throws Exception { return customerDao.findCustomerBySsn(ssn); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package model; public class CustomerVO { private String ssn; private String name; private String address; public String getSsn() { return ssn; } public void setSsn(String ssn) { this.ssn = ssn; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "CustomerVO [ssn=" + ssn + ", name=" + name + ", address=" + address + "]"; } } |
1 2 3 4 5 6 7 8 9 10 11 | package model; import java.util.Map; import org.springframework.orm.ibatis.SqlMapClientTemplate; public interface MemberDao { public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate); public Map findMemberById(String id) throws Exception; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package model; import java.util.Map; import org.springframework.orm.ibatis.SqlMapClientTemplate; public class MemberDaoImpl implements MemberDao { private SqlMapClientTemplate sqlMapClientTemplate; @Override public void setSqlMapClientTemplate( SqlMapClientTemplate sqlMapClientTemplate) { this.sqlMapClientTemplate = sqlMapClientTemplate; } @Override public Map findMemberById(String id) throws Exception { // TODO Auto-generated method stub return (Map) sqlMapClientTemplate.queryForObject("member.findMemberById", id); } } |
1 2 3 4 5 6 7 8 9 | package model; import java.util.Map; public interface MemberService { public void setMemberDao(MemberDao memberDao) throws Exception; public Map findMemberById(String id) throws Exception; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package model; import java.util.Map; public class MemberServiceImpl implements MemberService { private MemberDao memberDao; @Override public void setMemberDao(MemberDao memberDao) throws Exception { this.memberDao = memberDao; System.out.println("di..."+memberDao); } @Override public Map findMemberById(String id) throws Exception { return memberDao.findMemberById(id); } } |
WEB-INF 아래
member.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd" > <!-- Member 관련 설정 MemberDaoImpl 정의시 sqlMapClientTemplate 주입 MemberServiceImpl 주입시 MemberDaoImpl bean 주입 MemberController 정의시 생성자에서 memberServiceImpl 주입 setter 즉 rpoperty로 methodNameResolver를 주입 주의) bean name="/member.do" --> <bean id="memberDao" class="model.MemberDaoImpl"> <property name="sqlMapClientTemplate" ref="sqlMapClientTemplate"></property> </bean> <bean id="memberService" class="model.MemberServiceImpl"> <property name="memberDao" ref="memberDao"></property> </bean> <bean name="/member.do" class="controller.MemberController"> <constructor-arg> <ref bean="memberService"/> </constructor-arg> <property name="methodNameResolver" ref="methodNameResolver"></property> </bean> </beans> |
mvc.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd" > <!-- HandlerMapping : 클라이언트 요청에 대응하는 컨트롤러 매핑 --> <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> </bean> <!-- ViewResolver : 컨트롤러 수행 후 view 를 찾는 방식에 대한 정의 ModelAndView -> ok 로 셋팅하면 /ok.jsp 를 찾는다. --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- MultiActionController에서 주입받아 사용한다. customer.do?command=find로 요청할 경우 Controller의 find() method가 대응되어 실행하기 위해 설정한다. --> <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName"> <value>command</value> </property> </bean> <!-- dataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:xe</value> </property> <property name="username"> <value>spring</value> </property> <property name="password"> <value>oracle</value> </property> <property name="maxActive"> <value>30</value> </property> </bean> <!-- ibatis SqlMapClient --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <!-- ibatis 설정파일을 한 곳에 위치시킨다. --> <property name="configLocation"> <value>classpath:config/SqlMapConfig.xml</value> </property> </bean> <!-- ibatis와 연동하기 위한 Spring에서 제공하는 템플릿 오브젝트: 이후 spring aop transaction 등을 위해 사용 --> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient" ref="sqlMapClient" /> </bean> <!-- 1. Dao 2. Service 3. Controller --> <bean id="customerDao" class="model.CustomerDaoImpl"> <property name="sqlMapClientTemplate" ref="sqlMapClientTemplate"></property> </bean> <bean id="customerService" class="model.CustomerServiceImpl"> <property name="customerDao" ref="customerDao"></property> </bean> <bean name="/customer.do" class="controller.CustomerController"> <constructor-arg> <ref bean="customerService"/> </constructor-arg> <property name="methodNameResolver" ref="methodNameResolver"></property> </bean> </beans> |
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc1</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> WEB-INF/mvc.xml WEB-INF/member.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- .do로 요청되는 모든 클라이언트의 요청은 spring DispatcherSerlvet이 처리한다. 별개의 spring config xml에 대한 설정이 없는 경우 [서블릿이름]-servlet.xml로 찾게 된다. --> <!-- 모든 요청에 대한 인코딩 처리를 Spring이 제공하는 필터에서 처리 --> <filter> <filter-name>encodeFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> |
Annotation
config package
member.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="member"> <insert id="registerMember" parameterClass="kosta.vo.MemberVO"> insert into member values(#id#,#password#,#name#,#address#) </insert> <select id="login" parameterClass="kosta.vo.MemberVO" resultClass="kosta.vo.MemberVO"> select id,password,name,address from member where id=#id# and password=#password# </select> <select id="findMember" resultClass="kosta.vo.MemberVO"> SELECT * FROM MEMBER WHERE ID=#value# </select> </sqlMap> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package kosta.aop.annot; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @Aspect public class LoggingSimple { private Log log=LogFactory.getLog(getClass()); @Around("execution(public * kosta.service.*ServiceImpl.find*(..))") public Object checkLogging(ProceedingJoinPoint point) throws Throwable { String className=point.getTarget().getClass().getName(); String methodName=point.getSignature().getName(); Object params[]=point.getArgs(); Object retValue =point.proceed(); if(params.length>0) log.info(className+" "+methodName+" "+params[0]); else log.debug("aop test"); return retValue; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | package kosta.control; import java.sql.SQLException; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import kosta.service.MemberService; import kosta.vo.MemberVO; 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; @Controller public class MemberController { // memberServiceImpl 객체를 주입받는다. @Resource(name = "memberServiceImpl") private MemberService memberService; @RequestMapping("/register.do") public ModelAndView register(HttpSession session, MemberVO vo) { System.out.println("register:" + vo ); String message = ""; try { memberService.registerMember(vo); message = vo.getName() + " register ok!"; } catch (SQLException e) { message = "register fail.."; } return new ModelAndView("reg_result", "message", message); } @RequestMapping("/login.do") public ModelAndView login(HttpSession session, MemberVO vo) { System.out.println("login:" + vo); String message = "login fail.."; try { MemberVO rvo = memberService.login(vo); if (rvo != null) { message = rvo.getName() + " login ok!"; session.setAttribute("rvo", rvo); } } catch (SQLException e) { e.printStackTrace(); } return new ModelAndView("login_result", "message", message); } @RequestMapping("/find.do") public ModelAndView findMember(@RequestParam("id") String id) throws SQLException{ String message="find fail"; MemberVO mv=memberService.findMember(id); if(mv!=null){ message = "find ok~"+mv.toString(); } return new ModelAndView("find_result","message", message); } } |
1 2 3 4 5 6 7 8 9 10 11 12 | package kosta.dao; import java.sql.SQLException; import kosta.vo.MemberVO; public interface MemberDao { public void registerMember(MemberVO vo) throws SQLException; public MemberVO login(MemberVO vo) throws SQLException; public MemberVO findMember(String id) throws SQLException; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package kosta.dao; import java.sql.SQLException; import javax.annotation.Resource; import kosta.vo.MemberVO; import org.springframework.orm.ibatis.SqlMapClientTemplate; import org.springframework.stereotype.Repository; // 데이터 액세스 로직을 처리하는 클래스를 정의하는 사용 // 생성되는 bean 이름은 memberDaoImpl @Repository public class MemberDaoImpl implements MemberDao{ //sqlMapClientTemplate 라는 bean id를 가진 객체(spring config xml)를 // 아래 변수에 주입 @Resource(name="sqlMapClientTemplate") private SqlMapClientTemplate sqlMapClient; public void registerMember(MemberVO vo) throws SQLException { sqlMapClient.insert("member.registerMember", vo); } public MemberVO login(MemberVO vo) throws SQLException { return (MemberVO)sqlMapClient.queryForObject("member.login", vo); } @Override public MemberVO findMember(String id) throws SQLException { return (MemberVO) sqlMapClient.queryForObject("member.findMember",id); } } |
1 2 3 4 5 6 7 8 9 10 11 12 | package kosta.service; import java.sql.SQLException; import kosta.vo.MemberVO; public interface MemberService { public void registerMember(MemberVO vo) throws SQLException ; public MemberVO login(MemberVO vo) throws SQLException; public MemberVO findMember(String id) throws SQLException; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package kosta.service; import java.sql.SQLException; import javax.annotation.Resource; import kosta.dao.MemberDao; import kosta.vo.MemberVO; import org.springframework.stereotype.Service; // 비즈니스 로직을 처리하는 클래스를 정의할 때 사용 @Service public class MemberServiceImpl implements MemberService{ // memberDaoImpl 객체를 주입받는다. @Resource(name="memberDaoImpl") private MemberDao memberDao; public void registerMember(MemberVO vo) throws SQLException { memberDao.registerMember(vo); } public MemberVO login(MemberVO vo) throws SQLException { return memberDao.login(vo); } @Override public MemberVO findMember(String id) throws SQLException { return memberDao.findMember(id); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package kosta.vo; public class MemberVO { private String id; private String password; private String name; private String address; public MemberVO() { super(); } public MemberVO(String id, String password, String name, String address) { super(); this.id = id; this.password = password; this.name = name; this.address = address; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "MemberVO [address=" + address + ", id=" + id + ", name=" + name + ", password=" + password + "]"; } } |
WEB-INF 아래
mvc-db.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" > <bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:xe</value> </property> <property name="username"> <value>spring</value> </property> <property name="password"> <value>oracle</value> </property> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>WEB-INF/SqlMapConfig.xml</value> </property> <property name="dataSource"> <ref bean="dbcp" /> </property> </bean> <!-- ibatis와 연동하기 위한 Spring에서 제공하는 템플릿 오브젝트: 이후 spring aop transaction 등을 위해 사용 --> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> </beans> |
mvc-member.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" > <context:component-scan base-package="kosta" /> <!-- viewResolver: 컨트롤러가 view를 선택하는 방식 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- aop annotation 처리--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <bean id="logging" class="kosta.aop.annot.LoggingSimple"></bean> </beans> |
SqlMapConfig.xml
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings useStatementNamespaces="true"/> <sqlMap resource="config/member.xml"/> </sqlMapConfig> |
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>multipleConfig</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/mvc-*.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>multipleConfig</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> |
Annotation 간단한 설명
@Component - 일반적인 용도의 컴포넌트를 표현
@Component - 스프링에 의해 자동 탐지됨.
public class BoardService{
@Autowired
private BoardDao boardDao;
.....
}
<context:componet-scan base-package="com.board" />
여러 패키지일 경우 컴마(,)로 팩키지를 구분
@Repository - 영속성 계층의 DAO컴포넌트
@Repository
public class BoardDaoImpl implements BoardDao{
.....
}
@Service - 서비스 계층의 서비스 컴포넌트
@Service
public class BoardService{
@Autowried
private BoardDao boardDao;
}
@Controller - 프리젠테이션 레이어의 컨트롤러 컴포넌트
'Framework > Spring' 카테고리의 다른 글
[Spring & ibatis] 수업 10일-Ajax (0) | 2013.05.03 |
---|---|
[Spring & ibatis] 수업 8일-Spring MVC,ibatis (0) | 2013.05.01 |
[Spring & ibatis] 수업 7일-2(web) (0) | 2013.04.30 |
[Spring & ibatis] 수업 7일-1(ibatis 끝) (0) | 2013.04.30 |
[Spring & ibatis] 수업 6일 (0) | 2013.04.29 |