-
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"%> 가져온 목록은 <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