..열심히 공부하세../JSP

[성적프로젝트] 상세보기, 삭제, 수정

댄스댄스 2012. 5. 21. 14:31

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

 

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참조