* 서버에 파일 전송하는 방법

 

1. 태그문법
<a href="파일명"></a>

 

2. jsp문법
response.sendRedirect("파일명")

 

3. 자바스크립트문법
location="파일명"

 

4. form 양식
action="파일명"

 

- 웹페이지에서 파일 이동을 할때 특정값을 가지고 갈수 있다.
   값을 가지고 갈 경우에는 ? 뒤에 변수명=값 형태로 작성한다
- 전달되는 값이 2개 이상일 경우에는 &로 연결한다
- 주의: ? 뒤에 오는 구문을 코딩할 경우에는 공백문자(spacebar)를
          주면 안된다
          sungjukView.jsp? idx=5 & kor=60 <--주의사항
- ?뒤에 오는 값은 get방식으로 서버에 전송된다  


* 수정페이지
- 쓰기+상세보기 페이지가 합쳐져 있는 것.

* include 디렉티브
  - DB연결등과 같은 반복적인 작업을 할 경우
    공통부분에 해당하는 내용만 발췌해서 저장하고
    문서 포함을 시킨다.
  - 공통적으로 포함될 내용을 가진 파일을 해당 JSP페이지내에 삽입하는 기능을 제공한다.

  - <%@ include file="파일명" %>

  - New -> JSP File -> ssi.jsp

  - ssi.jsp파일의 첫줄과 작업페이지의 첫줄은 반드시 동일해야 한다

  - ssi.jsp파일 내용을 현재 작업페이지에 복사해 준 것 임.


* <input type="hidden">
 - 폼요소이지만 브라우저에 출력되지는 않는다.
 - primary key, 페이지등 프로그램 작성에 필요한 값을 담아서
    서버로 가지고 갈때 주로 사용된다.

 

sungjukView.jsp--------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement"%>
<%@ page import="java.sql.ResultSet" %>

<%
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";

Connection con=null;
ResultSet rs=null;

Class.forName(driver);
con=DriverManager.getConnection(url,user,password);

int idx=Integer.parseInt(request.getParameter("idx"));
String sql="SELECT * FROM tb_sungjuk";
sql+=" WHERE sno=?";

PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1,idx);
rs=pstmt.executeQuery();//ResultSet에 담기
  
%>
   
<!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>
<center>
* 성적페이지 상세보기 * <br/>
<%
if (rs.next())
{ //레코드포인터가 가르킬 요소가 있는지? 있으면 출력       
%>
   <table border="1">
   <tr>
     <td>이름</td>
     <td><%=rs.getString("uname")%></td>
   </tr>
   <tr>
     <td>국어</td>
     <td><%=rs.getInt("kor")%></td>
   </tr>
   <tr>
     <td>영어</td>
     <td><%=rs.getInt("eng")%></td>
   </tr>
   <tr>
     <td>수학</td>
     <td><%=rs.getInt("mat")%></td>
   </tr>
   <tr>
     <td>평균</td>
     <td><%=rs.getInt("aver")%></td>
   </tr>
   <tr>
     <td>주소</td>
     <td><%=rs.getString("address")%></td>
   </tr>
   <tr>
     <td>작성일</td>
     <td><%=rs.getString("regdt").substring(0,10)%></td>
   </tr>
   </table>
<%
}
else
{  //레코드포인터가 가르킬 요소가 없을 경우
    out.print("해당하는 레코드 없음!!");
}
%>

<a href="sungjukList.jsp">목록</a>
    <!-- 공백문자 -->
<a href="sungjukEdit.jsp?idx=<%=rs.getInt("sno")%>">수정</a>
   
<a href="sungjukDel.jsp?idx=<%=idx%>">삭제</a>

</center>
</body>
</html>

<%
try{
    if ( rs != null){ rs.close(); }
}catch(Exception e){}           
try{
    if ( pstmt != null){ pstmt.close(); }
}catch(Exception e){}           
try{
    if ( con != null){ con.close(); }
}catch(Exception e){}
%>


sungjukDel.jsp---------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement"%>

<%
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";

Connection con=null;
Class.forName(driver);
con=DriverManager.getConnection(url,user,password);

int idx=Integer.parseInt(request.getParameter("idx"));
String sql="DELETE FROM tb_sungjuk";
sql+=" WHERE sno=?";

PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1,idx);

int res=pstmt.executeUpdate();//쿼리문 성공 1

if(res==1)
    //request객체 사용자->서버
    //response객체 서버->사용자
    response.sendRedirect("sungjukList.jsp");
else
    out.print("레코드삭제 실패!!");
%>

<%       
try{
    if ( pstmt != null){ pstmt.close(); }
}catch(Exception e){}           
try{
    if ( con != null){ con.close(); }
}catch(Exception e){}
%>

ssi.jsp--------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement"%>
<%@ page import="java.sql.ResultSet" %>

<%
String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";

Connection con=null;
ResultSet rs=null;
PreparedStatement pstmt=null;

Class.forName(driver);
con=DriverManager.getConnection(url,user,password);

//request객체가 가지고 있는 한글값을 euc-kr로 인코딩해 줌
request.setCharacterEncoding("euc-kr");
%>


<%!
//jsp에서 메소드 작성할때
public void close(Connection con, PreparedStatement pstmt)
{
    try{
        if ( pstmt != null){
            pstmt.close();
        }
    }catch(Exception e){}           
    try{
        if ( con != null){
            con.close();
        }
    }catch(Exception e){}
}//end

public void close(Connection con,
                  PreparedStatement pstmt,
                  ResultSet rs)
{
    try{
        if ( rs != null){ rs.close(); }
    }catch(Exception e){}           
    try{
        if ( pstmt != null){ pstmt.close(); }
    }catch(Exception e){}           
    try{
        if ( con != null){ con.close(); }
    }catch(Exception e){}  
}//end
%>

 

 


sungjukEdit.jsp------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<%@ include file="ssi.jsp" %>

<%
int idx=Integer.parseInt(request.getParameter("idx"));
String sql="SELECT * FROM tb_sungjuk";
sql+=" WHERE sno=?";

pstmt=con.prepareStatement(sql);
pstmt.setInt(1,idx);
rs=pstmt.executeQuery();
%>
   
<!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>
<center>
* 성적수정 *<br/>
<%
if (rs.next()){
%>
    <form name="myform" method="post" action="sungjukEditok.jsp">
    <input type="hidden" name="idx" value="<%=idx%>">
    <table border="1">
    <tr>
      <td>이름</td>
      <td>
        <input type="text" name="uname" value="<%=rs.getString("uname")%>">
      </td>
    </tr> 
    <tr>
      <td>국어</td>
      <td>
        <input type="text" name="kor" value="<%=rs.getInt("kor")%>">
      </td>
    </tr> 
    <tr>
      <td>영어</td>
      <td>
        <input type="text" name="eng" value="<%=rs.getInt("eng")%>">
      </td>
    </tr> 
    <tr>
      <td>수학</td>
      <td>
        <input type="text" name="mat" value="<%=rs.getInt("mat")%>">
      </td>
    </tr> 
    <tr>
      <td>평균</td>
      <td>
        <input type="text" name="aver" value="<%=rs.getInt("aver")%>" readonly>
      </td>
    </tr> 
    <tr>
      <td>주소</td>
      <td>
        <input type="text" name="address" value="<%=rs.getString("address")%>">
      </td>
    </tr> 
    </table>
   
    <input type="submit" value="수정">
    <input type="reset" value="취소">
    </form>   
<%
}

else{
  out.print("관련 레코드 없음!!");  
}
%>
</center>
</body>
</html>
<%
//close 오버로딩 함수 호출
close(con,pstmt,rs);
%>
sungjukEditok.jsp----------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ include file="ssi.jsp" %>

<%
int idx=Integer.parseInt(request.getParameter("idx"));
String uname=request.getParameter("uname");
int kor=Integer.parseInt(request.getParameter("kor"));
int eng=Integer.parseInt(request.getParameter("eng"));
int mat=Integer.parseInt(request.getParameter("mat"));
int aver=(kor+eng+mat)/3;
String address=request.getParameter("address");

String sql="UPDATE tb_sungjuk";
sql+=" SET uname=?";
sql+=" ,kor=?";
sql+=" ,eng=?";
sql+=" ,mat=?";
sql+=" ,aver=?";
sql+=" ,address=?";
sql+=" WHERE sno=?";

pstmt=con.prepareStatement(sql);
pstmt.setString(1,uname);
pstmt.setInt(2,kor);
pstmt.setInt(3,eng);
pstmt.setInt(4,mat);
pstmt.setInt(5,aver);
pstmt.setString(6,address);
pstmt.setInt(7,idx);

int res=pstmt.executeUpdate();//쿼리문 성공 1

if(res==1)
    response.sendRedirect("sungjukList.jsp");
else
    out.print("레코드수정 실패!!");
%>

<%
close(con,pstmt,rs);
%>

-------------------------

* 함수 오버로딩 복습(숙제)
* 수정페이지 sungjukEdit.jsp 유효성 검사
   추가페이지 sungjukInt.jsp참조

 

 

 

 

sungjukIns.jsp

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.PreparedStatement"%>

<%

//사용자가 넘긴 문자를 euc-kr형태로 인코딩함.
request.setCharacterEncoding("euc-kr");

//사용자 넘긴 값 가져오기
String uname=request.getParameter("uname");
int kor=Integer.parseInt(request.getParameter("kor"));
int eng=Integer.parseInt(request.getParameter("eng"));
int mat=Integer.parseInt(request.getParameter("mat"));
int aver=(kor+eng+mat)/3;
String address=request.getParameter("address");

String sql="INSERT INTO tb_sungjuk";
sql+=" (uname,kor,eng,mat,aver,address,regdt)";
sql+=" VALUES(?,?,?,?,?,?,now())";

//My-SQL연동에 필요한 자료들 복사해 오기
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String driver="org.gjt.mm.mysql.Driver";
String user="root";
String password="1234";

Connection con=null;
//Statement stmt=null;
       
try{
   Class.forName(driver);
   con=DriverManager.getConnection(url,user,password);
   //stmt=con.createStatement();
   //pstmt객체에 쿼리문 읽어들임
   PreparedStatement pstmt=con.prepareStatement(sql);
   pstmt.setString(1,uname);
   pstmt.setInt(2,kor);
   pstmt.setInt(3,eng);
   pstmt.setInt(4,mat);
   pstmt.setInt(5,aver);
   pstmt.setString(6,address);
   //쿼리문실행. 성공하면 1 리턴
   int res=pstmt.executeUpdate();
   //out.print("res="+res);
  
   if(res==1)
       response.sendRedirect("sungjukList.jsp");//파일이동
   else
       out.print("insert 실패!!");       
  

}catch(Exception e){}

 

%>

--------------------------------------------

 

sungjukList.jsp

 

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement"%>
<%@ page import="java.sql.ResultSet" %>
<%

String driver="org.gjt.mm.mysql.Driver";
String url="jdbc:mysql://localhost:3306/erpjavadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";

Connection con=null;
ResultSet rs=null;

Class.forName(driver);
con=DriverManager.getConnection(url,user,password);

String sql="SELECT * FROM tb_sungjuk";
sql+=" ORDER BY sno DESC"; //sno내림차순 정렬

PreparedStatement pstmt=con.prepareStatement(sql);//쿼리문 생성
rs=pstmt.executeQuery();// SELECT
  
%>

<!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>

<center>
* 성 / 적 / 리 / 스 / 트 * <br/>
<table border=1>
<tr>
  <td>번호</td>
  <td>이름</td>
  <td>국어</td>
  <td>영어</td>
  <td>수학</td>
  <td>평균</td>
</tr>
<%
  int su=1;
  String bgcolor="";
  while(rs.next())
  {
      if(su%2==0)
          bgcolor="#ff99ff";
      else
          bgcolor="#3399ff";
     
      int sno=rs.getInt("sno");
%>
    <tr bgcolor="<%=bgcolor%>">
       <td><%=rs.getInt("sno")%></td>
       <td><a href="sungjukView.jsp?idx=<%=sno%>"><%=rs.getString("uname")%></a></td>
       <td><%=rs.getInt("kor")%></td>
       <td><%=rs.getInt("eng")%></td>
       <td><%=rs.getInt("mat")%></td>
       <td><%=rs.getInt("aver")%></td>
 </tr>
<%
     su++;
  }
%>
</table>

<br/>
<a href="sungjukForm.html">성적추가</a>

</center>
</body>
</html>

<%
try{
    if ( rs != null){ rs.close(); }
}catch(Exception e){}           
try{
    if ( pstmt != null){ pstmt.close(); }
}catch(Exception e){}           
try{
    if ( con != null){ con.close(); }
}catch(Exception e){}
%>

 

 


 

* 톰캣 웹서버에 mysql 라이브러리 복사하는 순서


- 톰캣에서 My-SQL를 인식하기 위한 라이브러리가 필요하며,
   드라이버 로딩가능하다.

- 외부 응용프로그램을 사용하려면 library에 관련된 .jar파일을
   웹서버(톰캣)에 복사 해야한다

- 톰캣 홈디렉토리에서 green 폴더안에 WEB-INF 폴더 생성

   D:\ERPJava_04\tomcat-60\webapps\green\WEB-INF 폴더안에
    lib 와 classes 폴더 생성

   D:\ERPJava_04\tomcat-60\webapps\green\WEB-INF\lib 폴더에
   My-SQL 드라이버(.jar)복사해서 붙여 넣기

 

* 라이브러리가 수정이 되면 톰캣서버 재부팅 반드시 할것!!!

-------------------------------------------

 

* 이클립스에서 톰캣 연동

 

- 이클립스에서 톰캣을 연동하면 브라우저에서 결과값 출력할때
   자동으로 톰캣서버를 실행(Run on Server)을 해 주기 때문에 편리하다

- Window -> Preferences -> Server ->
   Runtime Environments -> Add -> Apache v6.0 -> Next
    -> Browse... -> tomcat-60설치 폴더 선택


* Eclipse에서 Web Application 생성


1. 성적 프로젝트 설정

- New -> Dynamic Web Project -> Project name : sungjuk
   메뉴가 보이지 않을 경우에는 Other... 에서 찾는다

- sungjuk프로젝트 생성후

   .Java Resources->src : .java파일 작성

   .WebContent폴더는 웹에 관련된 파일(.html, .jsp)을 저장하는 가상폴더로
                   실제 웹에서 경로를 지정할 때는 생략된다

   .WebContent->WEB-INF->lib 폴더에 mysql 드라이버 복사하기

   .WebContent-> New -> Html File -> sungjukForm.html 생성

   .WebContent-> New -> JSP File -> sungjukIns.jsp 생성

 

- 결과 확인하는 방법
   .sungjukForm.html에서 Run on Server
   .결과 확인할때 이클립스내에서 확인할수 있고
   .브라우저를 실행해서 확인할수 있는 방법도 있다.
   .Window->Web Browser에서 조절한다.

 

* 유효성 검사
- 사용자에 의해 입력된 값이 제대로 입력되었는지 확인하는 작업
   주로 JavaScript가 그 역할을 담당한다
   .숫자를 제대로 입력했는가?
   .아이디가 공백인가?
   .이메일 주소에 @ 문자를 입력했는가?
   .주민번호와 이름이 일치하는 실명인가? 에 대한 유효성 검사는 불가능하다.

 

- JavaScript
   -> jQuery로 발전하고 있음

 

- 자바스크립트에서 유효성검사를 해야 하는 시점
   .폼이 전송될 때 할것인가?
   .커서가 다음 요소로 이동될 때 할것인가?

 

- 자바스크립트는 이벤트를 발생시킨후 함수호출에 의해 작동되게끔 프로그램을 구현한다

 

* 자바스크립트의 특징
  - 대소문자를 엄격히 구분한다
  - 자료형이 없다 (int double String이 존재하지 않는다)
  - 함수의 리턴형이 없다
  - 완벽한 객체지향언어는 아니다
  - 웹브라우저에 의해 해석된다
  - 최상위 객체 window

 

* JSP페이지에 HTML 태그를 사용할 명령어가 많을 경우에는
  차라리 HTML 페이지에 JSP코드를 삽입하는게 수월하다

 

#################################################################

 

sungjukForm.html---------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> 성적폼 작성 </title>

 <script type="text/javascript">
 <!--
 function Check()
 {
  var uname=document.myform.uname.value;
  //document->body를 가르키는 객체

  //이름 앞뒤의 공백 제거
     //trim()함수가 없음으로 정규 표현식으로 공백제거
  uname=uname.replace(/^\s*|\s*$/g, '');

  if(uname.length==0)
  {
   //메세지상자
   alert("이름입력바람!!");
   document.myform.uname.value="";
   //uname 텍스트상자에 커서 생성
   document.myform.uname.focus();
   return; //Check()함수호출부분으로 되돌아감
  }

  //숫자로 입력이 되어 있는지 확인
  var kor=document.myform.kor.value;
  if(isNaN(kor)||kor.length==0)
  { 
      //따옴표 안에 문자가 입력되면 true반환
   alert("국어점수 숫자로 제대로 입력바람!!");
   document.myform.kor.value="";
   document.myform.kor.focus();
   return;
  }
     
     kor=parseInt(kor);
  if(!(kor>=0 && kor<=100))
  {
   alert("국어점수 0~100사이 입력바람!!");
   document.myform.kor.value="";
   document.myform.kor.focus();
   return;
  }

  var eng=document.myform.eng.value;
  if(isNaN(eng)||eng.length==0)
  { 
   alert("영어점수 숫자로 제대로 입력바람!!");
   document.myform.eng.value="";
   document.myform.eng.focus();
   return;
  }

     eng=parseInt(eng);
  if(!(eng>=0 && eng<=100))
  {
   alert("영어점수 0~100사이 입력바람!!");
   document.myform.eng.value="";
   document.myform.eng.focus();
   return;
  }

  var mat=document.myform.mat.value;
  if(isNaN(mat)||mat.length==0)
  { 
   alert("수학점수 숫자로 제대로 입력바람!!");
   document.myform.mat.value="";
   document.myform.mat.focus();
   return;
  }

     mat=parseInt(mat);
  if(!(mat>=0 && mat<=100))
  {
   alert("수학점수 0~100사이 입력바람!!");
   document.myform.mat.value="";
   document.myform.mat.focus();
   return;
  }

        //스크립트를 이용해서 폼전송
  //type=submit 기능
  document.myform.submit();
 }
 //-->
 </script>
 </head>

 <body>
<!-- 사용자가 데이터값을 입력하기 좋게
만들어주는 것을 양식(폼)이라 한다. -->
<!-- type=submit 서버로 해당 폼을 전송-->
<!-- action 전송되어온 자료를 받는 파일 지정 -->

<form name="myform" action="sungjukok.jsp">
이름:<input type="text" name="uname" value="홍길동" size="8"><br/>
국어:<input type="text" name="kor"  value="80" size="5"><br/>
영어:<input type="text" name="eng"  value="90" size="5"><br/>
수학:<input type="text" name="mat"  value="70" size="5"><br/>
<input type="button" value="확인" onClick="Check();">
<input type="reset" value="취소">
</form>


<br/>
<!-- 표작성
출력하고자 하는 값은 cell에 써야 한다-->
<table border="1">
  <tr> <td>서울</td>   <td>안양</td> </tr>
  <tr> <td>사과</td>   <td>수박</td> </tr>
  <tr> <td>개나리</td> <td>무궁화</td> </tr>
</table>

 </body>
</html>

 

#########################################################

sungjukok.jsp------------------

<%
//자바코드를 작성하는 부분

String uname;
int kor;
int eng;
int mat;

//사용자에게서 넘어온 자료를 보관하고 있는 클래스
//request객체

uname=request.getParameter("uname");

//type=text에서 넘어온 값을 보관하고 있는
//request객체는 문자열값으로 저장된다
//처리하고자 하는 값이 정수형이면
//형변환해서 사용해야 한다.
kor  =Integer.parseInt(request.getParameter("kor"));
eng  =Integer.parseInt(request.getParameter("eng"));
mat  =Integer.parseInt(request.getParameter("mat"));

int aver;
aver=(kor+eng+mat)/3;

/*
1)출력방식
*/
//out.print(uname+"<br/>");
//out.print(kor+"<br/>");
//out.print(eng+"<br/>");
//out.print(mat+"<br/>");
//out.print(aver+"<br/>");


/*
2)출력방식
//결과값 table에 출력하기
out.print("<table border='1'>");
out.print("<tr>");
out.print("  <td>이름</td>");
out.print("  <td>" + uname + "</td>");
out.print("</tr>");

out.print("<tr>");
out.print("  <td>국어</td>");
out.print("  <td>" + kor + "</td>");
out.print("</tr>");

out.print("<tr>");
out.print("  <td>영어</td>");
out.print("  <td>" + eng + "</td>");
out.print("</tr>");

out.print("<tr>");
out.print("  <td>수학</td>");
out.print("  <td>" + mat + "</td>");
out.print("</tr>");

out.print("<tr>");
out.print("  <td>평균</td>");
out.print("  <td>" + aver + "</td>");
out.print("</tr>");

//문)평균 10점당 ★하나씩 출력
out.print("<tr>");
out.print("  <td>그래프</td>");
out.print("  <td>");
int su;
for(su=1;su<=aver/10;su++)
{
   out.print("★");
}
out.print("  </td>");
out.print("</tr>");
out.print("</table>");

*/
%>

<html>
  <head>
    <title>성적결과</title>
  </head>
  <body>
     * 성적결과 * <br/>
     <table border=1>
     <tr>
  <td>이름</td>
  <td><%out.print(uname);%></td>
     </tr>
     <tr>
  <td>국어</td>
  <td><%=kor%></td>
     </tr>
     <tr>
  <td>영어</td>
  <td><%=eng%></td>
     </tr>
     <tr>
  <td>수학</td>
  <td><%=mat%></td>
     </tr>
     <tr>
  <td>평균</td>
  <td><%=aver%></td>
     </tr>
     <tr>
  <td>그래프</td>
  <td>
<%
  int su;
  for(su=1;su<=aver/10;su++)
  {
     out.print("★");
  } 
%>
  </td>
     </tr>
     </table>

  </body>
</html>

------------------------

* method 방식

1. get방식
   - 사용자가 입력한 값 그대로 서버로 전송된다.
   - 사용자가 입려한 값이 그대로 URL에 노출된다
   - 서로 전송되는 값의 용량의 제한이 있다.

2. post방식
   - 사용자가 입력한 값이 코드화 즉, 변환되어 서버로 전송된다
   - 주민번호, 은행계좌번호, 비밀번호등은 반드시 post방식으로 한다
   - 많은 양을 서버로 전송할 수 있다.

 

 

 

파일명 : mail_FileForm.jsp

--------------------------------------------------------

 <%@ page contentType="text/html; charset=euc-kr"  %>

<% String root = request.getContextPath(); // context 추출 %>

<html>
<head>
<title>mail JSP</title>
<link href="<%=root%>/css/style.css" rel="stylesheet" type="text/css">
</head>

<!----------------------------------------------------->
<body leftmargin="0" topmargin="0">
<!----------------------------------------------------->

<div align="center">

<h2>mail 쓰기</h2>
    <form name="mailForm"
          method="post"
          enctype="multipart/form-data"
          action="./mail_FileProc.jsp" >
         
<table border="0" align="center">
<tr>
  <th bgcolor=silver>받는 사람</th>
  <td><input type="text" name="to" size="61" value='prettyimo@nate.com'></td>
</tr><tr>
  <th bgcolor="silver">보내는 사람</th>
  <td><input type="text" name="from" size="61" value='test@prettyimo.cafe24.com'></td>
</tr><tr>
  <th bgcolor='silver'>제 목</th>
  <td><input type="text" name="subject" size="61" value="파일 전송 테스트 메일입니다."></td>
</tr><tr>
  <th bgcolor='silver'>편지 내용</th>
  <td><textarea name="msgText" rows="10" cols="60">파일 전송 테스트 메일입니다.</textarea>
  </td>
</tr>

<tr>
  <th bgcolor='silver'>첨부 파일 1</th>
  <td><input type="file" name="file1" size="50"></td>
</tr>

<tr>
  <th bgcolor='silver'>첨부 파일 2</th>
  <td><input type="file" name="file2" size="50"></td>
</tr>

<tr>
  <th bgcolor=silver>첨부 파일 3</th>
  <td><input type="file" name="file3" size="50"></td>
</tr>


<tr>
  <th bgcolor=silver>첨부 파일 4</th>
  <td><input type="file" name="file4" size="50"></td>
</tr>


<tr>
  <th bgcolor=silver>첨부 파일 5</th>
  <td><input type="file" name="file5" size="50"></td>
</tr>
<tr>
  <th colspan="2"></th>
</tr>
<tr>
  <th colspan="2">
    <input type="submit" value="보내기"> 
    <input type="reset" value="취소"> 
  </th>
</tr>
</table>

</form>

</div>
   

</body>
</html>

--------------------------------------------------------

 

파일명 : mail_FileProc.jsp

--------------------------------------------------------

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import="java.util.*,java.io.*,javax.mail.*" %>
<%@ page import="javax.mail.internet.*,javax.activation.*" %>

<%@ include file="./ssi.jsp" %>

<%
//---------------------------------------------------------------
// Fileupload 콤포넌트 관련 코드, 하나의 파일을 업로드 처리
//---------------------------------------------------------------
String param1 = "";         //일반 폼 태그
FileItem fileItem = null;   //업로드 파일 객체
String filename = "";       //업로드 파일명
UploadManager requestWrap = new UploadManager(request, -1, -1, tempDir);
 
request = requestWrap;
ArrayList fileList = new ArrayList();

// 전송하려는 파일이 최종적으로 5개임으로 5번 순환합니다.
for(int i=1; i<=5; i++){
    fileItem = requestWrap.getFileItem("file" + i);
    long filesize = fileItem.getSize(); // 파일 사이즈
   
    if(filesize > 0) {
        filename = requestWrap.saveFile(fileItem, upDir);
        fileList.add(filename);
       
        out.println("전송된 파일명: " + filename + "  / 전송된 파일 사이즈: " + filesize);
        out.println("<br>");
    }
}
out.println("<br><br>");
%>

<html>
<head>
<title>mail JSP</title>
<link href="<%=root%>/css/style.css" rel="stylesheet" type="text/css">
</head>

<!----------------------------------------------------->
<body leftmargin="0" topmargin="0">
<!----------------------------------------------------->

<div align="center">

<%
// javamail lib 이 필요합니다.
class MyAuthentication extends Authenticator {
    PasswordAuthentication pa;
    public MyAuthentication(){
        pa = new PasswordAuthentication("test@prettyimo.cafe24.com", "test1004");  //ex) ID:cafe24@cafe24.com PASSWD:1234
    }

    public PasswordAuthentication getPasswordAuthentication() {
        return pa;
    }
}


Transport transport;
String host = "mw-002.cafe24.com";                 //smtp mail server
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth","true");

Authenticator auth = new MyAuthentication();
Session sess = Session.getInstance(props, auth);

String subject = toKor(request.getParameter("subject"));  //제목
String msgText = toKor(request.getParameter("msgText"));  //message
    
String from = request.getParameter("from");        //보내는 주소
String to = request.getParameter("to");            //받는 사람


try {
        Message msg = new MimeMessage(sess);
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        msg.setRecipients(Message.RecipientType.TO, address);
        msg.setSubject(subject);
        msg.setSentDate(new Date());
       
        // 글을 문자만 보낼 경우
        msg.setText(msgText);

        // 글을 HTML 형식으로 보낼 경우
        // msg.setContent(msgText, "text/html;charset=euc-kr");

       
        //--------------------------------------------
        // 첨부 파일 구현 부분
        //--------------------------------------------
        Multipart mpt = new MimeMultipart();
       
        // 메일 내용
        MimeBodyPart mail_text = new MimeBodyPart();
        mail_text.setContent(msgText, "text/html;charset=euc-kr");
       
        String sendfile = "";
       
        for(int i=0; i<fileList.size(); i++){
            sendfile = upDir + "/" + (String)fileList.get(i);

            MimeBodyPart mbp = new MimeBodyPart();
            FileDataSource fds = new FileDataSource(sendfile);
            mbp.setDataHandler(new DataHandler(fds));
            mbp.setFileName(MimeUtility.encodeText(fds.getName(), "KSC5601" , "B"));

            mpt.addBodyPart(mbp);

        }
       
        mpt.addBodyPart(mail_text);
        msg.setContent(mpt);
       
        transport = sess.getTransport("smtp");
        transport.send(msg);
       
        out.println(to + "님에게 메일을 발송했습니다.<br><br>");
        
        // 전송후 파일 삭제
        for(int i=0; i<fileList.size(); i++){
            Utility.deleteFile(upDir, (String)fileList.get(i));
            out.println((String)fileList.get(i) + " 삭제됨.<br>");
        }
       
} catch (MessagingException mex) {
        out.println(mex.getMessage()+"<br>");
        out.println(to + "님에게 메일 발을 실패 했습니다.");
}

%>

</div>
   
</body>
</html>
--------------------------------------------------------

 

파일명 : ssi.jsp

--------------------------------------------------------

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.util.*, java.io.*" %>
<%@ page import="www.utility.*"%>
<%@ page import="org.apache.commons.fileupload.*" %>

 
<%
request.setCharacterEncoding("euc-kr");

String root = request.getContextPath(); // www_jsp
// System.out.println("root: " + root);
%>

<%
// ----------------------------------------------------------------------------------
// 다운로드 관련 부분
// ----------------------------------------------------------------------------------
// 파일 다운로드 폴더
String downDir = "/storage";
// 파일 저장 폴더
String upDir = application.getRealPath("/storage");
System.out.println("upDir: " + upDir);

// 임시 저장 폴더
String tempDir = application.getRealPath("/temp");
// ----------------------------------------------------------------------------------
%>

<%!
String toKor(String s){
    String str = null;
    try{
        //str = new String(s.getBytes("8859_1"), "KSC5601");// X
        //str = new String(s.getBytes("8859_1"), "UTF-8");  // X
        str = new String(s.getBytes("8859_1"), "EUC-KR"); // X
        // str = new String(s.getBytes("KSC5601"), "euc-kr");  // O 한글 출력 안됨
        //str = new String(s.getBytes("KSC5601"), "UTF-8"); // X
        //str = new String(s.getBytes("KSC5601"), "8859_1");// X
    }catch(Exception e){
       
    }
    return str;
}

%>

--------------------------------------------------------

 

 

 

메일 서버 구축후

메일 라이브러리를 통해서
간편하게 메일을 전송할수 있는 JSP파일을 작성한다.

 

JAF(JavaBeans Activation Framework)와  JavaMail 이 필요합니다.

 

JAF 다운로드 jaf-1_1_1.zip -> mail.jar

http://www.oracle.com/technetwork/java/jaf11-139815.html

 

javaMail 다운로드 javamail1_4_4.zip -> activation.jar

http://www.oracle.com/technetwork/java/index-138643.html

 

 

 

 

파일명 : mailForm.jsp

-------------------------------------------------------

<%@ page contentType="text/html; charset=euc-kr"  %>

<html>
<head>
<title>메일보내기</title>
</head>

<body leftmargin="0" topmargin="0">

<div align="center">메일 보내기</div>

<form name='mailForm' method='post' action="./mailProc.jsp">
<table border="0" align="center">
<tr>
  <th bgcolor='silver'>받는 사람</th>
  <td><input type="text" name="to" size="61" value='prettyimo@naver.com'></td>
</tr><tr>
  <th bgcolor="silver">보내는 사람</th>
  <td><input type="text" name="from" size="61" value='test@prettyimo.cafe24.com'></td>
</tr><tr>
  <th bgcolor='silver'>제 목</th>
  <td><input type="text" name="subject" size="61" value="메일을 보냅니다."></td>
</tr>
<tr>
  <th bgcolor='silver'>편지 내용</th>
  <td><textarea name="msgText" rows="15" cols="60"></textarea></td>
</tr>
</table>

<div  align="center">
    <input type="submit" value="보내기">
    <input type="button" value="취소" onclick="javascript:history.back()">
</div>
</form>


</body>
</html>

 

파일명 : mailProc.jsp

-------------------------------------------------------

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import="java.util.*,java.io.*,javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<% 
request.setCharacterEncoding("euc-kr");
%>
<html> 
<head>
<title>mailProc.jsp</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>

 

<body leftmargin="0" topmargin="0">

<div align="center">

<%
// javamail lib 이 필요합니다.
class MyAuthentication extends Authenticator {
    PasswordAuthentication pa;
    public MyAuthentication(){
        pa = new PasswordAuthentication("test@prettyimo.cafe24.com", "test1004"); 

              //ex) ID:cafe24@cafe24.com PASSWD:1234
    }

    public PasswordAuthentication getPasswordAuthentication() {
        return pa;
    }
}


String subject = request.getParameter("subject");  // 제목
String msgText = request.getParameter("msgText");  // 내용
msgText = msgText.replace("\n", "<BR>");

// mw-002.cafe24.com
String host = "mw-002.cafe24.com";                 // smtp mail server(서버관리자)    
String from = request.getParameter("from");        // 보내는 주소
String to = request.getParameter("to");            // 받는 사람

Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth","true");

Authenticator auth = new MyAuthentication();
Session sess = Session.getInstance(props, auth);   // 계정 인증 검사

try {
        Message msg = new MimeMessage(sess);
        msg.setFrom(new InternetAddress(from));   // 보낸 사람
       
        // 한명에게만 보냄
        InternetAddress[] address = {new InternetAddress(to)};
       
        // 다중 전송
        // InternetAddress[] address = {new InternetAddress(to), new InternetAddress(to2)};
        msg.setRecipients(Message.RecipientType.TO, address); // 수령인
       
        msg.setSubject(subject);                  // 제목
        msg.setSentDate(new Date());              // 보낸 날짜 
        // msg.setText(msgText); // 글을 문자만 보낼 경우

        // 글을 HTML 형식으로 보낼 경우
        msg.setContent(msgText, "text/html;charset=euc-kr");
        Transport.send(msg);  // 전송
        out.println(to + "님에게 메일을 발송했습니다.");
} catch (MessagingException mex) {
        out.println(mex.getMessage()+"<br>");
        out.println(to + "님에게 메일 발송을 실패 했습니다.");
}

%>

</div>
   
</body>
</html>

 

 

 

 

파일명 : UploadManager.java

----------------------------------------------------

 

----------------------------------------------------

'..열심히 공부하세.. > JSP' 카테고리의 다른 글

[28] 자바 메일보내기 (첨부파일)  (0) 2012.03.06
[27] 자바메일보내기  (0) 2012.03.06
[26] PdsDTO와 PdsDAO  (0) 2012.03.05
[25] 파일업로드 테이블 설계  (0) 2012.03.05
[24] 파일업로드 테스트  (0) 2012.03.05

 

파일명 : PdsDTO.java

------------------------------------------------------

package www.pds;

public class PdsDTO {
    /** 글 번호 */
    private int pdsno;
    /** 글 쓴이 */
    private String wname;
    /** 제목 */
    private String subject;
    /** 글 등록일 */
    private String regdate;
    /** 비밀번호 */
    private String passwd;
    /** 조회수 */
    private int readcnt;
    /** 파일명 */
    private String filename;
    /** 파일 사이즈 */
    private long filesize;

 
}

------------------------------------------------------

 

파일명 : PdsDAO.java

------------------------------------------------------

package www.pds;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import www.utility.DBClose;

public class PdsDAO {
    /** 테이블 이름 */
    private String table_name="tb_pds";
   
    public PdsDAO() {
        super();
        // TODO Auto-generated constructor stub
    }
   
    /**
     * 전체 글 목록 가져오기
     * @return 검색된 파일 목록
     */
    public List list(Connection con)  throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        StringBuffer sql = null;       
        List list = new ArrayList();       
        sql = new StringBuffer();
       
        sql.append(" SELECT pdsno, wname, subject, regdate, readcnt,filename,filesize") ;
        sql.append(" FROM " + table_name);
        sql.append(" ORDER BY pdsno DESC");       
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
       
        while(rs.next() == true) {
            PdsDTO dto = new PdsDTO();          
            dto.setPdsno(rs.getInt("pdsno"));
            dto.setWname(rs.getString("wname"));
            dto.setSubject(rs.getString("subject"));
            dto.setRegdate(rs.getString("regdate"));
            dto.setReadcnt(rs.getInt("readcnt"));           
            dto.setFilename(rs.getString("filename"));
            dto.setFilesize(rs.getInt("filesize"));           
            list.add(dto);
        }
           
        DBClose.close(pstmt, rs);
       
        return list;
    }//end

    public int recordCount(Connection con) throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        StringBuffer sql = null;
        int retVal = 0;

        sql = new StringBuffer();
        sql.append(" SELECT count(*) as cnt");      
        sql.append(" FROM " + table_name);
              
        System.out.println("SQL: " + sql.toString());
       
        pstmt = con.prepareStatement(sql.toString());
        rs = pstmt.executeQuery();
       
        if(rs.next()){ // 레코드가 있는 경우 첫번째 레코드로 이동
            retVal = rs.getInt("cnt");
        }
           
        DBClose.close(pstmt, rs);
        return retVal;
    }
   
    /**
     * 레코드 추가하기
     * @param dto 데이터 객체
     * @return 추가 성공 - true, 추가실패 - false
     */
    public int create(Connection con, PdsDTO dto) throws SQLException{
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        int retVal = 0;
                  
        StringBuffer sql = new StringBuffer();
        sql.append(" INSERT INTO " + table_name);
        sql.append(" (wname,subject,regdate,passwd,filename,filesize) ");
        sql.append(" VALUES(?,?,now(),?,?,?)");                 
        pstmt = con.prepareStatement(sql.toString());

        pstmt.setString(1, dto.getWname());
        pstmt.setString(2, dto.getSubject());
        pstmt.setString(3, dto.getPasswd());
        pstmt.setString(4, dto.getFilename());
        pstmt.setLong(5, dto.getFilesize());
       
        retVal = pstmt.executeUpdate();

        DBClose.close(pstmt);

        return retVal;
    }
}

------------------------------------------------------

 

파일명 : PdsMgr.java

------------------------------------------------------

package www.pds;
import java.sql.Connection;
import java.util.List;

import www.pds.PdsDAO;
import www.pds.PdsDAO;
import www.utility.ConnectionMgr;
import www.utility.DBClose;

public class PdsMgr {
    /** Connection Pool manager Class */
    private ConnectionMgr dbconnect = null;     
    private static PdsDAO dao = null;
   
    /**
     * 기본 생성자
     */
    public PdsMgr(){
        if (dbconnect == null){
            dbconnect = new ConnectionMgr();
        }
        System.out.println("dbconnect.hashCode(): " + dbconnect.hashCode());
       
        if (dao == null){
            dao = new PdsDAO();
        }
    }

    /**
     * DAO를 생성합니다.
     * @return
     */
    public synchronized PdsDAO getDAO(){
        if (dao == null){
            dao = new PdsDAO();           
        }

        return dao;
    }
   
    /**
     * 레코드 추가
     * @param dto 추가할 레코드 보관 객체
     * @return 성공 true, 실패 false
     */
    public boolean create(PdsDTO dto){
        Connection con = this.dbconnect.getConnection();
        boolean retVal = false;
        int cnt = 0;

        try{
            cnt = dao.create(con, dto);
            if (cnt == 1){
                retVal = true;
            }
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
       
        return retVal;
    } 
   
    /**
     * 데이터 목록 가져오기
     */
    public List list(){
        Connection con = this.dbconnect.getConnection();
        List list = null;

        try{
            list = dao.list(con);
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
  
        return list;       
    }

    public int recordCount(){
        Connection con = this.dbconnect.getConnection();
        int retVal=0;
       
        try{
            retVal=getDAO().recordCount(con);
        }catch(Exception e){
            System.out.println(e.toString());
        }finally{
            DBClose.close(con);
        }
 
        return retVal;
    }
}
-----------------------------------------------------------

------------------------------------------------------

 

* 자료형 게시판

 

테이블명 : tb_pds

----------------------------------------------------------------------

CREATE TABLE tb_pds (
       pdsno      INT           NOT NULL AUTO_INCREMENT PRIMARY KEY
       ,wname     VARCHAR(100)  NOT NULL
       ,subject   VARCHAR(100)  NOT NULL
       ,regdate   DATETIME      NOT NULL
       ,passwd    VARCHAR(15)   NOT NULL
       ,readcnt   INT           NOT NULL  DEFAULT 0
       ,filename  VARCHAR(100)  NOT NULL
       ,filesize  BIGINT        NOT NULL  DEFAULT 0
);

----------------------------------------------------------------------

 

파일명 : pdsForm.jsp

----------------------------------------------------------------------

 <%@ page contentType="text/html; charset=utf-8"%>
<%@ include file="./ssi.jsp" %>
  
<%
String ip = request.getRemoteAddr();        // Client IP 추출
%>
<html>
<head>
<title>파일업로드</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<Script Language='JavaScript'>
function checkData(f){ // f == document.frmData 객체
    var msg; // 에러 메세지
    var str; // 임시 문자열 저장 변수
   
    // 파일명을 소문자로 변환
    var ext = f.filename.value.toLowerCase();
   
    /*
     정규 표현식
     /^\s*: 시작 문자가 탭, 공백, 개행인 경우
     |    : OR 문자는 두 정규 표현식에서의 선택을 허용
     \s*  : 문자가 탭, 공백, 개행인 경우
     $/g  : 패턴을 문장의 끝에 적용
     \s*$/g: 문장의 끝에 있는 공백         
    */
    // alert('>>' + '  test test  '.replace(/^\s*|\s*$/g,'') + '<<'); return false;

      
    // 이름 앞뒤의 공백 제거
    str = f.name.value.replace(/^\s*|\s*$/g,'');

    // 이름의 길이를 비교
    if (str.length == 0){
        msg = '안내\n\n이름을 입력해 주십시오';
        window.alert(msg);
        f.name.focus();
        return false;
    }

    // 제목 앞뒤의 공백 제거
    str = f.subject.value.replace(/^\s*|\s*$/g,'');
    if (str.length == 0){
        msg = '안내\n\n제목을 입력해 주십시오';
        window.alert(msg);
        f.subject.focus();
        return false;
    }

    // 이름 앞뒤의 공백 제거
    str = f.filename.value.replace(/^\s*|\s*$/g,'');

    // 이름의 길이를 비교
    if (str.length == 0){
        msg = '안내\n전송할 파일을 선택해 주십시오';
        window.alert(msg);
        f.filename.focus();
        return false;
    }
   
    if (f.passwd.value.length < 4){
        msg = '안내\n\n비밀번호는 4자이상 입력하셔야 합니다.';   
        window.alert(msg);
        f.passwd.focus();
        return false;
    }  

    if (ext.lastIndexOf(".exe") > 0){
        alert('파일의 확장자가 EXE 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".asp") > 0){
        alert('파일의 확장자가 ASP 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".jsp") > 0){
        alert('파일의 확장자가 JSP 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".php") > 0){
        alert('파일의 확장자가 PHP 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".cgi") > 0){
        alert('파일의 확장자가 CGI 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".dll") > 0){
        alert('파일의 확장자가 DLL 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }

    if (ext.lastIndexOf(".jar") > 0){
        alert('파일의 확장자가 JAR 인것은 전송할 수 없습니다.');
        f.filename.focus();
        return false;
    }
       
    return true;
}
</Script>
</head>

<body topmargin="0" leftmargin="0">

    <!-- onSubmit() 이벤트는 서브밋 버튼을 클릭하면 호출됨
         this : document.frmData
         submit() ▶ onSubmit() 이벤트 발생 ▶ checkData(this) 호출
         ▶ true or false return ▶ if true  ▶ submit() 진행
    -->
    <form name="frmData"
          method="post"
          enctype="multipart/form-data"
          action="./pdsIns.jsp"
          onSubmit="return checkData(this)">

    <input type="hidden" name="ip" value="<%=ip%>">

  <table border="0" align="center">
      <tr>
        <th colspan="2">파일 등록 (* 필수 입력사항)
        </th>
      </tr>
      <tr>
        <td colspan="2" height="30"> </td>
      </tr>
      <tr>
        <th width="97">성명*</th>
        <td width="567"><input type="text" name="wname" value='홍길동'> </td>
      </tr>
      <tr>
        <th>내용*</th>
        <td><textarea name="subject" rows='5' cols='50'>맛있는 요리 사진</textarea></td>
      </tr>
      <tr>
        <th>파일명*</th>
        <td><input type="file" name="filename" value="" size="55"></td>
      </tr>
      <tr>
        <th>비밀번호*</th>
        <td><input type="password" name="passwd" value='1234'></td>
      </tr>
      <tr>
        <td colspan="2"> </td>
      </tr>
      <tr>
        <td colspan="2">
          <div align="center">
            <input type="submit" name="Submit" value="전송">
              
            <input type="Reset" name="Submit2" value="다시쓰기">
              
            <input type="button" name="btnList" value="목록"
                   onclick="javascript:location.href='./pdsList.jsp'">
          </div>
          </td>
      </tr>
  </table>
    </form>
   
</body>
</html>

----------------------------------------------------------------------

 

파일명 : pdsIns.jsp

----------------------------------------------------------------------

 <%@ page contentType="text/html; charset=utf-8"%>
<%@ include file="./ssi.jsp" %>
 
<%    
//------------------------------------------------------------
// 자료실 구현 부분 - 파일 업로드
// enctype="multipart/form-data" 로 보낸 데이터는
// request 객체로 받을 수 없음으로
// request 객체에 접근 할 수 있는  HttpServletRequestWrapper를 상속받은
// FileUploadRequestWrapper 클래스의 객체를 만들어 사용한다
//------------------------------------------------------------
UploadManager requestWrap = null;
requestWrap = new UploadManager(request, -1, -1, tempDir);

request = requestWrap;
 
String filename = ""; //업로드 파일명
// filename 은 전송 폼에 있는  file태그의 이름
FileItem fileItem = requestWrap.getFileItem("filename");// 전송된 파일 객체
 
long filesize = fileItem.getSize(); // 파일 사이즈

if (filesize > 0){              // 전송된 파일이 있다면 저장
    filename = requestWrap.saveFile(fileItem, upDir);

//-------------------------------------------------------------------
%>
 
<%
String wname = request.getParameter("wname");
wname = Utility.getEncodingFileUpload12(wname);

String subject = request.getParameter("subject");
subject = Utility.getEncodingFileUpload12(subject);

pdsDTO.setWname(wname);
pdsDTO.setSubject(subject);
pdsDTO.setFilename(filename);
pdsDTO.setFilesize(filesize);
pdsDTO.setPasswd(request.getParameter("passwd"));

%>
  
<html>
<head>
<title>자료 올리기</title>
</head>

<body topmargin="0" leftmargin="0">
<% 
boolean sw = pdsMgr.create(pdsDTO); // 글 추가
   
//?: 파일로 전달되는 인수의 시작을 표시
//&: 파일로 전달되는 인수들의 구분자 역활을 함   
if(sw == true){
%>
    <br><br>
    이미지를 추가했습니다.
    <br><br><br>
    [<a href="./pdsForm.jsp">파일 계속 올리기</a>]
      
    [<a href="./pdsList.jsp">파일 목록으로 가기</a>]
<%   
}else{
    out.println("<p><b>이미지 등록이 실패 했습니다.</b></p>");
    out.println("<a href='Javascript:history.back()'>다시 입력</a>");
}
%>
</body>
</html>

----------------------------------------------------------------------

 

파일명 : ssi.jsp

----------------------------------------------------------------------

<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.*, java.io.*" %>
<%@ page import="www.pds.*, www.utility.*"%>
<%@ page import="org.apache.commons.fileupload.*" %>

<jsp:useBean id="pdsMgr" class="www.pds.PdsMgr" />
<jsp:useBean id="pdsDTO" class="www.pds.PdsDTO" />

<%
request.setCharacterEncoding("utf-8");
%>

<%
// ----------------------------------------------------------------------------------
// 다운로드 관련 부분
// ----------------------------------------------------------------------------------
// 파일 다운로드 폴더
//String downDir = "/storage";
// 파일 저장 폴더
String upDir = application.getRealPath("/storage");
System.out.println("upDir: " + upDir);

// 임시 저장 폴더
String tempDir = application.getRealPath("/temp");
// ----------------------------------------------------------------------------------
%>

<%
// ----------------------------------------------------------------------------------
// 검색 관련 부분
// ----------------------------------------------------------------------------------
//검색 컬럼값 추출, null --> "" 
String col = Utility.checkNull(request.getParameter("col"));
//검색어 추출, null --> ""
String word = Utility.checkNull(request.getParameter("word"));
// ----------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------
// 페이징 관련 부분
// ----------------------------------------------------------------------------------
int nowPage = 0; //시작 페이지 번호는 0부터
if (request.getParameter("nowPage") != null) {
    nowPage= Integer.parseInt(request.getParameter("nowPage"));
}
// ----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
// col, word, nowPage를 GET방식으로 조합, url.toString()으로 사용
//----------------------------------------------------------------------------------
StringBuffer url= new StringBuffer();
url.append("col=" + col);
url.append("&word=" + Utility.getEncoding(word));
url.append("&nowPage=" + nowPage);
//----------------------------------------------------------------------------------
%>

<%!
public String br(String str){
    return str + "<BR>";   
}

public String br(int str){
    return str + "<BR>";   
}

public String br(double str){
    return str + "<BR>";   
}
%>

<script language="javascript">
    function go(url){
        location.href=url;
    }

    function goSearch(url){
        location.href=url + '<%=url%>';
    }
   
</script>
------------------------------------------------------------------------

 

파일명 : pdsList.jsp

------------------------------------------------------------------------

<%@ page contentType="text/html; charset=utf-8"%>
<%@ include file="./ssi.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=utf-8" />
  <title> pdsList.jsp </title>
 </head>

 <body>
<center>
** 파일 업로드 목록 **<br>
<table border=1>
<tr>
  <td>번호</td>
  <td>제목</td>
  <td>파일명</td>
  <td>작성자</td>
  <td>조회수</td>
  <td>작성일</td>
</tr>
<%
String root = request.getContextPath();//물리적 경로
String downDir = "/storage";

int totalCount=pdsMgr.recordCount();
List dataList = pdsMgr.list();
String date = Utility.getDate(); //오늘날짜

for (int i = 0;i < totalCount; i++) {
    // dataBoardDTO 추출
    pdsDTO = (PdsDTO)dataList.get(i);

    //dataBoardDTO 객체의 값을 변수에 저장
    String wname = pdsDTO.getWname();
    String subject = pdsDTO.getSubject();
    String regdate = (pdsDTO.getRegdate()).substring(0, 10);
    int pdsno = pdsDTO.getPdsno();
    int readcnt = pdsDTO.getReadcnt();
    String filename = pdsDTO.getFilename();
    long filesize = pdsDTO.getFilesize();
%>
 <tr>
   <td><%=pdsno%></td>
   <td align="left">
           <%
           String  dto_date = pdsDTO.getRegdate();

%>  
      <a href="./pdsRead.jsp?nowPage=<%=nowPage%>&pdsno=<%=pdsno%>"><%=subject%></a>
      <%
        if (dto_date.substring(0, 10).equals(date)){
                   out.print("<img src='./images/new.gif' border=0> ");
               }
      %>
   </td>
   <td>
         <%
          if (pdsDTO.getFilesize() > 0){ %>                
             <a href="<%=root%>/storage/<%=filename%>">
                 <img src='<%=root%>/storage/<%=Utility.getEncoding(pdsDTO.getFilename()) %>'
                      border='0'
                      width='80' height='80' />
             </a>
          <%
          }else{
              out.println(" ");
          }
         %>  
   </td>
   <td><%=wname%></td>
   <td><%=readcnt%></td>
   <td><%=regdate%></td>
 </tr>
<%
}
%>
</table>

<br>
전체글갯수 : <%=totalCount %>
<br><br>
<a href="./pdsForm.jsp">[게시판 등록]</a>
<br>

</center>
 </body>
</html>

------------------------------------------------------------------------

 

파일명 : createForm_Test.jsp
-------------------------------------------
<%@ page contentType="text/html; charset=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>
<center>
글 등록


<form name='frmData'
      action='./createProc_Test.jsp'
      method='post'
      enctype="multipart/form-data" >
    제목: <input type='text' name='title' size='20'></input><br></br>
    내용: <textarea name="content" rows='5' cols="20"></textarea><br></br>
    참고: <input type='text' name='etc' size='20'></input><br></br>
   
    <input type='submit' value='등록'></input>
</form>

</center>
</body>
</html>
-------------------------------------------

 

파일명 : createProc_Test.jsp
-------------------------------------------
<%@ page contentType="text/html; charset=euc-kr" %>
<%
request.setCharacterEncoding("euc-kr");

//폼의 값을 가져옵니다.
String title   = request.getParameter("title");
String content = request.getParameter("content");
String etc     = request.getParameter("etc");
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>등록 처리</title>

</head>

<body>
<center>
<h2>
<%
out.println("title: " + title);
out.println("content: " + content);
out.println("etc: " + etc);
%>
</h2>
<center>

</body>
</html>
-------------------------------------------

 

파일명 : StringTest.java
-------------------------------------------
package www.pds;

public class StringTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 1) 에러
        // String path="F:\www_jsp\doc\picture.jpg";
       
        // 2) windows 계열 경로 표현
        String win="F:\\www_jsp\\doc\\picture.jpg";
       
        // 3) linux, unix 계열
        String linux="F:/www_jsp/doc/picture.jpg";
       
        // 4) 폴더 구분자 '\'의 위치 출력
        int sp = win.indexOf("\\");
        System.out.println("\\의 위치: " + sp); // 2
       
        // 5) 마지막 폴더 구분자 '\'의 위치 출력
        sp = win.lastIndexOf("\\");
        System.out.println("\\의 마지막 위치: " + sp); // 14
          
        // 6) 순수 파일명 추출, 마지막 폴더 구분자 + 1
        String filename = win.substring(14+1);  
        System.out.println("1) 추출된 파일명: " + filename);
       
        // 7) 순수 파일명 추출 전용 코드
        filename = win.substring(win.lastIndexOf("\\"));  
        System.out.println("2) 추출된 파일명: " + filename);
        filename = win.substring(win.lastIndexOf("\\")+1);  
        System.out.println("3) 추출된 파일명+1: " + filename);
       
        // 8) Test
        win = "F:\\ImageCenter\\스위스\\sw01.jpg";
        filename = win.substring(win.lastIndexOf("\\")+1);  
        System.out.println("4) 추출된 파일명: " + filename);
       
        // 9) 폴더명만 추출
        String folder = win.substring(0, win.lastIndexOf("\\"));  
        System.out.println("5) 추출된 폴더명: " + folder);
       
        // 10) sw01만 추출할 것
        win = "F:\\ImageCenter\\스위스\\sw01.jpg";
        int start = win.lastIndexOf("\\");
        int end = win.indexOf(".");
        System.out.println("6) 추출된 순수 파일명: " + win.substring(start+1, end));

    }

}

+ Recent posts