ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 210707_1(Springmvc+iBatis, xml을 이용하는방법)
    Spring 2021. 7. 7. 18:18

    전체적인 흐름

    1) spring 환경문서 : applicationContext.xml

        dataSource

             ㄴ 연동, 풀 설정

        sqlMapClient ---- sqlMapper

             ㄴ sql 집하처리

        guestbookVo -- dto

             ㄴ 데이터 저장, 전달 객체

        guestbookDao -- GuestbookDaoImpl

             ㄴ sql실행할때 sqlMapClent 인스턴스를 이용한다

        guestbookManager -- GuestbookManagerImpl 

             ㄴ(비즈니스 레이어) 용도 - 데이터를 가공하는 함수들을 정의하면 된다.(예제에는 가공하는 내용이없다)

        guestbookController

             ㄴ 요청을 받고, 처리후 내용을 모델에 저장하고, 뷰값을 저장, mav리턴

     

    2) spring mvc 환경문서 : guestbook-servlet.xml

       HanderMapping

       ViewResolver

    --770줄까지 기본준비작업

     

    ------------------------------------------------ 서비스 단위 작업

    글 목록

    1) sqlMapper : guestbook.xml

    select 추가

    /*+ 오라클 힌트*/

    2) Dao 구현 : GuestbookDaoImpl

    3) Manager 구현 : GuestbookManagerImpl

    4) Controller 구현 : GuestbookController

    5) View 구현 : list.jsp

    6) Mapping 후 testing : guestbook-servlet.xml 

     

    글쓰기

    1) sqlMapper : guestbook.xml insert 추가

    2) Dao 구현 : GuestbookDaoImpl

    3) Manager 구현 : GuestbookManagerImpl

    4) Controller 구현 : GuestbookController

    5) View 구현 : create.jsp

    6) Mapping 후 testing : guestbook-servlet.xml 

     

    글보기

    1) sqlMapper : guestbook.xml insert 추가

    2) Dao 구현 : GuestbookDaoImpl

    3) Manager 구현 : GuestbookManagerImpl

    4) Controller 구현 : GuestbookController  -- read.guest?idx=

    5) View 구현 : read.jsp

    6) Mapping 후 testing : guestbook-servlet.xml 

     

    글수정

    1) sqlMapper : guestbook.xml insert 추가

    2) Dao 구현 : GuestbookDaoImpl

    3) Manager 구현 : GuestbookManagerImpl

    4) Controller 구현 : GuestbookController

    5) View 구현 : create.jsp

    6) Mapping 후 testing : guestbook-servlet.xml 

     

    글삭제

    1) sqlMapper : guestbook.xml insert 추가

    2) Dao 구현 : GuestbookDaoImpl

    3) Manager 구현 : GuestbookManagerImpl

    4) Controller 구현 : GuestbookController

    5) View 구현 : create.jsp

    6) Mapping 후 testing : guestbook-servlet.xml 


    WEB-INF/web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    	id="WebApp_ID" version="4.0">
    
    	<!-- 로그 리스너 지정 주의 컨텐스트보다 먼저 와야 함 -->
    <!-- 	<listener>
    		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    	</listener>
    	<context-param>
    	<param-name>log4jConfigLocation</param-name>
    	<param-value>classpath:log4j.xml</param-value>
    	</context-param> -->
    
    	<!-- 컨텍스트 로더 리스너 지정 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/applicationContext.*xml</param-value>
    	</context-param>
    
    	<servlet>
    		<servlet-name>guestbook</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>guestbook</servlet-name>
    		<url-pattern>*.guest</url-pattern>
    	</servlet-mapping>
    
    </web-app>

    applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
     "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <!-- 디비 연동 정보 설정 -->
    	<bean id="dataSource"
    		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    		<property name="driverClassName">
    			<value>oracle.jdbc.driver.OracleDriver</value>
    		</property>
    		<property name="url">
    			<value>jdbc:oracle:thin:@localhost:1521:XE</value>
    		</property>
    		<property name="username">
    			<value>jspuser</value>
    		</property>
    		<property name="password">
    			<value>1234</value>
    		</property>
    	</bean>
    
    <!-- 스프링과 ibatis연결 : 아래는 상속을 이용한 연결시 : 아래 -->
    	<bean id="sqlMapClient"
    		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="configLocation" value="/WEB-INF/SqlMapConfig" /><!-- ibatis환경파일 -->
    	</bean>
    <!-- 의존성 주입 이용할때는 SqlMapClientTemplate형으로 만들어 준다 : 아래 -->
    <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.sqlMapClientTemplate">
    <property name="sqlMapClient" ref="sqlMapClient"></property>
    </bean>
    
    </beans>

    log4j.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM 
    "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
       <appender name="CONSOLE" 
       class="org.apache.log4j.ConsoleAppender">
          <layout class="org.apache.log4j.PatternLayout">
             <param 
                name="ConversionPattern" 
                value="%p - %C{1}.%M(%L) | %m%n" />
          </layout>
       </appender>
       
       <logger name="org.apache">
             <level value="WARN" />
       </logger>
       <logger name="org.springframwork">
             <level value="DEBUG" />
       </logger>
       
       <logger name="guestbook">
             <level value="DEBUG" />
       </logger>
       
       <root>
             <level value="WARN" />
                <appender-ref ref="CONSOLE" />
       </root>
    </log4j:configuration>

    WEB-INF/guestbook-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "//SPRING//DTD BEAN//EN"
     "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
    <!-- applicationContext에 있어도 되는 부분 -->
    	<bean id="guestbookDao" class="guestbook.dao.GuestbookDaoImpl">
    		<property name="sqlMapClient" ref="sqlMapClient" />
    		<!-- 의존성 주입시 아래처럼 -->
    <!-- 		<property name="sqlMapClientTemplate" ref="sqlMapClientTemplate"/> -->
    	</bean>
    
    	<bean name="guestbookManager"
    		class="guestbook.service.GuestbookManagerImpl">
    		<property name="guestbookDao" ref="guestbookDao" />
    	</bean>
    
    	<bean name="guestbookVo" class="guestbook.vo.GuestbookVo" />
    
    	<bean name="guestbookController"
    		class="guestbook.controller.GuestbookController">
    		<property name="guestbookManager" ref="guesrbookManager" />
    		<property name="guestbookVo" ref="guestbookVo" />
    	</bean>
    <!-- 여기까지 -->
    
    	<bean id="urlMapping"
    		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    		<property name="mappings">
    			<props>
    			<!-- 여기에 매핑 추가 됨 -->
    				<prop key="/list.guest">guestbookController</prop>
    <!-- 				<prop key="/delete.guest">guestbookController</prop>
    				<prop key="/read.guest">guestbookController</prop>
    				<prop key="/update.guest">guestbookController</prop>
    				<prop key="/edit.guest">guestbookController</prop>
    				<prop key="/create.guest">guestbookController</prop> -->
    			</props>
    		</property>
    	</bean>
    	
    	<bean id="viewResolver"
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="suffix" value=".jsp" />
    
    	</bean>
    
    </beans>

    WEB-INF/SqlMapConfig.xml

    <?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>
     <typeAlias alias="GuestbookVo" type="guestbook.vo.GuestbookVo"/>
     <sqlMap resource="guestbook/vo/guestbook.xml"/>
    </sqlMapConfig>

    guestbook/vo/guestbook.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL MAP 2.0//EN"
     "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    
    <sqlMap namespace="Guestbook">
    
    	<resultMap class="GuestbookVo" id="resultGuestbook">
    		<result property="idx" column="idx" />
    		<result property="password" column="password" />
    		<result property="name" column="name" />
    		<result property="subject" column="subject" />
    		<result property="content" column="content" />
    		<result property="write_date" column="write_date" />
    
    	</resultMap>
    	
    	<!-- 여기에 sql이 기술됨 -->
    	
    </sqlMap>

    GuestbookDao.java -- 인터페이스

    package guestbook.dao;
    
    import java.util.List;
    
    import guestbook.vo.GuestbookVo;
    
    public interface GuestbookDao {
    	
    	public List getContents();
    	
    	public GuestbookVo getContent(String idx);
    	
    	public int setContent(GuestbookVo guestbookVo);
    	
    	public int updateContent(GuestbookVo guestbookVo);
    	
    	public int deleteContent(String no);
    
    }

    GuestbookDaoImpl.java

    package guestbook.dao;
    
    import java.util.List;
    
    import guestbook.vo.GuestbookVo;
    import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; // 방법1 상속메서드 이용
    import org.springframework.orm.ibatis.SqlMapClientTemplate; //방법2 의존성 주입 인스턴스 이용
    
    
    public class GuestbookDaoImpl implements GuestbookDao {
    
    	
    	/* 의존성 주입방법
    	  SqlMapClientTemplate sqlMapClientTemplate;
    	  
    	  public void setsqlMapClientTemplate(SqlMapClientTemplate
    	  sqlMapClientTemplate) { this.sqlMapClientTemplate = sqlMapClientTemplate; }
    	 */
    
    	/* 각각의 실행 메서드 안에서
    	 * 1.상속방법
    	getSqlMapClientTemplate().queryForList("statementName");
    		2. 의존성 주입방법
    	sqlMapClientTemplate.queryForList("statementName");
    	
    	*/
    	
    	//여기부터 적용메서드를 하나씩 오버라이딩 하면됨
    //	@Override
    //	public List getContents() {
    //		// TODO Auto-generated method stub
    //		return null;
    //	}
    
    //	@Override
    //	public GuestbookVo getContent(String idx) {
    //		// TODO Auto-generated method stub
    //		return null;
    //	}
    
    //	@Override
    //	public int setContent(GuestbookVo guestbookVo) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    //
    //	@Override
    //	public int updateContent(GuestbookVo guestbookVo) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    //
    //	@Override
    //	public int deleteContent(String no) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    
    }

    GuestbookManager.java -- 인터페이스

    package guestbook.service;
    
    import java.util.List;
    
    import guestbook.vo.GuestbookVo;
    
    public interface GuestbookManager {
    	
    	public List getContents();
    	public GuestbookVo getContent(String idx);
    	public int setContent(GuestbookVo geustbookVo);
    	public int updateContent(GuestbookVo geustbookVo);
    	public int deleteContent(String idx);
    
    }

    GuestbookManagerImpl.java

    package guestbook.service;
    
    import java.util.List;
    
    import guestbook.dao.GuestbookDao;
    import guestbook.vo.GuestbookVo;
    
    public class GuestbookManagerImpl implements GuestbookManager {
    	
        	/* 의존성 주입방법 */
    	  SqlMapClient sqlMapClient;
    	  
    	  public void setSqlMapClient(SqlMapClient sqlMapClient) {
    		  System.out.println("GuestbookDaoImpl111111111111111111");
    		  this.sqlMapClient = sqlMapClient; 
    
    	//여기서부터 오버라이딩 하면됨
    //	@Override
    //	public List getContents() {
    //		// TODO Auto-generated method stub
    //		return null;
    //	}
    //
    //	@Override
    //	public GuestbookVo getContent(String idx) {
    //		// TODO Auto-generated method stub
    //		return null;
    //	}
    //
    //	@Override
    //	public int setContent(GuestbookVo geustbookVo) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    //
    //	@Override
    //	public int updateContent(GuestbookVo geustbookVo) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    //
    //	@Override
    //	public int deleteContent(String idx) {
    //		// TODO Auto-generated method stub
    //		return 0;
    //	}
    
    }

    GuestBookController.java

    /*GuestbookManager를 통해 Database에서 데이터를 가져와 ModelAndView를 리턴 하는데
    contentslist 라는 객체를 list.jsp로 넘겨주게된다.*/
    package guestbook.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import guestbook.service.GuestbookManager;
    import guestbook.vo.GuestbookVo;
    
    public class GuestBookController implements Controller{
    	
    	private GuestbookManager guestbookManager;
    	private GuestbookVo guestbookVo;
    	public GuestBookController() {
    		System.out.println("11111111111111");
    	}
    	public void setGuestbookManager(GuestbookManager guestbookManager) {
    		System.out.println("222222222222222");
    		this.guestbookManager = guestbookManager;
    	}
    	public void setGuestbookVo(GuestbookVo guestbookVo) {
    		System.out.println("33333333333333333");
    		this.guestbookVo = guestbookVo;
    	}
    	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)throws Exception{
    		
    		System.out.println("444444444444444");
    		
    		String path = request.getRequestURI();
    		System.out.println("path :"+path);
    		
    		String idx = "";
    		if(request.getParameter("idx") != null)
    			idx=request.getParameter("idx");
    		
    		//여기에 경로 분석 로직과 매니져 메서드 호출 코딩이 추가 되면 됨
    	}
    
    }

    준비작업 끝


    연결작업

    1.글목록

    sql매퍼 guestbook/vo/guestbook.xml

    /*+ 오라클힌트 */

    	<select id="getContents" resultMap="resultGuestbook.xml">
    	SELECT /*+ index_desc(guestbook pk_guesbook_idx) */ <!-- 오리클힌트 -->
    	 idx, password, name, subject, content, write_date 
    	FROM guestbook order by idx desc
    	</select>

    dao: GuestbookDaoImpl

    	public List getContents() {
    		// TODO Auto-generated method stub
    //		return (List) getSqlMapClientTemplate().queryForList("getContents");
    		
    		List list =null;
    				try {
    					
    				
    				list = sqlMapClient.queryForList("getContents");;
    				}catch(SQLException e) {
    					e.printStackTrace();
    				}
    		return list;
    	}

    매니저 : GuestbookManagerImpl

    	public List getContents() {
    		// TODO Auto-generated method stub
    		return guestbookDao.getContents();
    	}

     

    컨트롤 : GuestBookController handleRequest

    		// handleRequest 안에 내용 추가
    		//기본 동작이므로 나중에 추가되는 경로 매핑들 보다 아래쪽에 위치하도록 한다.
    		List contentslist = guestbookManager.getContents();
    		
    		return new ModelAndView("list", "contentlist", contentslist);
    		                         //뷰      키                값

    list.jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
    	pageEncoding="EUC-KR"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    가져온 목록은 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <a href="write.html">글 쓰 기</a>
    
    <c:forEach var="content" items="${contentslist}">
    	<div>
    		<a href="read.guest?idx=${contentslist.idx}">
    		 번호 : ${content.idx}
    		 이름 : ${content.name}
    		 제목 : ${content.subject}
    		 내용 : ${content.content}
    		 작성일 : ${content.write_date} </a>
    	</div>
    	<hr />
    </c:forEach>

    guestbook-servlet.xml --매핑

    				<prop key="/list.quest">guestbookController</prop>

     


    글쓰기

    1) sqlMapper : insert 추가

    	<!-- create -->
    	<insert id="setContent" parameterClass="GuestbookVo">
    	INSERT INTO guestbook (idx, password, name, subject, content, write_date)
    	 VALUES (guestbook_idx_seq.nextval, #password#, #name#,#subject#,#content#,sysdate)
    	</insert>

    2) Dao 구현

    	public int setContent(GuestbookVo guestbookVo) {
    		// TODO Auto-generated method stub
    		 int result = 0;
    		try {
    			result = sqlMapClient.delete("setContent", guestbookVo);
                //인서트는 반환형이 void라서 다른메소드(delete)를 사용했음
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} return result;
    	}

    3) Manager 구현

    	public int setContent(GuestbookVo geustbookVo) {
    		// TODO Auto-generated method stub
    		return guestbookDao.setContent(geustbookVo);
    	}

    4) Controller 구현  --set -->result

    		if(path.equals("/spring_ibatis/create.guest")) {
    			//spring_ibatis/list.guest
                guestbookVo.setPassword(request.getParameter("password"));
    			guestbookVo.setName(request.getParameter("name"));
    			guestbookVo.setSubject(request.getParameter("subject"));
    			guestbookVo.setContent(request.getParameter("content"));
    			guestbookVo.setWrite_date(request.getParameter("write_date"));
    			
    			int result = guestbookManager.setContent(guestbookVo);
    			
    			return new ModelAndView("create", "result", result);
    			
    		}

    5) View 구현 : write.html create.jsp

    <!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=EUC-KR">
    
    <title>Insert title here</title>
    </head>
    <body> <!-- no, name, subject, content, write_date -->
    
    <form action="create.guest" method="post">
    
    이름 <input type="text" name="name"><br>
    제목 <input type="text" name="subject"><br>
    내용 <input type="text" name="content"><br>
    암호 <input type="text" name="password"><br>
    <input type="submit" value="입력하기">
    
    </form>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!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=EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
    글${result}개 입력 완료.
    <a href="list.guest">리스트로 이동합니다.</a>
    
    </body>
    </html>

    6) Mapping 후 testing : guestbook-servlet.xml 

    			<prop key="/create.guest">guestbookController</prop>

     

    글보기

    1) sqlMapper : guestbook.xml insert 추가

    	<select id="getContent" parameterClass="String" resultMap="resultGuestbook">
    	SELECT idx, password, name, subject, content, write_date 
    	FROM guestbook 
    	WHERE idx = #idx#
    	</select>

    2) Dao 구현 : GuestbookDaoImpl

    	public GuestbookVo getContent(String idx) {
    		// TODO Auto-generated method stub
    		
    		try {
    			return (GuestbookVo) sqlMapClient.queryForObject("getContent", idx);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			
    		} return null;
    	}

    3) Manager 구현 : GuestbookManagerImpl

    	public GuestbookVo getContent(String idx) {
    		// TODO Auto-generated method stub
    		return guestbookDao.getContent(idx);
    	}

    4) Controller 구현 : GuestbookController  -- read.guest?idx=

    		// read 글보기
    		if(path.equals("/spring_ibatis/read.guest")) {
    			GuestbookVo guestbookVo = guestbookManager.getContent(idx);
    		return new ModelAndView("read", "getContent", guestbookVo);			}

    5) View 구현 : read.jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
    	pageEncoding="EUC-KR"%>
    <!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="EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
    	읽기 페이지
    	<div>
    		<p>번호 : ${getContent.idx}</p>
    		<p>이름 : ${getContent.name}</p>
    		<p>제목 : ${getContent.subject}</p>
    		<p>내용 : ${getContent.content}</p>
    		<p>작성일 : ${getContent.write_date}</p>
    	</div>
    	<a href="edit.guest?idx=${getContent.idx}">수정하기</a>
    	<a href="delete.guest?idx=${getContent.idx}">삭제하기</a>
    
    </body>
    </html>

    6) Mapping 후 testing : guestbook-servlet.xml 

    			<prop key="/read.guest">guestbookController</prop>


    글수정

    1) sqlMapper : guestbook.xml update추가

    	<!-- update -->
    	<update id="updateContent" parameterClass="GuestbookVo">
    	UPDATE guestbook SET name = #name#, subject = #subject#, content = #content#,
    	 write_date=sysdate WHERE idx=#idx# 
    	</update>

    2) Dao 구현 : GuestbookDaoImpl

    	public int updateContent(GuestbookVo guestbookVo) {
    		// TODO Auto-generated method stub
    		
    		try {
    			return sqlMapClient.update("updateContent",guestbookVo );
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return 0;
    	}

    3) Manager 구현 : GuestbookManagerImpl

    	@Override
    	public int updateContent(GuestbookVo geustbookVo) {
    		// TODO Auto-generated method stub
    		return guestbookDao.updateContent(geustbookVo);
    	}

    4) Controller 구현 : GuestbookController

    		//수정하기
    		if(path.equals("/spring_ibatis/update.guest")) {
    			//암호비교 등등이 들어 갈 수 있음
    		guestbookVo.setIdx(Integer.parseInt(request.getParameter("idx")));
    		guestbookVo.setName(request.getParameter("name"));
    		guestbookVo.setSubject(request.getParameter("subject"));
    		guestbookVo.setContent(request.getParameter("content"));
    		guestbookVo.setWrite_date(request.getParameter("write_date"));
    
    		int result = guestbookManager.updateContent(guestbookVo);
    		return new ModelAndView("update", "updateContent", result);
    		}

    5) View 구현 : edit.jsp , update.jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!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=EUC-KR">
    <title>수정폼</title>
    </head>
    <body>
    <form action="update.guest" method="post">
    번호<input type="text" name="idx" value="${getContent.idx}" readonly="readonly"><br>
    이름<input type="text" name="name" value="${getContent.name}"><br>
    제목<input type="text" name="subject" value="${getContent.subject}"><br>
    내용<input type="text" name="content" value="${getContent.content}"><br>
    날짜<input type="text" name="write_date" value="${getContent.write_date}" readonly="readonly"><br>
    
    <input type="submit" value="수정하기">
    </form>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!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=EUC-KR">
    <title>수정처리</title>
    </head>
    <body>
    수정이 되었습니다
    <a href="list.guest">리스트로 이동합니다.</a>
    </body>
    </html>

    6) Mapping 후 testing : guestbook-servlet.xml 

    			<prop key="/update.guest">guestbookController</prop>
    			<prop key="/edit.guest">guestbookController</prop>

    삭제하기

    1) sqlMapper : guestbook.xml delete추가

    	<!-- delete -->
    	<delete id="deleteContent" parameterClass="String">
    	DELETE FROM guestbook WHERE idx = #idx#
    	</delete>

    2) Dao 구현 : GuestbookDaoImpl

    	public int deleteContent(String idx) {
    		// TODO Auto-generated method stub
    		try {
    			return sqlMapClient.delete("deleteContent", idx);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	
    		return 0;
    	}

    3) Manager 구현 : GuestbookManagerImpl

    	@Override
    	public int deleteContent(String idx) {
    		// TODO Auto-generated method stub
    		return guestbookDao.deleteContent(idx);
    	}

    4) Controller 구현 : GuestbookController

    		//삭제폼
    		if(path.equals("/spring_ibatis/delform.guest")) {
    
    		return new ModelAndView("delform", "idx", request.getParameter("idx"));
    		}
    		
    		//삭제처리
    		if(path.equals("/spring_ibatis/delete.guest")) {
    			//암호비교후
    		int result = guestbookManager.deleteContent(idx);
    		return new ModelAndView("delete", "deleteContent", result);
    		
    		
    		}

    5) View 구현 : delform.jsp , delete.jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!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=EUC-KR">
    <title>삭제폼</title>
    </head>
    <body>
    삭제 페이지
    <form action="delete.guest" method="post">
    번호<input type="text" name="idx" value="${idx}" readonly="readonly"><br>
    암호<input type="text" name="password"><br>
    <input type="submit" value="삭제하기">
    
    </form>
    
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>삭제처리</title>
    </head>
    <body>
    <c:if test="${result==1}">
    ${result}개 글이 삭제되었습니다.
    
    </c:if><br>
    
    삭제페이지 <a href="list.guest">리스트로 이동합니다.</a>
    </body>
    </html>

     

    6) Mapping 후 testing : guestbook-servlet.xml 

    			<prop key="/delform.guest">guestbookController</prop>
                <prop key="/delete.guest">guestbookController</prop>

     

    끝~~

    'Spring' 카테고리의 다른 글

    210709_1(Spring3_MyBatis 글목록부터)  (0) 2021.07.09
    210708_1(Spring3_MyBatis)  (0) 2021.07.08
    210706_1(iBatis)  (0) 2021.07.06
    210705_2(iBatis)  (0) 2021.07.05
    210702_1(Spring)  (0) 2021.07.02
Designed by Tistory.