<div>지금 학원에서 프로젝트로 쇼핑몰 홈페이지를 작성하고 있는데요</div> <div>몇날며칠을 찾아봐도 해답이 없어 여기에 여쭤봅니다 ㅠㅠ</div> <div>이클립스 루나, 톰캣 7.0, 파일 업로드는 cos.jar로 이용하고 있구요</div> <div> </div> <div>기존에 있던 예제에 저희가 필요하다 생각되는 부분을 더 추가하여 발표하려하는데</div> <div>제가 담당한 부분은 관리자가 쇼핑몰 상품을 등록하는 부분입니다.</div> <div>상품이미지가 한개 첨부되던걸 메인, 내부, 상세이미지 세개로 늘리고</div> <div>상품 부제목을 추가한게 다입니다</div> <div> </div> <div>부제목 name2까지는 구현이 되었고</div> <div>상품이미지 업로드 과정에서 앞서 말씀드린 새로 추가한 내부이미지 image2와 상세이미지 image3가 업로드 되지 않고 있는 상황입니다 ㅠㅠ</div> <div>선생님한테 여쭈어도 뾰족한 수가 없어서....</div> <div>우선 제가 손댄 부분들과 중요한 파일들의 목록을 보여드릴게요</div> <div style="text-align:left;"><img width="365" height="917" style="border-bottom:medium none;border-left:medium none;border-top:medium none;border-right:medium none;" alt="목록1.png" src="http://thimg.todayhumor.co.kr/upfile/201501/1422519387fj45Cld6rrVSQuN.png"></div> <div style="text-align:left;"><img width="359" height="837" style="border-bottom:medium none;border-left:medium none;border-top:medium none;border-right:medium none;" alt="목록2.png" src="http://thimg.todayhumor.co.kr/upfile/201501/1422519387HA4gma2ObHxnRI6OWjppuo.png"></div> <div>소스 올려드리겠습니다</div> <div style="text-align:left;"> </div> <div>ProductVO.java는 getter setter 추가한거구요</div> <div>-----------------------------------------------------------------</div> <div>package com.nonage.dto;</div> <div>import java.sql.Timestamp;</div> <div>public class ProductVO<br>{<br> private int pseq;<br> private String name;<br> private String name2; //부제목<br> private String kind;<br> private int price1;<br> private int price2;<br> private int price3;<br> private String content;<br> private String image;<br> private String image2; //내부메인이미지<br> private String image3; //내부상세이미지<br> private String useyn;<br> private String bestyn;<br> private Timestamp indate;<br> }</div> <div> </div> <div>*******중략*******</div> <div><br> public String getImage() {<br> return image;<br> }<br> public void setImage(String image) {<br> this.image = image;<br> }<br> public String getName2() {<br> return name2;<br> }<br> public void setName2(String name2) {<br> this.name2 = name2;<br> }<br> public String getImage2() {<br> return image2;<br> }<br> public void setImage2(String image2) {<br> this.image2 = image2;<br> }<br> public String getImage3() {<br> return image3;<br> }<br> public void setImage3(String image3) {<br> this.image3 = image3;<br> }<br>}<br>----------------------------------------------------</div> <div>productWrite.jsp 입니다.</div> <div>관리자가 상품을 등록하는 페이지입니다.</div> <div><%@ page language="java" contentType="text/html; charset=UTF-8"<br> pageEncoding="UTF-8"%></div> <div><%@ include file="/admin/header.jsp"%><br><%@ include file="/admin/sub_menu.jsp"%><br><article><br> <h1>상품등록</h1><br> <form name="frm" method="post" enctype="multipart/form-data"><br> <table id="list"><br> <tr><br> <th>상품분류</th><br> <td colspan="5"><select name="kind"><br> <c:forEach items="${kindList}" var="kind" varStatus="status"><br> <option value="${status.count}">${kind}</option><br> </c:forEach><br> </select><br> <tr><br> <th>상품명</th><br> <td width="343" colspan="5"><input type="text" name="name"<br> size="47" maxlength="100"></td><br> </tr><br> <tr><br> <th>부제목</th><br> <td width="343" colspan="5"><input type="text" name="name2"<br> size="47" maxlength="100"></td><br> </tr><br> <tr><br> <th>딜가격[A]</th><br> <td width="70"><input type="text" name="price1" size="11"<br> onKeyUp='NumFormat(this)'></td><br> <th>원가[B]</th><br> <td width="70"><input type="text" name="price2" size="11"<br> onBlur="go_ab()" onKeyUp='NumFormat(this)'></td><br> <th>[B-A]</th><br> <td width="72"><input type="text" name="price3" size="11"<br> readonly onKeyUp='NumFormat(this)'></td><br> </tr><br> <tr><br> <th>상세설명</th><br> <td colspan="5"><textarea name="content" rows="8" cols="70"></textarea><br> </td><br> </tr><br> <tr><br> <th>상품이미지(메인)</th><br> <td width="343" colspan="5"><input type="file" name="image"><br> </td><br> </tr><br> <tr><br> <font style="background-color:#ebf1dd;"><th>상품이미지(내부)</th><br> <td width="343" colspan="5"><input type="file" name="image2"><br> </td><br></font> </tr><br> <tr><br> <font style="background-color:#ebf1dd;"> <th>상세이미지</th><br> <td width="343" colspan="5"><input type="file" name="image3"><br> </td><br></font> </tr><br> </table><br> <input class="btn" type="button" value="등록" onClick="go_save()"><br> <input class="btn" type="button" value="취소" onClick="go_mov()"><br> </form><br></article><br><%@ include file="/admin/footer.jsp"%><br></body><br></html></div> <div> </div> <div>------------------------------------------------------------------------</div> <div>ProductDAO.java 입니다</div> <div> </div> <div>package com.nonage.dao;</div> <div>import java.sql.Connection;<br>import java.sql.PreparedStatement;<br>import java.sql.ResultSet;<br>import java.util.ArrayList;<br>import util.DBManager;</div> <div>import com.nonage.dto.ProductVO;</div> <div>public class ProductDAO {<br> // 외부에서 인스턴스 생성을 막음<br> private ProductDAO() {<br> }</div> <div> private static ProductDAO instance = new ProductDAO();</div> <div> public static ProductDAO getInstance() {<br> return instance;<br> }</div> <div> // ArrayList 객체를 저장하는 임시 공간<br> public ArrayList<ProductVO> listNewProduct() {<br> ArrayList<ProductVO> productList = new ArrayList<ProductVO>();<br> String sql = "select * from new_pro_view";<br> Connection conn = null;<br> PreparedStatement pstmt = null;<br> ResultSet rs = null;<br> try {<br> conn = DBManager.getConnection();<br> pstmt = conn.prepareStatement(sql);<br> rs = pstmt.executeQuery();<br> while (rs.next()) {<br> ProductVO product = new ProductVO();<br> product.setPseq(rs.getInt("pseq"));<br> product.setName(rs.getString("name"));<br> product.setPrice1(rs.getInt("price1"));<br> product.setPrice2(rs.getInt("price2"));<br> product.setImage(rs.getString("image"));<br> //product.setName2(rs.getString("name2"));<br> productList.add(product);<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(conn, pstmt, rs);<br> }<br> return productList;<br> }</div> <div> public ArrayList<ProductVO> listBestProduct() {<br> ArrayList<ProductVO> productList = new ArrayList<ProductVO>();<br> String sql = "select * from best_pro_view";<br> Connection conn = null;<br> PreparedStatement pstmt = null;<br> ResultSet rs = null;<br> try {<br> conn = DBManager.getConnection();<br> pstmt = conn.prepareStatement(sql);<br> rs = pstmt.executeQuery();<br> while (rs.next()) {<br> ProductVO product = new ProductVO();<br> product.setPseq(rs.getInt("pseq"));<br> product.setName(rs.getString("name"));<br> product.setPrice1(rs.getInt("price1"));<br> product.setPrice2(rs.getInt("price2"));<br> product.setImage(rs.getString("image"));<br> //product.setName2(rs.getString("name2"));<br> productList.add(product);<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(conn, pstmt, rs);<br> }<br> return productList;<br> }</div> <div> public ProductVO getProduct(String pseq) {<br> ProductVO product = null;<br> String sql = "select * from product where pseq=?";<br> Connection con = null;<br> PreparedStatement pstmt = null;<br> ResultSet rs = null;<br> try {<br> con = DBManager.getConnection();<br> pstmt = con.prepareStatement(sql);<br> pstmt.setString(1, pseq);<br> rs = pstmt.executeQuery();<br> if (rs.next()) {<br> product = new ProductVO();<br> product.setPseq(rs.getInt("pseq"));<br> product.setName(rs.getString("name"));<br> product.setKind(rs.getString("kind"));<br> product.setPrice1(rs.getInt("price1"));<br> product.setPrice2(rs.getInt("price2"));<br> product.setPrice3(rs.getInt("price3"));<br> product.setContent(rs.getString("content"));<br> product.setImage(rs.getString("image"));<br> product.setUseyn(rs.getString("useyn"));<br> product.setBestyn(rs.getString("bestyn"));<br> product.setIndate(rs.getTimestamp("indate"));<br> product.setName2(rs.getString("name2"));<br> <font style="background-color:#ebf1dd;">product.setImage2(rs.getString("image2"));<br> product.setImage3(rs.getString("image3"));<br></font> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(con, pstmt, rs);<br> }<br> return product;<br> }</div> <div> public ArrayList<ProductVO> listKindProduct(String kind) {<br> ArrayList<ProductVO> productList = new ArrayList<ProductVO>();<br> String sql = "select * from product where kind=?";<br> Connection conn = null;<br> PreparedStatement pstmt = null;<br> ResultSet rs = null;<br> try {<br> conn = DBManager.getConnection();<br> pstmt = conn.prepareStatement(sql);<br> pstmt.setString(1, kind);<br> rs = pstmt.executeQuery();<br> while (rs.next()) {<br> ProductVO product = new ProductVO();<br> product.setPseq(rs.getInt("pseq"));<br> product.setName(rs.getString("name"));<br> product.setPrice2(rs.getInt("price2"));<br> product.setImage(rs.getString("image"));<br> //product.setName2(rs.getString("name2"));<br> productList.add(product);<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(conn, pstmt, rs);<br> }<br> return productList;<br> }</div> <div> /* 관리자 모드에서 사용되는 메소드 */</div> <div> public int totalRecord(String product_name) {<br> int total_pages = 0;<br> String sql = "select count(*) from product where name like '%'||?||'%'";<br> Connection con = null;<br> PreparedStatement pstmt = null;<br> ResultSet pageset = null;<br> try {<br> con = DBManager.getConnection();<br> pstmt = con.prepareStatement(sql);<br> if (product_name.equals("")) {<br> pstmt.setString(1, "%");<br> } else {<br> pstmt.setString(1, product_name);<br> }<br> pageset = pstmt.executeQuery();<br> if (pageset.next()) {<br> total_pages = pageset.getInt(1); // 레코드의 개수<br> pageset.close();<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(con, pstmt);<br> }<br> return total_pages;<br> }</div> <div> static int view_rows = 5; // 페이지의 개수<br> static int counts = 5; // 한 페이지에 나타낼 상품의 개수</div> <div> // 페이지 이동을 위한 메소드<br> public String pageNumber(int tpage, String name) {<br> String str = "";<br> int total_pages = totalRecord(name);<br> int page_count = total_pages / counts + 1;<br> if (total_pages % counts == 0) {<br> page_count--;<br> }<br> if (tpage < 1) {<br> tpage = 1;<br> }<br> int start_page = tpage - (tpage % view_rows) + 1;<br> int end_page = start_page + (counts - 1);<br> if (end_page > page_count) {<br> end_page = page_count;<br> }<br> if (start_page > view_rows) {<br> str += "<a href='NonageServlet?command=admin_product_list&tpage=1&key="<br> + name + "'><<</a> ";<br> str += "<a href='NonageServlet?command=admin_product_list&tpage="<br> + (start_page - 1);<br> str += "&key=<%=product_name%>'><</a> ";<br> }<br> for (int i = start_page; i <= end_page; i++) {<br> if (i == tpage) {<br> str += "<font color=red>[" + i + "] </font>";<br> } else {<br> str += "<a href='NonageServlet?command=admin_product_list&tpage="<br> + i + "&key=" + name + "'>[" + i + "]</a> ";<br> }<br> }<br> if (page_count > end_page) {<br> str += "<a href='NonageServlet?command=admin_product_list&tpage="<br> + (end_page + 1) + "&key=" + name<br> + "'> > </a> ";<br> str += "<a href='NonageServlet?command=admin_product_list&tpage="<br> + page_count + "&key=" + name<br> + "'> > > </a> ";<br> }<br> return str;<br> }</div> <div> public ArrayList<ProductVO> listProduct(int tpage, String product_name) {<br> ArrayList<ProductVO> productList = new ArrayList<ProductVO>();<br> String str = "select pseq, indate, name, price1, price2, useyn, bestyn, name2 "<br> + " from product where name like '%'||?||'%' order by pseq desc";<br> Connection con = null;<br> PreparedStatement pstmt = null;<br> ResultSet rs = null;<br> int absolutepage = 1;<br> try {<br> con = DBManager.getConnection();<br> absolutepage = (tpage - 1) * counts + 1;<br> pstmt = con.prepareStatement(str, ResultSet.TYPE_SCROLL_SENSITIVE,<br> ResultSet.CONCUR_UPDATABLE);<br> if (product_name.equals("")) {<br> pstmt.setString(1, "%");<br> } else {<br> pstmt.setString(1, product_name);<br> }<br> rs = pstmt.executeQuery();<br> if (rs.next()) {<br> rs.absolute(absolutepage);<br> int count = 0;<br> while (count < counts) {<br> ProductVO product = new ProductVO();<br> product.setPseq(rs.getInt(1));<br> product.setIndate(rs.getTimestamp(2));<br> product.setName(rs.getString(3));<br> product.setPrice1(rs.getInt(4));<br> product.setPrice2(rs.getInt(5));<br> product.setUseyn(rs.getString(6));<br> product.setBestyn(rs.getString(7));<br> product.setName2(rs.getString(8));<br> productList.add(product);<br> if (rs.isLast()) {<br> break;<br> }<br> rs.next();<br> count++;<br> }<br> }<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(con, pstmt, rs);<br> }<br> return productList;<br> }</div> <div> public int insertProduct(ProductVO product) {<br> int result = 0;<br> String sql = "insert into product ("<br> + "pseq, kind, name, price1, price2, price3, content, image, name2,<font style="background-color:#ebf1dd;"> image2, image3</font>) "<br> + "values(product_seq.nextval, ?, ?, ?, ?, ?, ?, ?, ?,<font style="background-color:#ebf1dd;"> ?, ?</font> )";<br> Connection con = null;<br> PreparedStatement pstmt = null;<br> try {<br> con = DBManager.getConnection();<br> pstmt = con.prepareStatement(sql);<br> pstmt.setString(1, product.getKind());<br> pstmt.setString(2, product.getName());<br> pstmt.setInt(3, product.getPrice1());<br> pstmt.setInt(4, product.getPrice2());<br> pstmt.setInt(5, product.getPrice3());<br> pstmt.setString(6, product.getContent());<br> pstmt.setString(7, product.getImage());<br> pstmt.setString(8, product.getName2());<br> <font style="background-color:#ebf1dd;">pstmt.setString(9, product.getImage2());<br> pstmt.setString(10, product.getImage3());<br></font> result = pstmt.executeUpdate();<br> } catch (Exception e) {<br> System.out.println("추가 실패");<br> e.printStackTrace();<br> } finally {<br> DBManager.close(con, pstmt);<br> }<br> return result;<br> }</div> <div> public int updateProduct(ProductVO product) {<br> int result = -1;<br> String sql = "update product set kind=?, useyn=?, name=?"<br> + ", price1=?, price2=?, price3=?, content=?, image=?, bestyn=?"<br> + ", name2=?,<font style="background-color:#ebf1dd;"> image2=?, image3=? </font>"<br> + "where pseq=?";<br> Connection con = null;<br> PreparedStatement pstmt = null;<br> try {<br> con = DBManager.getConnection();<br> pstmt = con.prepareStatement(sql);<br> pstmt.setString(1, product.getKind());<br> pstmt.setString(2, product.getUseyn());<br> pstmt.setString(3, product.getName());<br> pstmt.setInt(4, product.getPrice1());<br> pstmt.setInt(5, product.getPrice2());<br> pstmt.setInt(6, product.getPrice3());<br> pstmt.setString(7, product.getContent());<br> pstmt.setString(8, product.getImage());<br> pstmt.setString(9, product.getBestyn());<br> pstmt.setInt(10, product.getPseq());<br> pstmt.setString(11, product.getName2());<br> <font style="background-color:#ebf1dd;">pstmt.setString(12, product.getImage2());<br> pstmt.setString(13, product.getImage3());<br></font> result = pstmt.executeUpdate();<br> } catch (Exception e) {<br> e.printStackTrace();<br> } finally {<br> DBManager.close(con, pstmt);<br> }<br> return result;<br> }<br>}<br>--------------------------------------------------</div> <div>그리고 지금 제가 제일 갑갑한 AdminProductWriteAction.java 입니다</div> <div>위에 jsp로 작성된 파일들을 얘를 통해서 업로드하게 되어있는데요</div> <div>인터넷에 아무리 찾아보아도 다들 서블릿으로 작성하셔서 ㅠㅠ</div> <div>여기서 Enumeration 을 어떻게 적용해야할지 모르겠어요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ</div> <div> </div> <div>package com.nonage.admin.controller.action;</div> <div>import java.io.IOException;<br>import java.util.Enumeration;</div> <div>import javax.servlet.ServletContext;<br>import javax.servlet.ServletException;<br>import javax.servlet.http.HttpServletRequest;<br>import javax.servlet.http.HttpServletResponse;<br>import javax.servlet.http.HttpSession;</div> <div>import com.nonage.controller.action.Action;<br>import com.nonage.dao.ProductDAO;<br>import com.nonage.dto.ProductVO;<br>import com.oreilly.servlet.MultipartRequest;<br>import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;</div> <div>public class AdminProductWriteAction implements Action {</div> <div> @Override<br> public void execute(HttpServletRequest request, HttpServletResponse response)<br> throws ServletException, IOException {<br> String url = "NonageServlet?command=admin_product_list";<br> HttpSession session = request.getSession();<br> int sizeLimit = 5 * 1024 * 1024;<br> String savePath = "product_images";<br> ServletContext context = session.getServletContext();<br> String uploadFilePath = context.getRealPath(savePath);<br> <br> MultipartRequest multi = new MultipartRequest(request, // 1. 요청 객체<br> uploadFilePath, // 2. 업로드될 파일이 저장될 파일 경로명<br> sizeLimit, // 3. 업로드될 파일의 최대 크기(5Mb)<br> "UTF-8", // 4. 인코딩 타입 지정<br> new DefaultFileRenamePolicy() // 5. 덮어쓰기를 방지 위한 부분<br> ); // 이 시점을 기해 파일은 이미 저장이 되었다<br> <br> Enumeration formNames = multi.getFileNames();<br> <br> ProductVO productVO = new ProductVO();<br> productVO.setKind(multi.getParameter("kind"));<br> productVO.setName(multi.getParameter("name"));<br> productVO.setPrice1(Integer.parseInt(multi.getParameter("price1")));<br> productVO.setPrice2(Integer.parseInt(multi.getParameter("price2")));<br> productVO.setPrice3(Integer.parseInt(multi.getParameter("price2"))<br> - Integer.parseInt(multi.getParameter("price1")));<br> productVO.setContent(multi.getParameter("content"));<br> productVO.setImage(multi.getFilesystemName("image"));<br> productVO.setImage2(multi.getFilesystemName("image2"));<br> productVO.setImage3(multi.getFilesystemName("image3"));<br> productVO.setName2(multi.getParameter("name2"));<br> ProductDAO productDAO = ProductDAO.getInstance();<br> productDAO.insertProduct(productVO); <br> response.sendRedirect(url);</div> <div> }</div> <div>}<br></div> <div>--------------------------------------------------------------------</div> <div>소스는 일단 너무 기니 여기까지 구요 더 필요하신 부분 있으면 말씀해주세요 ㅠㅠ</div> <div>제발 부탁드립니다 ㅠㅠㅠㅠ</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.