1. http://www.servlets.com/cos/ 에서 cos~ 에 관한 파일을 다운받은후 압축을 풀고 cos.jar 파일을 WEB-INF 의 lib 폴더에 넣는다
폼을 만드는데 반드시 폼 타입을 method="post" enctype="multipart/form-data" 로 줘야한다(반드시)
파일이 저장되는 실제 경로 구하기
ServletContext context=getServletContext();
String realFolder=context.getRealPath("/upload");
System.out.println("업로드경로:"+realFolder); //콘솔로 경로확인
4. MultipartRequest 라는 클래스를 사용
생성자 (request,fileDirectory(업로드할 경로),1024*5(업로드할 파일의 크기),
"euc-kr"(한글타입) , new DefaultFileRenamePolicy() ←같은이름이 있을경우 다른이름으로 저장 )
5. 메소드
1) getParameterNames() : input 타입의 name들을 반환 (반환값:Enumeration)
2) getParameter("name") : name 에 해당하는 value 값 반환
3) getFileNames() : input 타입에서 속성이 file 로 된 이름들을 반환(반환값:Enumeration)
4) getFilesystemName(name) : 실제 업로드된 파일명(동일한이름일경우 변경된 이름반환)
5) getOriginalFileName(name) : 변경되기 전의 원래 파일명
6) getFile(name) : File 타입 리턴(파일 크기등을 알아볼수 있다)
<body>
<form action="uploadAction.jsp" method="post" enctype="multipart/form-data">
<table class="table table-bordered" style="width: 500px">
<tr>
<th width="100">이름</th>
<td>
<input type="text" name="name" class="form-control" style="width: 150px">
</td>
</tr>
<tr>
<th width="100">제목</th>
<td>
<input type="text" name="title" class="form-control" style="width: 350px">
</td>
</tr>
<tr>
<th width="100">파일</th>
<td>
<input type="file" name="uploadFile">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit" class="btn btn-success">업로드</button>
</td>
</tr>
</table>
</form>
</body>
<body>
<%
ServletContext context=getServletContext();
String realFolder=context.getRealPath("/save");
System.out.println(realFolder); //경로확인
int fileSize=1024*1024*5; //5mb
%>
<%
MultipartRequest multi=null;
try{
multi=new MultipartRequest(request,realFolder,fileSize,"utf-8",new DefaultFileRenamePolicy()); //new DefaultFileRenamePolicy()는 파일명 중복허용하기 위해 사용
String name=multi.getParameter("name");
String title=multi.getParameter("title");
String uploadFileName=multi.getFilesystemName("uploadFile");
String originalFileName=multi.getOriginalFileName("uploadFile");
%>
<table>
<tr>
<th>이름</th>
<td><%=name %></td>
</tr>
<tr>
<th>제목</th>
<td><%=title %></td>
</tr>
<tr>
<th>업로드 파일</th>
<td><img src="../save/<%=uploadFileName %>"></td>
</tr>
<tr>
<th>업로드 파일명</th>
<td><%=originalFileName %></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="button" value="업로드 다시하기"
onclick="location.href='uploadForm.jsp'">
</td>
</tr>
</table>
<%} catch(Exception e){
}
%>
</body>
<body>
<!--폼태그에 데이터 입력후 jsp로 보내기-->
이름: <input type="text" id="name"><br>
핸드폰: <input type="text" id="hp"><br>
<button type="button" id="btn1">ajax로 서버에 보내기 #1</button>
<button type="button" id="btn2">ajax로 서버에 보내기 #2</button>
<div id="show"></div>
</body>
<script>
$("#btn1").click(function(){
//입력한 값들을 읽는다
var name=$("#name").val();
var hp=$("#hp").val();
var data="name="+name+"&hp="+hp; //방법1
//alert(data);
//ajax함수를 통해서 백앤드로 데이터를 보낸다
$.ajax({
type:"get",
url:"ex01_read1.jsp",
dataType:"html", //아무것도 return하지 않는 경우는 html
data:data,
//data:{"name":name,"hp":hp}, //json처럼 직접 넘겨도 됨
success:function(res){
//alert("success");
$("#show").html("<h4>"+data+"</h4>");
}
});
});
</script>
<script>
$("#btn2").click(function(){
//입력한 값 읽기
var name=$("#name").val();
var hp=$("#hp").val();
//ajax함수 통해서 백앤드로 데이터 보낸다
$.ajax({
type:"get",
url:"ex01_read2.jsp",
dataType:"html",
data:{"name":name,"hp":hp}, //방법2
success:function(res){
var s="<h2>"+name+"님 데이터를 DB에 추가함</h2>";
$("#show").html(s);
}
});
});
</script>
<!--이를 받는 jsp 파일-->
<body>
<%
String name=request.getParameter("name");
String hp=request.getParameter("hp");
System.out.println("name:"+name);
System.out.println("hp:"+hp);
%>
</body>
<body>
<form id="frm">
<table>
<tr>
<th>상품코드</th>
<td>
<input type="text" name="s_code" id="s_code">
</td>
</tr>
<tr>
<th>상품명</th>
<td>
<input type="text" name="s_name" id="s_name">
</td>
</tr>
<tr>
<th>가격</th>
<td>
<input type="text" name="s_price" id="s_price">
</td>
</tr>
<tr>
<th>색상</th>
<td>
<input type="radio" name="color" value="yellow">노랑
<input type="radio" name="color" value="red">빨강
<input type="radio" name="color" value="orange">주황
<input type="radio" name="color" value="green">초록
<input type="radio" name="color" value="white">하양
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="button" id="btn">데이터 백앤드로 보내기</button>
</td>
</tr>
</table>
</form>
<br>
<div id="show"></div>
</body>
<script>
$("#btn").click(function(){
var data=$("#frm").serialize(); //form의 모든 name 값을 읽어옴
//alert(data);
$.ajax({
type:"get",
url:"ex02_read.jsp",
dataType:"json",
data:data,
success:function(res){
var s="상품코드:"+res.code+"<br>";
s+="상품명:"+res.name+"<br>";
s+="가격:"+res.price+"<br>";
s+="색상:"+res.color+"<br>";
$("#show").html(s);
}
});
});
</script>
<%
String code=request.getParameter("s_code");
String name=request.getParameter("s_name");
String price=request.getParameter("s_price");
String color=request.getParameter("color");
JSONObject ob=new JSONObject();
ob.put("code",code);
ob.put("name",name);
ob.put("price",price);
ob.put("color",color);
%>
<%=ob.toString() %>
<body>
<div>
<b>사진선택:</b>
<select id="selImg">
<option value="01">클로버</option>
<option value="02">마리오</option>
<option value="03">콘솔</option>
<option value="04">별약</option>
<option value="05">하뚜</option>
</select>
<br>
<input type="text" id="like1">
<input type="text" id="like2">
<input type="text" id="like3">
<button type="button" id="btn">데이터전송</button>
<br>
<div id="show"></div>
</div>
</body>
<script>
$("#btn1").click(function(){
var photono=$("#selImg").val();
var photoname=$("#selImg option:selected").text();
var like1=$("#like1").val();
var like2=$("#like2").val();
var like3=$("#like3").val();
var s="photono="+photono+"&photoname="+photoname+
"&like1="+like1+"&like2="+like2+"&like3="+like3;
//alert(s);
$.ajax({
type:"get",
url:"ex03_receive.jsp",
dataType:"json",
data:s,
success:function(res){
var str="이름:"+res.name+"<br>";
str+="<img src='../image/logoImg/icon"+res.photo+".png'><br>";
str+="평점1:"+res.like1+"<br>";
str+="평점2:"+res.like2+"<br>";
str+="평점3:"+res.like3+"<br>";
str+="총점:"+res.sum+"<br>";
str+="평균:"+res.avg+"<br>"
$("#show").html(str);
}
});
});
</script>
<%
//front에서 보낸 데이터 읽어오기
String photono=request.getParameter("photono");
String photoname=request.getParameter("photoname");
String like1=request.getParameter("like1");
String like2=request.getParameter("like2");
String like3=request.getParameter("like3");
//총점==>String을 int로 변환
//평균
int sum=Integer.parseInt(like1)+Integer.parseInt(like2)+Integer.parseInt(like3);
double avg=sum/3;
//front형태로 만들어서 다시 front로 보내기(Json)
JSONObject ob=new JSONObject();
ob.put("photo",photono);
ob.put("name",photoname);
ob.put("like1",like1);
ob.put("like2",like2);
ob.put("like3",like3);
ob.put("sum",sum);
ob.put("avg",avg);
%>
<%=ob.toString() %>