WEB 으로 SPRING 구현 예제 >

 

< 소스 구조 >

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

web.xml>>

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>spring04_mvc</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
 
  <!-- 인코딩필터 설정하기 : 시작 utf-8 설정. -->

  <filter>
      <filter-name>characterEncoding</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>characterEncoding</filter-name>
      <url-pattern>/-</url-pattern>
  </filter-mapping>

  <!-- 인토딩필터 설정하기 : 종료 -->
 
  <!-- DispatcherServlet 설정 시작-->
  <!--  mvc서블릿(<servlet-name> 이름)이 읽을 Bean 설정파일이 있어야 하며,

        파일 이름은 반드시 서블릿이름-servlet.xml이어야 한다.
  예) 아래 서블릿의 이름이 mvc이므로 설정파일이름은 mvc-servlet.xml이 있어야 한다.
  (여기에 mvc에 관련된 Bean객체들이 정의 된다.-컨트롤러,뷰리절버 등등 .. )
  --> 

 

  <servlet>
      <servlet-name>mvc</servlet-name><!-- 임의로 지정. -->
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- spring 제공 class. -->
  </servlet>
  <servlet-mapping>
      <servlet-name>mvc</servlet-name><!-- mvc : 위에서 정의한 이름 -->
      <url-pattern>*.do</url-pattern><!-- 확장자가 do인 경우 호출한다. -->
  </servlet-mapping>


  <!-- DispatcherServlet 설정 종료-->
</web-app>

==> 클라이언트에서 *.do 로 들어온경우 DispatcherServlet에서 설정한 정보 참조한다.
==> mvc-servlet.xml 로

 


(1) main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
    <li><a href="fortune.do">오늘의 운세</a></li>
    <li><a href="news.do">오늘의 뉴스</a></li>
</ul>
</body>
</html>

 

 

(2) mvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 컨트롤로 설정 -->

    <bean name="fortuneController" class="test.controller.FortuneController"/>
    <bean name="newsController" class="test.controller.NewsController" />
    <bean name="insertController" class="test.controller.InsertController" />


        
    <!-- 뷰리절버 설정
        뷰이름이 showFortune 이라면 뷰이름앞에 prefix값이 붙고 뷰이름뒤에 suffix붙어서
        아래와 같은 경로가 된다.
       
        showFortune
        prefix : /view/showFortune
        suffix : /view/showFortune.jsp
        이동할 페이지: /view/showFortune.jsp
    -->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

 

</beans>

 

 

(3) FortuneController.java

package test.controller;

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


@Controller
public class FortuneController {
    //fortune.do라는 이름으로 요청이 들어오면 getFortune메소드가 자동 호출됨.
    @RequestMapping("/fortune.do")
    public ModelAndView getFortune(){

 

        //비즈니스 로직 처리하기 위한 자바객체(모델객체)호출
        String str="동쪽으로 가면 귀인을 만남!";

 

        //모델과 뷰에 대한 정보를 담을 객체 생성.
        ModelAndView mv = new ModelAndView();

 

        //결과값 담기
       mv.addObject("fortune", str);

 

        //이동할 뷰이름 담기
        mv.setViewName("showFortune");

        // DispatcherServlet에 모델앤뷰객체 보내기.
        return mv;

   

 }
}

 

 

(4) showFortune.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>/view/showFortune.jsp</title>
</head>
<body>
<h2>오늘의 운세: ${ fortune }</h2>
</body>
</html>

 

 

(5) NewsController.java

package test.controller;

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

@Controller
public class NewsController {
    @RequestMapping("/news.do")
    public ModelAndView news(){
        String str="오늘 날시가 따듯해요!!";
        ModelAndView mv = new ModelAndView();
        mv.addObject("news", str);
        mv.setViewName("showNews");
        return mv;
    }
}

 

(6) showNews.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>오늘의 뉴스</h1>
${ news }
</body>
</html>

 

 

 

 

 

간단한 이름, 나이, 이메일 입력받아 전송하기

(1) insert.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="insert1.do" method="post">
 이름<input type="text" name="name"/><br/>
 나이<input type="text" name="age"/><br/>
 이메일<input type="text" name="email"/><br/>
 <input type="submit" value="전송"/>
</form>
</body>
</html>

==> name, age, email을 post방식으로 전송.

 

 

 

 방법 1 - @RequestParam 어노테이션 사용
 방법 2 - HttpServletRequest request

            ; public ModelAndView insert1(HttpServletRequest req){


(2) InsertController.java

package test.controller;

import javax.servlet.http.HttpServletRequest;

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 InsertController {
   @RequestMapping("/insert.do")

   public ModelAndView insert( @RequestParam("name") String name,
                                @RequestParam("age")  int age,
                                @RequestParam("email") String email){


        
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", name);
        mv.setViewName("member/showResult");        
        return mv;
    }

 

    @RequestMapping("/insert1.do")

    public ModelAndView insert1(HttpServletRequest req){

        String name=req.getParameter("name");
        String age=req.getParameter("age");
        String email=req.getParameter("email");

 

        ModelAndView mv = new ModelAndView();
        mv.addObject("name", name);
        mv.setViewName("member/showResult");
        return mv;
    }
}

 


(3) mvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 컨트롤로 설정 -->
    <bean name="fortuneController" class="test.controller.FortuneController"/>
    <bean name="newsController" class="test.controller.NewsController" />
    <bean name="insertController" class="test.controller.InsertController" />
       
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 


(4) showResult.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${ name }
</body>
</html>

 

 

'WEB > Spring3.0' 카테고리의 다른 글

SPRING3.0 #11(annotation)  (0) 2013.01.27
SPRING3.0 #10( MVC )  (0) 2013.01.27
SPRING3.0 #08( Mybatis )  (0) 2013.01.27
SPRING3.0 #07( jdbc )  (0) 2013.01.27
SPRING3.0 #06( annotation )  (0) 2013.01.27

 

Mybatis를 이용하여 select, insert, update, delete 테스트 한다.

 

파일 구조 >

 

; Referenced Library 에 해당 라이브러리

; Mybatis 관련 jar 파일

 

 

 

(1) TestMain.java

package test.app;

 

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import test.dao.MembersDao;
import test.vo.MembersVo;

 

public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("test/app/app.xml");
        MembersDao dao = (MembersDao)context.getBean("membersDao");

        int n = dao.insert(new MembersVo("my1","122","m","00",null));
        if(n>0){
            System.out.println("추가.성공!!");
        }

        n = dao.delete("my1");
        if(n>0){
            System.out.println("삭제성공!!");
        }

        MembersVo vo = dao.getInfo("my");
        if(vo!=null){
            System.out.println("아이디:" + vo.getId() );
            System.out.println("비밀번호:" + vo.getPwd() );
            System.out.println("이메일:" + vo.getEmail() );
            System.out.println("전화:" + vo.getPhone() );
        }else{
            System.out.println("검색된 아이디가 없어요!!");
        }
        System.out.println("---------------------------------------");
       
        List<MembersVo> list = dao.getList();
        for( MembersVo vo1: list){
            System.out.println("아이디:" + vo1.getId() );
            System.out.println("비밀번호:" + vo1.getPwd() );
            System.out.println("이메일:" + vo1.getEmail() );
            System.out.println("전화:" + vo1.getPhone() );
            System.out.println("=============");
        }
    }
}

 

 

스프링에서 MyBatis와 연동순서
1. DataSource설정(DB접속 정보)
2. SqlSessionFactory설정(dataSource주입,mapper파일에 대한 정보)
3. SqlSessionTemplate설정(SqlSessionFactory주입)
4. Dao설정(sqlSessionTemplate주입) 

 

 

(2) app.xml

;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

    
    <!-- 1. DataSource설정(DB접속 정보) -->
    <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
        <property name="username" value="scott" />
        <property name="password" value="tiger" />
    </bean>   
   
    <!--     2. SqlSessionFactory설정(dataSource주입,mapper파일에 대한 정보) -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- dataSource설정 -->
        <property name="dataSource" ref="dataSource"/>
        <!--
            SQLMapper파일 설정 : 클래스패스위치의 test/mybatis 경로의 모든xml파일을 읽어와라.!
         -->
        <property name="mapperLocations" value="classpath:test/mybatis/ *.xml"/>
    </bean>
   
    <!--     3. SqlSessionTemplate설정(SqlSessionFactory주입) -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <!--  생성자 0번째 인자에 sqlSessionFactory를 넣어라 -->
        <constructor-arg ref="sqlSessionFactory" index="0"/>
    </bean>
   
    <!--     4. Dao설정(sqlSessionTemplate주입) -->
    <bean id="membersDao" class="test.dao.MembersDao">
        <property name="sqlSession" ref="sqlSession" />
    </bean>   
</beans>

 

 

 

스프링에서는 SqlSession을 사용하기 위한 공통작업을 템플릿화한 SqlSessionTemplate을 사용한다.
( SqlSession 오픈, 종료에 관련된 작업을 관리해줌 )

 


(3) MembersDao.java

;

package test.dao;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

import test.vo.MembersVo;


public class MembersDao {
    private SqlSessionTemplate sqlSession;
    //스프링을 통해 주입받아야 하므로 setter메소드가 있어야 함.
    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }
    public int insert(MembersVo vo){
        int n = sqlSession.insert("insert", vo);
        return n;
    }
    public int delete(String id){
        return sqlSession.delete("delete", id);
    }
    public MembersVo getInfo(String id){
        return (MembersVo)sqlSession.selectOne("getInfo", id);
    }
    public List<MembersVo> getList(){
        return (List<MembersVo>)sqlSession.selectList("getList");
    }
}

 

 

 

MyBatis
(5) MembersMapper.xml
;
<?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="orm.mybatis.MembersMapper">
    <insert id="insert" parameterType="test.vo.MembersVo">
        insert into Members values ( #{ id }, #{ pwd }, #{ email }, #{ phone }, sysdate )
    </insert>
    <select id="getList" resultType="test.vo.MembersVo">
        select * from members
    </select>
    <delete id="delete" parameterType="String">
        delete from members where id=#{value}
    </delete>
    <select id="getInfo" resultType="test.vo.MembersVo" parameterType="String">
        select * from members where id=#{value}
    </select>
</mapper>

 

 

(4) MembersVo.java

package test.vo;

import java.sql.Timestamp;


public class MembersVo {
    private String id;
    private String pwd;
    private String email;
    private String phone;
    private Timestamp regdate;
   
    public MembersVo(){}
   
    public MembersVo(String id, String pwd, String email, String phone, Timestamp regdate) {
        super();
        this.id = id;
        this.pwd = pwd;
        this.email = email;
        this.phone = phone;
        this.regdate = regdate;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Timestamp getRegdate() {
        return regdate;
    }

    public void setRegdate(Timestamp regdate) {
        this.regdate = regdate;
    }   
}

 

 

'WEB > Spring3.0' 카테고리의 다른 글

SPRING3.0 #10( MVC )  (0) 2013.01.27
SPRING3.0 #09( MVC )  (0) 2013.01.27
SPRING3.0 #07( jdbc )  (0) 2013.01.27
SPRING3.0 #06( annotation )  (0) 2013.01.27
SPRING3.0 #05( init-method, destroy-method, scope )  (0) 2013.01.27

 

 

예제 >  members 테이블에 간단히 데이터 조회, 입력, 수정, 삭제 하는 예제.

- DB : 오라클 11G XE

 

 

소스 구조 >>

 

- 관련 lib는 Spring User lib 만들어 이곳에 연결.

 

 

 

members테이블 테스트용으로 간단히 만든다.

 

 CREATE TABLE MEMBERS(
    ID VARCHAR2(10) PRIMARY KEY,
    PWD VARCHAR2(10),
    EMAIL VARCHAR2(15),
    PHONE VARCHAR2(20),
    REGDATE DATE);

 

 

 

(1)  TestMain.java

package test.app.main;

 

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import test.dao.MembersDao;
import test.vo.MembersVo;

 

public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("test/app/app.xml");
        MembersDao dao = (MembersDao)context.getBean("membersDao");

        int n = dao.insert(new MembersVo("test3","test","test","test",null));
        if(n>0){
            System.out.println("회원추가 성공");
        }

        n= dao.delete("test3");
        if ( n > 0 ){
            System.out.println("회원삭제 성공");
        }

        n = dao.update(new MembersVo("test1","33","44","55",null));
        if(n>0){
            System.out.println("수정성공");
        }

        List<MembersVo> list = dao.getList();
        for(MembersVo vo:list){
            System.out.println("id:" + vo.getId());
            System.out.println("Pwd:" + vo.getPwd());
            System.out.println("Email:" + vo.getEmail());
        }
        System.out.println("-------------------------------------");

        System.out.println("[[  like 조회  ]]");
        list = dao.getList("mang");
        for(MembersVo vo:list){
            System.out.println("아이디:" + vo.getId());
            System.out.println("비밀번호:" + vo.getPwd());
            System.out.println("이메일:" + vo.getEmail());
            System.out.println("전화번호:" + vo.getPhone());
            System.out.println("등록일:" + vo.getRegdate());
        }
        System.out.println("-------------------------------------");

        System.out.println("[[   equal 조회    ]]");
        MembersVo vv = dao.getInfo("019");
        if(vv!=null){
            System.out.println("아이디:" + vv.getId());
            System.out.println("비밀번호:" + vv.getPwd());
            System.out.println("이메일:" + vv.getEmail());
            System.out.println("전화번호:" + vv.getPhone());
            System.out.println("등록일:" + vv.getRegdate());
        }       
    }   
}

 

 

 

[[ jdbc연동순서 ]]

 

1. DataSource 설정 ( DB연결 정보 )
2. JdbcTemplate설정 ( DataSource 주입 )
3. MembersDao 설정( JdbcTemplate주입 )

 

 

(2) app.xml
;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <!--     1. DataSource 설정 ( DB연결 정보 )        -->
   <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
        <property name="username" value="scott"/>
        <property name="password" value="tiger"/>
    </bean>
   
    <!--     2. JdbcTemplate설정 ( DataSource 주입 )   -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
   
    <!--     3. MembersDao 설정( JdbcTemplate주입 )      -->
    <bean id="membersDao" class="test.app.dao.MembersDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>
</beans>

 

; <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" ...

   --> tomcat-dbcp.jar

 

 

(3) MembersDao.java
; 스프링에서는 jdbc와 연동할때 정형화된 코드를 템플릿화해서 만든 jdbcTemplete을 사용한다.

 

package test.app.dao;

 

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

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

import test.vo.MembersVo;


public class MembersDao {
    private JdbcTemplate jdbcTemplate;


    // 스프링이 생성해준 객체를 주입해야 하므로 setter메소드 작성.
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public int insert(MembersVo vo) {
        String sql = "insert into members values (?,?,?,?,sysdate)";
        // sql : 실행할 sql구문
        // parameter : ?에 대응되는 값들
        int n = jdbcTemplate.update(sql, vo.getId(), vo.getPwd(), vo.getEmail(), vo.getPhone());
        return n;
    }

    public int delete(String id) {
        String sql = "delete from members where id=?";
        int n = jdbcTemplate.update(sql, id);
        return n;
    }

    public int update(MembersVo vo) {
        String sql = "update members set pwd=?,email=?,phone=? where id=?";
        int n = jdbcTemplate.update(sql, vo.getPwd(), vo.getEmail(),
                vo.getPhone(), vo.getId());
        return n;
    }

    // 전체회원 정보 가져오는 메소드
    public List<MembersVo> getList() {
        String sql = "select * from members order by id";
        // annoynmouse 추상클래스 사용
        RowMapper<MembersVo> rowMapper = new RowMapper<MembersVo>() {
            @Override
            public MembersVo mapRow(ResultSet rs, int row) throws SQLException {
                MembersVo vo = new MembersVo();
                vo.setId(rs.getString("id"));
                vo.setPwd(rs.getString("pwd"));
                vo.setEmail(rs.getString("email"));
                vo.setPhone(rs.getString("phone"));
                vo.setRegdate(rs.getTimestamp("regdate"));
                return vo;
            }
        };
        List<MembersVo> list = jdbcTemplate.query(sql, rowMapper);
        return list;
    }

    public List<MembersVo> getList(String find) {
        String sql = "select * from members where email like '%'||?||'%'";

         // RowMapper<MembersVo> rowMapper = new RowMapper<MembersVo>() {
         //
         // @Override public MembersVo mapRow(ResultSet rs, int row) throws
         // SQLException { MembersVo vo = new MembersVo();
         // vo.setId(rs.getString("id")); vo.setPwd(rs.getString("pwd"));
         // vo.setEmail(rs.getString("email"));
         // vo.setPhone(rs.getString("phone"));
         // vo.setRegdate(rs.getTimestamp("regdate")); return vo; } };

        Object obj[] = { find };
        List<MembersVo> list = jdbcTemplate.query(sql, obj, // new
                                                            // Object[]{find}
                new RowMapper<MembersVo>() {
                    @Override
                    public MembersVo mapRow(ResultSet rs, int row)
                            throws SQLException {
                        MembersVo vo = new MembersVo();
                        vo.setId(rs.getString("id"));
                        vo.setPwd(rs.getString("pwd"));
                        vo.setEmail(rs.getString("email"));
                        vo.setPhone(rs.getString("phone"));
                        vo.setRegdate(rs.getTimestamp("regdate"));
                        return vo;
                    }
                });
        return list;
    }

    public MembersVo getInfo(String id) {
        String sql = "select * from members where id=?";
        try {
            MembersVo vo = jdbcTemplate.queryForObject(sql,
                    new Object[] { id }, new RowMapper<MembersVo>() {
                        @Override
                        public MembersVo mapRow(ResultSet rs, int row)
                                throws SQLException {

                            MembersVo vo = new MembersVo();
                            vo.setId(rs.getString("id"));
                            vo.setPwd(rs.getString("pwd"));
                            vo.setEmail(rs.getString("email"));
                            vo.setPhone(rs.getString("phone"));
                            vo.setRegdate(rs.getTimestamp("regdate"));
                            return vo;
                        }
                    });
            return vo;
        } catch (EmptyResultDataAccessException es) {//검색된 데이터가 없으면 예외.
            System.out.println(es.getMessage());
            return null;
        }
    }
}

 

 

(4) MembersVo.java

package test.app.vo;

 

import java.sql.Timestamp;

public class MembersVo {
    private String id;
    private String pwd;
    private String email;
    private String phone;
    private Timestamp regdate;
   
    public MembersVo(){}
   
    public MembersVo(String id, String pwd, String email, String phone, Timestamp regdate) {
        super();
        this.id = id;
        this.pwd = pwd;
        this.email = email;
        this.phone = phone;
        this.regdate = regdate;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public Timestamp getRegdate() {
        return regdate;
    }
    public void setRegdate(Timestamp regdate) {
        this.regdate = regdate;
    }
}

 

 

'WEB > Spring3.0' 카테고리의 다른 글

SPRING3.0 #09( MVC )  (0) 2013.01.27
SPRING3.0 #08( Mybatis )  (0) 2013.01.27
SPRING3.0 #06( annotation )  (0) 2013.01.27
SPRING3.0 #05( init-method, destroy-method, scope )  (0) 2013.01.27
SPRING3.0 #04( 의존관계 )  (0) 2013.01.27

 


(1) TestMain.java
(2) MemberController.java
(3) MemberDao.java
(4) test06.xml

 

 

 


(1) TestMain.java

package test.di6_annotation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context 

                          = new ClassPathXmlApplicationContext("test/di6_annotation/test06.xml");
        MemberController mc = (MemberController)context.getBean("memberController");
        mc.execute();
    }
}

 


(2) MemberController.java
;

@Autowired : 같은 타입의 객체를 찾아 자동주입
 - 세군데에 적용할수 있다. --> 생성자, 멤버필드, setter메소드

 


package test.di6_annotation;

import org.springframework.beans.factory.annotation.Autowired;

public class MemberController {
    //MemberDao타입의 객체가 자동주입된다.(타입,이름순으로 검색됨)
    @Autowired  private MemberDao memberDao;
//    public void setMemberDao(MemberDao memberDao) {
//        this.memberDao = memberDao;
//    }
    public void execute(){
        memberDao.insert("홍씨");
    }
}



(4) test06.xml

; <context:annotation-config/>을 선언하면 멤버변수에 대해 setter 메소드를 사용안해도 됨.

; 멤버변수에 @Autowired를 선언.

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <!-- Annotation이 적용되도록 설정 -->

    <context:annotation-config/>

    <bean id="memberDao" class="test.di6_annotation.MemberDao" />
    <bean id="memberController" class="test.di6_annotation.MemberController"/>
</beans>

 

 

(3) MemberDao.java

package test.di6_annotation;

public class MemberDao {
    private String url;
   
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUrl() {
        return url;
    }
    public void insert(String id){
        System.out.println(id + "님을 추가했습니다.");
    }
    public void update(String id){
        System.out.println(id + "님을 수정했습니다.");
    }
    public void delete(String id){
        System.out.println(id + "님을 삭제했습니다.");
    }
    public void getinfo(String id){
        System.out.println(id + "님을 조회했습니다.");
    }
}

 

 

'WEB > Spring3.0' 카테고리의 다른 글

SPRING3.0 #08( Mybatis )  (0) 2013.01.27
SPRING3.0 #07( jdbc )  (0) 2013.01.27
SPRING3.0 #05( init-method, destroy-method, scope )  (0) 2013.01.27
SPRING3.0 #04( 의존관계 )  (0) 2013.01.27
SPRING3.0 #03( DI의 시작이랄까.. )  (0) 2013.01.27

 

 

spring은 기본이 singleton방식이다.

 

singleton이 아닌 새로 생성해 사용하는 방법에 대한 예제 >

 

(1) TestMain
(2) Members.java
(3) MemberDao.java
(4) test05.xml

 

(1) TestMain

package test.di5;

 

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

 

 

public class TestMain {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("test/di5/test05.xml");
        MemberDao dao = (MemberDao)context.getBean("memberDao");
        dao.insert("홍씨");
        System.out.println("dao:" + dao);
       
        MemberDao dao2 = (MemberDao)context.getBean("memberDao");
        dao2.insert("홍씨");
        System.out.println("dao2:" + dao2);
       
        Members mm = (Members)context.getBean("members");
        mm.print();
    }
}

 

 

  

 

[[ scope ]]
- 기본값으로 singleton이 설정되어 있음.
- prototype : 객체를 요청할때마다 생성한다.
- request : 클라이언트가 요청할때마다 생성(web app에서만 사용가능)
- session : 세션에서만 유효함.(web app에서만 사용가능)
- singleton : 객체를 싱글톤패턴으로 생성(하나만 생성)

; [[ init-method ]] : 객체 생성 시 자동호출됨( 객체 초기화 작업 )

; [[ destroy-method ]] : 객체 소멸시 자동호출됨(객체의 자원해제 등 ..)

 

(4) test05.xml

;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">


    <bean id="memberDao" class="test.di5.MemberDao" scope="prototype"
        init-method="init" destroy-method="destroy">
        <property name="url" value="localhost" />
    </bean>

    <bean id="mem" class="java.lang.String">
        <constructor-arg value="김모씨" />
    </bean>
    <bean id="members" class="test.di5.Members">
        <!-- java.util.list의 타입의 파라미터값 넣기 -->
        <property name="list">
            <list>
                <value>홍길동</value>
                <value>홍길서</value>
                <value>홍길남</value>
                <value>홍길북</value>
               <ref bean="mem"/>
            </list>
        </property>
    </bean>
</beans>

 


(2) Members.java

package test.di5;

import java.util.List;

public class Members {
    private List<String> list;
    public void setList(List<String> list) {
        this.list = list;
    }
    public void print(){
        for(String str:list){
            System.out.println(str);
        }
    }
}

 

(3) MemberDao.java

package test.di5;

public class MemberDao {
    private String url;
   
    public void init(){
        System.out.println("[init메소드 호출] dao객체가 초기화되었습니다.!");
    }
    public void destroy(){
        System.out.println("[destroy메소드 호출]dao객체가 소멸되었습니다.!");
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUrl() {
        return url;
    }
    public void insert(String id){
        System.out.println(id + "님을 추가했습니다.");
    }
    public void update(String id){
        System.out.println(id + "님을 수정했습니다.");
    }
    public void delete(String id){
        System.out.println(id + "님을 삭제했습니다.");
    }
    public void getinfo(String id){
        System.out.println(id + "님을 조회했습니다.");
    }
}




'WEB > Spring3.0' 카테고리의 다른 글

SPRING3.0 #07( jdbc )  (0) 2013.01.27
SPRING3.0 #06( annotation )  (0) 2013.01.27
SPRING3.0 #04( 의존관계 )  (0) 2013.01.27
SPRING3.0 #03( DI의 시작이랄까.. )  (0) 2013.01.27
SPRING3.0 #02( new사용과 spring bean사용하기. )  (0) 2013.01.27

+ Recent posts