JSP

 

파일 업로드 COS.jar  등록

 

다운로드 사이트

http://servlets.com/cos/

 

다운로드 링크 주소 :   http://servlets.com/cos/cos-26Dec2008.zip

 

 

AdminProductWriteFormAction

package net.macaronics.web.admin.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.macaronics.web.controll.action.Action;

public class AdminProductWriteFormAction implements Action {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String url="admin/product/productWrite.jsp";
		String kindList[] ={"남성운동화", "여성운동화","남성구두", "여성구두", "On Sale"};
		request.setAttribute("kindList", kindList);
		request.getRequestDispatcher(url).forward(request, response);
	}
	
	
}

 

 

productWrite.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      
<!DOCTYPE html>
<html class="no-js">   
    <head>
<jsp:include page="../../include/AdminHeader.jsp" />
        <!-- Bootstrap -->
<link rel="stylesheet" type="text/css" href="../../Bootstrap-Admin/vendors/bootstrap-wysihtml5/src/bootstrap-wysihtml5.css"></link>

    </head>   
    <body>
<jsp:include page="../../include/AdminTopFixMenu.jsp" />   
   
        
        <div class="container-fluid">
            <div class="row-fluid">
                <div class="span3" id="sidebar">
					 <jsp:include page="../../include/AdminLeftMenu.jsp" />   
                </div>
                
                <!--/span-->
                <div class="span9" id="content">
                    <div class="row-fluid">
                        <div class="alert alert-success">
							<button type="button" class="close" data-dismiss="alert">&times;</button>
                            <h4>상품 등록</h4>
                        </div>
                    	</div>
                   
                   <div>
                   <form action="MacaronicsServlet?command=admin_product_write" method="post" enctype="multipart/form-data"  name="form1">	 
                   	 <div class="table-responsive">
                   	 <table class="table">
           				<tr>
           				 <th class="success">상품 분류</th>
           				 <td colspan="5">
           				 	<select class="span6 m-wrap" name="kind">
           				 		<c:forEach items="${kindList }" var="kind" varStatus="status">
           				 			<option value="${status.count}">${kind }</option>
           				 		</c:forEach>
           				 	</select>
           				 </td>
           				</tr>		
           				
           				<tr>
           				 <th class="success">상품명</th>
           				 <td colspan="5"><input type="text" name="name" id="name"></td>
           				</tr>	
           				
           				<tr>
           				 <th>원가</th><td><input type="number" name="price1"  id="price1" min="1000"></td>
           				 <th>판매가</th><td><input type="text" name="price2" id="price2" onblur="go_ab()" min="1000"></td>
           				 <th>마진</th><td width="10%"><input type="text" name="price3" id="price3" readonly="readonly"></td>
           				</tr>	
           			   
           			   <tr>
           				 <th>베스트 상품</th><td><input type="checkbox"  name="bestyn"  /></td>
           				 <th>사용유무</th><td colspan="3"><input type="checkbox"  name="useyn"  checked="checked"/></td>
           				</tr>	
           			    
           			    <tr>
           				 <th>상세설명</th>
           				 <td colspan="5"> 
	                      <textarea id="bootstrap-editor" style="width:98%;height:200px;" name="content"></textarea> 
           				 </td>
           				</tr>
           				
           			 <tr>
           				 <th>상품 이미지</th>
           				 <td colspan="5"> 
	                       <input type="file" name="image" id="image"> 
           				 </td>
           				</tr>	
           							
           			 </table>
           			 
                   	 </div>
                   	<div class="text-center">
           			 		<input type="button" value="등록"  class="btn btn-success" onclick="productSubmit()">
           			 		<input type="reset" value="취소"  class="btn btn-warning">
           			 	</div>
            	</form>
           			 
                   </div>
            
                    
                    </div>
                </div>
           
            </div>
            <hr>


<div style="margin-bottom: 150px;">
&nbsp;
</div>
     <!-- FOOTER -->
<nav class="avbar navbar-inverse navbar-fixed-bottom" style="height:50px  ;  background-color:#000  ;">
  <div class="container text-center" style="color:#fff;">
  <p>&nbsp;</p>
   <p ><a href="http://macaronics.net/" style="   color:#fff;">Macaronics.net</a></p>  
    <p>&nbsp;</p><p>&nbsp;</p>
  </div>
</nav>


        <!--/.fluid-container-->
        <script src="../../Bootstrap-Admin/vendors/bootstrap-wysihtml5/lib/js/wysihtml5-0.3.0.js"></script>
        <script src="../../Bootstrap-Admin/vendors/jquery-1.9.1.min.js"></script>
        <script src="../../Bootstrap-Admin/bootstrap/js/bootstrap.min.js"></script>
		<script src="../../Bootstrap-Admin/vendors/bootstrap-wysihtml5/src/bootstrap-wysihtml5.js"></script>
<script src="../../Bootstrap-Admin/vendors/bootstrap-wysihtml5/src/bootstrap-wysihtml5.js"></script>

 <script type="text/javascript">

$(function() {
    
	// Bootstrap
	$('#bootstrap-editor').wysihtml5();
	
});




function go_ab(){
	
	var price1=$("#price1").val();
	var price2=$("#price2").val();
	if($.trim(price2) <= $.trim(price1)){
		alert("판매가는 원가 보다 작을 수 없습니다.");
		$("#price1").val("");
		$("#price2").val("");
		$("#price1").focus();
		
		return;
	}
	$("#price3").val(price2-price1);
	
}
function productSubmit(){
	var name=$("#name").val();
	var price1=$("#price1").val();
	var price2=$("#price2").val();
	var content =$("content").val();
	
	if(name==""){
		alert("상품명을 입력해 주세요.");
		$("#name").focus();
		return ;
	}
	
	if(price1==""){
		alert("원가를 입력해 주세요.");
		$("#price1").focus();
		return ;
	}
	
	
	
	if(price2==""){
		alert("판매가를 입력해 주세요.");
		$("#price2").focus();
		return;
	}
	
	if( $("#image").val() != "" ){

		var ext = $('#image').val().split('.').pop().toLowerCase();
	    if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {

		 alert('gif,png,jpg,jpeg 파일만 업로드 할수 있습니다.');

		 return;
	   }
	    
		document.form1.submit();    
	}else{
		 alert('이미지를 선택해 주세요');
		 return;
	}
	
	
}





</script>      

 
 </body>
</html> 
            
 


		

  

 

 

AdminProductWriteAction

package net.macaronics.web.admin.controller;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

import net.macaronics.web.admin.controller.dao.AdminProductDAO;
import net.macaronics.web.controll.action.Action;
import net.macaronics.web.dto.ProductVO;

public class AdminProductWriteAction implements Action {
  
	private static Logger logger =LogManager.getLogger(AdminProductWriteAction.class);
	
	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String url="MacaronicsServlet?command=admin_product_list";
		
		HttpSession session=request.getSession();
				
		int sizeLimit =5 * 1024 * 1024;
		String savePath="images";
		String uploadFilePath =session.getServletContext().getRealPath(savePath);
		
		MultipartRequest multi=new MultipartRequest(request, //1.요청객체 
			uploadFilePath, //2.업로드될 파일이 저장될 파일 경로명
			sizeLimit, //3. 업로드될 파일의 최대 크기 (5MB)
			"UTF-8", //4. 인코딩 타입 지정
			new DefaultFileRenamePolicy()  // 5. 덮어씌기를 방지 위한 부분
		); // 이 시점을 기해 파일은 이미 저장이 되었다.
		
		
		String bestyn=multi.getParameter("bestyn");
		String useyn=multi.getParameter("useyn");
		if(bestyn==null) bestyn="n";
		else bestyn="y"; 	
		
		if(useyn==null) useyn="n";
		else useyn="y";
		
		ProductVO productVO=new ProductVO();
		productVO.setKind(multi.getParameter("kind"));
		productVO.setName(multi.getParameter("name"));
		productVO.setPrice1(Integer.parseInt(multi.getParameter("price1")));
		productVO.setPrice2(Integer.parseInt(multi.getParameter("price2")));
		productVO.setPrice3(Integer.parseInt(multi.getParameter("price2")) - Integer.parseInt(multi.getParameter("price1")));
		
		productVO.setBestyn(bestyn);
		productVO.setUseyn(useyn);
		
		productVO.setContent(multi.getParameter("content"));
		productVO.setImage(multi.getFilesystemName("image"));
		
		logger.info("AdminProductWriteAction -   {}" , productVO.toString());
		
		AdminProductDAO adminProductDAO =AdminProductDAO.getInstance();
		adminProductDAO.insertProudct(productVO);
		response.sendRedirect(url);
		
	}
	

	
	
}

 

DAO

	//상품 등록
	public void insertProudct(ProductVO product){
		try{
			sqlSession=MybatisService.getFactory().openSession();
			sqlSession.insert("adminProduct.insertProudct", product);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			sqlSession.commit();
			MybatisService.sessionClose(sqlSession);
		}
		
	}

 

 

mapper

	<insert id="insertProudct">
	insert into TBL_PRODUCT(pseq, name, kind, price1, price2, price3, content, image , useyn, bestyn) values(
product_seq.nextval, #{name}, #{kind}, #{price1}, #{price2}, #{price3}, #{content}, #{image}, #{useyn}, #{bestyn} )
	</insert>

 

 

 

 

제작 : macaronics.net - Developer  Jun Ho Choi

소스 :  https://github.com/braverokmc79/jsp_sin

 

${request.getContextPath() } 처리를 안한 부분이 있으므로 

루트 설정( http://macaronics.net/index.php/m01/jsp/view/1352)    및 server.xml  에서 DB 컨넥션 설정은 필수 설정이다.

 

 

about author

PHRASE

Level 60  라이트

As one sows, so shall he reap. (自業自得

댓글 ( 4)

댓글 남기기

작성