일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정처기필기합격 #정처기합격후기
- java #array #자바 #배열 #프로그래밍 #코딩 #자바프로그래밍
- spring #스프링 #전자정부표준프레임워크 #표준프레임워크 #자바스프링 #스프링다운로드 #자바스크립트 #웹프로그래밍설정 #웹프로그래밍셋팅
- 마이바티스환경설정
- 서블릿 #자바모델1 #자바모델2 #mvc #mvc패턴
- Doit #Doit오라클 #Doit시리즈 #연습문제
- tern다운로드 #메이븐다운로드 #maven #스프링라이브러리 #자바라이브러리 #톰캣설정 #WAS #웹어플리케이션서버
- 자바웹프로그래밍
- Model #
- 기말고사 #방통대기말고사 #방통대후기 #방통대기말고사후기 #방통대2023년1학기 #방통대1학기 #방통대C프로그래밍 #방통대장학금 #방통대영어회화1
- 서블릿선언 #서블릿선언방법 #
- 자바 #웹자바 #JAVA #WEB #WEBJAVA #WEBPROGRAMMING #웹 #웹프로그래밍 #코딩 #CODING #모델1 #모델2 #모델1방식 #모델2방식
- 정처기 #정처기필기 #정보처리기사 #정보처리기사필기 #정보처리기사2023 #정처기2023 #정처기3회 #정보처리기사3회 #정보처리기사실기 #정처기실기 정처기합격
- ORACLE #TIGER #SCOTT #SCOTT계정 #오라클학습계정 #프로그래밍 #SQL #SQLORACLE #오라클 #오라클연습 #오라클연습계정 #오라클연습문제 #WHERE절 #오라클조건절
- 자바 #웹자바 #webJava #java #코딩 #코딩초보 #ojdbc #서블릿 #자바서블릿 #javaServelet #servelet #httpServlet
- html #자바와서블릿 #자바와웹연결 #웹연결
- union #sql99 #외부조인 #오라클조인 #sql조인 #자체조인 #비등가조인 #비등가조인 #테이블복사 #오라클테이블 #null인데이터출력
- web.xml #배포지시자 #서블릿테스트
- 어노테이션 #@WebServlet #WebServlet #
- Init-param #context-param #
- View #
- Controller
- QUERY #DML #SQL문 #내림차순정렬 #오름차순정렬
- cos.jar #cos드라이버 #파일업로드드라이버 #루피는귀여워 #마이바티스 #MyBatis #마이바티스sql #마이바티스DB #마이바티스jsp #마이바티스이클립스 #mapper #config.xml #마이바티스다운로드
- sql #오라클 #불리언형 #boolean #webjava #java #jsp #Mybatis #마이바티스 #마이바티스환경설정 #모델1 #모델1프로그래밍 #Batis #마이바티스다운로드 #web설정 #웹프로그래밍 #게시판 #게시판제작 #게시판만
- 방통대 #방송통신대학교 #컴퓨터과학 #컴퓨터과학과 #컴과 #방통대컴퓨터과학과 #방통대컴과 #방통대파이썬 #방통대C #방통대자바
- 갤러리제작 #갤러리만들기 #jsp갤러리 #jsp게시판 #jsp프로그래밍 #jsp웹프로그래밍 #jsp웹 #jsp모델1방식 #사진업로드 #jsp사진업로드 #jdbc6 #jdbc드라이버다운 #jdbc드라이버무료다운
- 8 실무에서 가장 많이 사용하는 SQL
- 정처기3회 #정보처리기사2023
- jsp #게시판만들기 #자바로게시판만들기 #웹테스트 #JNDI #myora #Oracle #오라클 #DAO #DTO #아파치톰캣 #웹자바셋팅 #모델1 #모델1방식 #모델1방식웹프로그래밍 #웹프로그래밍
- Today
- Total
장미의 개발일기
JSP 프로그래밍: 모델1 방식의 웹 개발하기(갤러리 만들기) - 2 본문
셋팅: 이클립스 EE, 톰캣 ,마이바티스 ,오라클 , SQL gate
=> 마이바티스를 추가하여 ! 모델1 방식의 웹 갤러리 만들어보기
* 디자인에 소질이 없는 고로... 제 포스팅에서 디자인은 버리고 백엔드 코드만 봐주시길 ㅠㅠ
마이바티스 ( SQL - DB작업을 수월하게 해줌 )
Mybatis 마이바티스 다운로드 및 환경 설정 (tistory.com)
Mybatis 마이바티스 다운로드 및 환경 설정
** 아래 포스팅의 예제 => model 1 타입의 게시판 사이트를 제작한 후, 그걸 복사해와서 마이바티스를 테스트 해보는 포스팅 입니다. ** 아래 모델1방식으로 웹 게시판 만들기 JSP 프로그래밍: 모델1
jangmicoding.tistory.com
저번에 포스팅했던 게시판 만들기 예제에 이어서 만드는 포스팅입니다. (안봐도 무관)
JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 1 FBoard (tistory.com)
JSP 프로그래밍: 모델1 방식의 웹 개발하기(게시판 만들기) - 1 FBoard
*Model 1 방식: JSP 프로그래밍에서 Model과 View를 따로 분리하지 않고 같이 섞어서 개발하는 방식이다. => UI(디자인)와 비즈니스 로직을 함께 처리하는 방식이라 코드의 재사용성이 떨어진다 => 유지
jangmicoding.tistory.com
JSP 프로그래밍: 모델1 방식의 웹 개발하기(갤러리 만들기) - 1 (tistory.com)
JSP 프로그래밍: 모델1 방식의 웹 개발하기(갤러리 만들기) - 1
셋팅: 이클립스 EE, 톰캣 ,마이바티스 ,오라클 , SQL gate => 마이바티스를 추가하여 ! 모델1 방식의 웹 갤러리 만들어보기 * 디자인에 소질이 없는 고로... 제 포스팅에서 디자인은 버리고 백엔드 코
jangmicoding.tistory.com
갤러리- 게시물 상세보기에 이어 갤러리 수정/ 삭제를 구현해보자!
- fboard 예제와는 다르게 이 예제의 테이블, VO에는 비밀번호가 없다 ㅠㅠㅠㅠ 까묵었네 그냥 하자
비번 체크 생략 ~ ! 이걸 생략해버리니 훨씬 간단해진다.
1. 게시물 삭제처리하기
A chk.jsp 작성 ( 폼 아님 => num과 job 파라미터를 받아서 job이 up이면 수정 페이지, del이면 삭제 페이지로 가도록 하기)
<%@page import="vo.PororoVO"%>
<%@page import="dao.PororoDao"%>
<%@page import="dao.FBoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
int num = Integer.parseInt(request.getParameter("num"));
String job = request.getParameter("job");
System.out.println("기본키 파라미터:" + num);
System.out.println("기본키 파라미터:" + job);
PororoVO vo = new PororoVO();
vo.setNum(num);
%>
<%--<div style="width: 300px; margin: auto; background: orange;">
<p>정말 삭제하실 건가요?</p>
<a href="detail.jsp?num=<%=num%>">아니요</a>
</div> --%>
<%
if (job.equalsIgnoreCase("del")) {
response.sendRedirect("delete.jsp?num="+num);
} else if (job.equalsIgnoreCase("up")) {
response.sendRedirect("modify.jsp?num="+num);
}
System.out.println("기본키 파라미터2:" + num);
System.out.println("기본키 파라미터2:" + job);
%>
B dao가서 메소드 구현
package dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import factory.FactoryService;
import vo.PororoVO;
public class PororoDao {
private static PororoDao dao;
private PororoDao() { //단축키
}
//싱글톤
public synchronized static PororoDao getDao() {
if(dao == null) {
dao= new PororoDao();
}
return dao;
}
public void addFBoard(PororoVO vo) {
SqlSession ss = FactoryService.getFactory().openSession();
ss.insert("pororo.add",vo);
ss.commit();
ss.close();
}//addfbo
public List<PororoVO> listFBoard() {
SqlSession ss = FactoryService.getFactory().openSession();
List<PororoVO> volist =ss.selectList("pororo.list");
ss.commit();
ss.close();
return volist;
}//listbo
public PororoVO detailFBoard(int num) {
SqlSession ss = FactoryService.getFactory().openSession();
PororoVO vo= ss.selectOne("pororo.detail",num);
ss.commit();
ss.close();
return vo;
}
public void deleteFBoard(int num) {
SqlSession ss = FactoryService.getFactory().openSession();
ss.selectOne("pororo.delete",num);
ss.commit();
ss.close();
}
}
C mapper 작업 / sql 툴에서 미리 테스트해보고 매퍼 작업을 함.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pororo">
<insert id="add" parameterType="vo.PororoVO">
INSERT INTO PORORO VALUES(PORORO_SEQ.NEXTVAL, #{imgname} ,#{comm}
,SYSDATE, #{reip},#{price},#{qty})
</insert>
<select id="list" resultType="vo.PororoVO">
SELECT NUM, IMGNAME, COMM, REIP, PRICE,QTY, PDATE FROM PORORO ORDER BY 1
DESC
</select>
<select id="detail" parameterType="int" resultType="vo.PororoVO">
SELECT NUM, IMGNAME,COMM,REIP,PRICE,QTY,PDATE FROM PORORO WHERE NUM=#{num}
</select>
<delete id="delete" parameterType="int">
DELETE FROM PORORO WHERE NUM = #{num}
</delete>
</mapper>
D delete.jsp 작성 / 테이블 기본키를 파라미터로 받아오고, dao싱글톤을 호출한 후, 그 싱글톤을 통해서
삭제 메소드 소환
<%@page import="dao.PororoDao"%>
<%@page import="dao.FBoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
//delete
int num = Integer.parseInt(request.getParameter("num"));
PororoDao.getDao().deleteFBoard(num);
response.sendRedirect("gallery.jsp");
%>
비번확인, 경고창 없이 바로 삭제가 되니, 테스트할 때 주의 !
2. 수정처리 => 자꾸 오류나서 아직 하는중 ㅠㅠㅠ....
A modify.jsp 폼 (수정목록에서 이미지, 이미지이름 , 날짜 수정 제외 => readonly 처리함)
<%@page import="dao.PororoDao"%>
<%@page import="vo.PororoVO"%>
<%@page import="vo.FBoardVO"%>
<%@page import="dao.FBoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
//modify.jsp
int num = Integer.parseInt(request.getParameter("num"));
System.out.println("detailnum=>" + num);
PororoVO vo = PororoDao.getDao().detailFBoard(num);
System.out.println("detailnum=222>" + num);
%>
<%@include file="../header2.jsp"%>
<div id="wrap" class="container mt-5">
<h2>게시글 수정폼</h2>
<form method="post" action="update.jsp">
<input type="hidden" name="num" value="<%=num%>"> <input
type="hidden" name="reip" value="<%=request.getRemoteAddr()%>">
<div class="row mb-3">
<label for="imgn" class="col-sm-2 col-form-label">이미지 이름/상품</label>
<div class="col-sm-10">
<input type="text" name="imgn" class="form-control" id="imgn" readonly="readonly"
value="<%=vo.getImgname()%>">
</div>
</div>
<div class="row mb-3">
<label for="price" class="col-sm-2 col-form-label">가격</label>
<div class="col-sm-10">
<input type="number" name="price" class="form-control" id="price"
value="<%=vo.getPrice()%>">
</div>
</div>
<div class="row mb-3">
<label for="qty" class="col-sm-2 col-form-label">수량</label>
<div class="col-sm-10">
<input type="number" name="qty" class="form-control" id="qty"
value="<%=vo.getQty()%>">
</div>
</div>
<div class="row">
<label for="comm" class="col-sm-2 col-form-label">내용</label>
<div class="col-sm-10">
<textarea name="comm" rows="10" cols="50" id="comm"><%=vo.getComm()%></textarea>
</div>
</div>
<div class="row mb-3">
<label for="pdate" class="col-sm-2 col-form-label">입고일</label>
<div class="col-sm-10">
<input type="text" name="pdate" class="form-control" id="pdate" readonly="readonly"
value="<%=vo.getPdate()%>">
</div>
</div>
<div class="container text-center" role="group">
<button class="btn btn-primary" type="submit">글수정</button>
<button class="btn btn-danger" type="button"
onclick="location='gallery.jsp'">리스트</button>
</div>
</form>
</div>
<%@include file="../footer2.jsp"%>
B mapper 작업
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pororo">
<insert id="add" parameterType="vo.PororoVO">
INSERT INTO PORORO VALUES(PORORO_SEQ.NEXTVAL, #{imgname} ,#{comm}
,SYSDATE, #{reip},#{price},#{qty})
</insert>
<select id="list" resultType="vo.PororoVO">
SELECT NUM, IMGNAME, COMM, REIP, PRICE,QTY, PDATE FROM PORORO ORDER BY 1
DESC
</select>
<select id="detail" parameterType="int" resultType="vo.PororoVO">
SELECT NUM, IMGNAME,COMM,REIP,PRICE,QTY,PDATE FROM PORORO WHERE NUM=#{num}
</select>
<delete id="delete" parameterType="int">
DELETE FROM PORORO WHERE NUM = #{num}
</delete>
<update id="update" parameterType="vo.PororoVO">
UPDATE PORORO SET COMM=#{comm}, REIP = #{reip}, PRICE = #{price}, QTY = #{qty} WHERE NUM =#{num}
</update>
</mapper>
오랫동안 update.jsp에서 오류나서 울뻔 ㅠㅠㅠ
Fboard 예제에서는 비번을 체크했었으니, 기본키 번호+비번 2개가 파라미터 값이라, 메소드의 인자를 ProroVO vo로
받았는데, 이번 예제에선 비번 자체가 없으니 기본키 int 하나면 될 줄 알고 매퍼랑 dao를 다 그렇게 만들었더니
자꾸 안됐.... 혹시나 해서 파라미터 타입을 바꾸니 되네 ㅠ ...
C dao 메소드 구현
package dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import factory.FactoryService;
import vo.FBoardVO;
import vo.PororoVO;
public class PororoDao {
private static PororoDao dao;
private PororoDao() { //단축키
}
//싱글톤
public synchronized static PororoDao getDao() {
if(dao == null) {
dao= new PororoDao();
}
return dao;
}
public void addFBoard(PororoVO vo) {
SqlSession ss = FactoryService.getFactory().openSession();
ss.insert("pororo.add",vo);
ss.commit();
ss.close();
}//addfbo
public List<PororoVO> listFBoard() {
SqlSession ss = FactoryService.getFactory().openSession();
List<PororoVO> volist =ss.selectList("pororo.list");
ss.commit();
ss.close();
return volist;
}//listbo
public PororoVO detailFBoard(int num) {
SqlSession ss = FactoryService.getFactory().openSession();
PororoVO vo= ss.selectOne("pororo.detail",num);
ss.commit();
ss.close();
return vo;
}
public void deleteFBoard(int num) {
SqlSession ss = FactoryService.getFactory().openSession();
ss.selectOne("pororo.delete",num);
ss.commit();
ss.close();
}
public void updateFBoard(PororoVO vo) {
SqlSession ss = FactoryService.getFactory().openSession();
ss.selectOne("pororo.update",vo);
ss.commit();
ss.close();
}
}
D update.jsp
<%@page import="dao.PororoDao"%>
<%@page import="vo.PororoVO"%>
<%@page import="vo.FBoardVO"%>
<%@page import="dao.FBoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
request.setCharacterEncoding("euc-kr");
//1.수정폼에서의 파라미터를 변수에 저장
int num = Integer.parseInt(request.getParameter("num"));
String imgname = request.getParameter("imgname");
String comm= request.getParameter("comm");
String pdate= request.getParameter("pdate");
String reip= request.getParameter("reip");
int price = Integer.parseInt(request.getParameter("price"));
int qty = Integer.parseInt(request.getParameter("qty"));
PororoVO vo = new PororoVO();
vo.setNum(num);
vo.setReip(reip);
vo.setImgname(imgname);
vo.setComm(comm);
vo.setPdate(pdate);
vo.setPrice(price);
vo.setQty(qty);
PororoDao.getDao().updateFBoard(vo);
response.sendRedirect("detail.jsp?num="+num);
%>
수량, 가격, 내용 등을 수정 해본다.
이렇게 짠 수정이 된다.
끗..... ㅠ
'개발일기 > JSP 프로그래밍 (Java 웹프로그래밍)' 카테고리의 다른 글
Spring Framework(스프링 프레임워크 : 필기 + 다운로드 및 환경설정 (0) | 2023.08.18 |
---|---|
모델2 방식 웹 개발하기 (MVC 패턴) : 회원가입 파트 제작해보기 (0) | 2023.08.12 |
JSP 프로그래밍: 모델1 방식의 웹 개발하기(갤러리 만들기) - 1 (0) | 2023.06.27 |
Java와 DB 연결 (JDBC) / MyBatis(마이바티스를 사용하는 이유) (0) | 2023.06.22 |
JSP 프로그래밍 : Servlet 서블릿이란? 서블릿 및 Java 웹 프로그래밍 기초지식 / 내장객체 (0) | 2023.06.22 |