ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1# 게시판 만들기 - JSP 개발환경 설정하기
    BACK-END/JSP 2020. 7. 23. 13:07

    java -bin-javac.exe

    자바는 저장하면 알아서 컴파일 된다.

     

    환경변수 설정 (https://macchiato.tistory.com/9)

    만약 환경변수를 설정했는데 실제 JDK 디렉토리가 없으면 이클립스를 킬때마다 오류가 난다.

     

    환경변수를 설정하는 목적?

    다른곳에서 자바를 사용하고싶어서?

    https://dololak.tistory.com/20
    https://shinjekim.github.io/java/2020/01/03/%EC%9E%90%EB%B0%94-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98-%EC%84%A4%EC%A0%95%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0/

     

    환경변수 설정하는 방법

    내 PC 오클릭 - 속성

    |- 고급 시스템 설정

    |- 환경 변수 클릭

    |- 시스템 변수 아래에 있는 [새로 만들기] 클릭

    |- 시스템 변수 편집창이 뜨면 

    변수 이름에 JAVA_HOME

    변수 값에 C:\Program Files\Java\jdk1.8.0_201 입력 후 확인

     

    그 후 시스템 변수 안에 있는 Path 선택 후 편집 클릭

        |- 오른쪽 상단 새로 만들기 클릭

          |- %JAVA_HOME%\bin 입력 후 확인

     

    cmd 실행 후  javac.exe 입력

    자바 설치 잘 된건지 확인하는 명령어

     

    *사실 환경변수 안해도 자동으로 인식 된다. (https://konlpy.org/ko/v0.4.3/install/)

    *환경변수 하면 오히려 에러가 난다. (학원 컴퓨터처럼 다수의 사람들이 한 컴퓨터를 사용하는 경우에)

     

     

    톰캣에서 제공되는 내장 객체

    page (import)

    out (웹브라우저에 출력)

    request (값전달) : 숫자로 적어도 문자로 전달이 된다.

    response, session, application, config

     

    JSP 

    |-톰캣

    |-EJB할때

    www.bea.com

    |-tuxedo 미들웨어

    |-WebLogic 웹서버

     

    1)Eclipse 실행 후 New 클릭 -> Dynamic Web Project 클릭

    2) 이름 설정 후 Next

    3) Generate web.xml deployment descriptor 체크 후 Finish

     

    4) Webcontent 오클릭 -> New -> JSP File 

     

    5) Next - Finish 후 화면

     

    6) UTF-8 로 변경해준다.

    7) images 폴더 복사

     

    8) WebContent 에 이미지 폴더 붙여넣기

     

    9) First 를 Save as.. 로 새로 저장 index.jsp

    9-1) First 를 Save as.. 로 새로 저장 test01.jsp

     

    10) WEB-INF 밑에 절대 복사 금지

    11)간단한 html 문서를 작성하고 Run 하면 이런 창이 뜬다.

     

    12) 포트번호를 다른곳에서 사용중이라서 안된다고 뜬다.




    13) 이럴때는 아파치 폴더 - conf - server.xml - 포트번호 수정하는 방법이 있는데 이 방법은 비권장

    13-1) 이거 더블클릭

     

    14) Ports 항목에서 포트 번호 바꾸기

     

    15) 해결

     

    16)실행하면 콘솔에 구구단이 나온다.

     

    17) System.out.println 를 out.println 으로 변경해준다. 

     

    18) 웹에 잘 출력이 되었다.

     

    18) 하지만 라인 개행이 안됐음. 그래서 출력문 내에 “<br>”을 추가해준다.

     

    19) 출력 결과 라인개행도 잘 되었다.

     

    20) Date 컨트롤 키 누르고 클릭

    21) 그럼 이런게 뜬다.

     

    22) 이럴때는 직접 임포트 문을 적어도 된다.

     

    23) 저장 하고 나면 Date에 에러가 없어진다.

     

    24) 

     

    25) 임포트문 java.util.Date 옆에 세미콜론을 찍었더니 에러가 떴었다.

     

    26) 세미콜론을 지웠더니 잘 실행되었다.

     

     

    27) Ctrl + Space 누르면 자동완성이 된다.

     

    28) 점의 의미 = 현재 이곳

     

     

    29) 결과

    30) 스타일 추가

     

    31) Index.jsp 코드

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[ Index.jsp ]</title>

    <style type="text/css">

    #pline{ margin-top : 70px; }

    *{ font-size:24pt; }

    </style>

    </head>

    <body>

    <p id="pline">

    <div align="center">

    <img src="./images/a1.png"> <p>

    <font size="6" color="blue">

    <b> Waiting ... Loading... </b>

    </font>

    </div>

    </body>

    </html>

     

    32) 자바 스크립트 추가

     

    33) Server side include 줄여서 ssi

    34) 총 9개 jsp 생성

    35) 오늘 톰캣 웹서버를 이클립스에 연결했다. 오늘 사용해본 내장 객체는 아래와 같다.

    |- out : 콘솔이 아닌 웹페이지에 출력하는 기능

    |- page : 자바 클래스 Import 하는 기능

     

    36) 내일 배울 내장 객체

    |- request 문자열로 데이터 전달

    |- response 페이지 문서 이동

     

    37) 페이징을 하기 위한 jsp 클래스들, 문서 이름만 봐도 어떤 기능인지 알 수 있도록 접두사와 접미사 맞춰 주는게 중요!

     

    38) gugudan.jsp 코드

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    <%@ page import="java.util.Date" %> 

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>gugudan.jsp</title>

    </head>

    <body>


    <%

    Date dt = new Date();

    out.println("날짜"+dt.toLocaleString() + "<p>");

    int dan =7;

    for(int i=1; i<10; i++){

    out.println(dan+"*"+i+"="+(dan*i) + "<br>");

    }

    %>

     

    </body>

    </html>




    2020-07-21

    1) MS사는 자체 iis

    https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%EC%A0%95%EB%B3%B4_%EC%84%9C%EB%B9%84%EC%8A%A4

     

    |- IBM => websphere 웹스피어

    |- 티맥스소프트 => <a link=”https://kr.tmaxsoft.com/img/service/pdf/manual/JEUS_4.2_Guide.pdf”>제우스</a>

    |- 오라클 => 오라클웹서버 www.bea.com

    |- Jboss, WebLogic

    |- Spring 프레임워크 => Pivotal 웹서버

     

    2) 대표적인 Web 웹서버 제공 => 톰캣 apache

    설치 후  연결 & 이클립스 => 웹서버 생김!!

     

    3) 톰캣이 제공하는 내장 객체들 중 가장 대표적인 객체들

    |-out = 웹브라우저에 출력

    |-page = 임포트, 문서 설정 <%@ page import=”” %>

    |-request = 값 요청 후 값 전달 다른 문서에 있는 데이터를 전달하는 기능

    |-response = 페이지 문서 이동할때 사용하는 태그

     

    4) 문서 이동할때 사용하는 HTML 태그

    첫번째 <a href =”문서이름”> [등록] </a>

    두번째 <form> 입력/선택/버튼 </form>

    입력이름, 제목, 메일, 급여, 성별

    선택은 나는 뭐를 좋아해요 등이 될 수 있다.

     

    5) 

    입력 

    <form action=”guestWriteSave.jsp”>

    입력(이름,제목,메일,급여)/선택/버튼

    </form>

     

    수정 

    <form action=”guestEditSave.jsp”>

    입력(이름,제목,메일,급여)/선택/버튼

    </form>

     

    자바스크립트에서 

    setTimeout(“location.href=’~.jsp’”, 2000)

    = 2초 후에 게스트 리스트로 가라 

     

    6) 웹서버에서 제공되는 response 객체로 페이지 이동 가능

    |- guestWriteSave.jsp 문서에서 이렇게 적을것이다.

    <%  

    msg=”insert into guest values(?, ?, ?, sysdate, ?, 0, ?)”

      PST=CN.prepareStatement(msg);

      PST.setInt(1, 사번);

      PST.setString(3, 제목값);

      PST.executeUpdate(); 괄호안에 인자 없다.

    셀렉트가 쿼리고 등록은 업데이트!! 기억해

    저장 성공 후에  리스트전체목록 전체 조회로 이동

    a태그나 form 태그나, 자바스크립트 쓰기 애매모호

    전체조회 이 문서로 이동을 하고싶어요. 등록 성공 햇으니깐!

    이럴때 쓰는게 리.스.폰.스 객체다.

    response.sendRedirect(“guestList.jsp”);

     

    %>

     

    7) 문서 이동이 가능한 애들을 정리해 보자면

    a태그, form 태그, 자바스크립트, response 객체로도 가능.

     

    8) 기술 방법

    내장개체는 <% 자바코드기술 부분 여기에 쓴당게 %>

    out, page, request, response, session, application

    <h1> 내용 </h1>

     

    <%!

    방망이는 전역변수여~!

    전역변수를 자동으로 초기화, 범위 상관 없이 다른 페이지에서도 사용 가능혀~

    %>

     

    <% 야는 자바코드여

    String title=”화요일” ;

    int pay = 7800 ;

    out.println(“제목 : “+title);

    out.println(“급여 : “+pay);

    %>

     

    제목데이터 <%= title %>

    급여데이터 <%= pay %>

     

    9) guestWrite.jsp 부터 시작

          |-- guestWrite.jsp => 입력화면 등록화면 form태그

          |-- guestWriteSave.jsp => 저장해서 데이터베이스연결

          |-- guestList.jsp => 전체출력 db연결

          |-- ssi.jsp =>  db연결 pool개념처럼 접근

          |-- guestDelete.jsp => 한건삭제 db연결

          |-- guestEdit.jsp => 한건수정 db연결 update ~ where

          |-- guestEditSave.jsp => update ~ where수정처리 db연결

     

          |-- guestList.jsp => 페이징,검색, 댓글개수

          |-- guestDetail.jsp => 한건상세 db연결

                  |-guestReply.jsp => 댓글출력+댓글입력

                  |-데이터베이스 제약조건 수작업으로 기술

                  |-데이터베이스 조인 Join

     

    웹서버 페이지 기술

    |- jsp(servlet)

    |- asp(G마켓)

    |- php(중소기업, 페북)

    |- Django, Flask (파이썬기반)

     

    10) 3개의 jsp 파일을 만들어준다.

     

    11) Tap 키를 눌렀을때 스페이스가 너무 많아서 불편할때 수정법

     

    12) 4로 되어있는데 2로 바꿔준다

     

    13) guestList.jsp 에 회원정보 테이블을 만들어주고 밑에 a 태그를 붙여서 버튼을 누르면 guestWriter.jsp 로 가게끔혔따.

     

    14) 아이디 쓰고 네임 항상 같이 쓰기!

     

    15) guestWrite.jsp 액션중에 겟방식 사용해본다



    16) WriteSave로 넘어와서 이렇게 적어준다.

     

    17) 이렇게 지구본 + 타이틀 뜨면 실행된거임

    18) 스타일 주기





    19) 여러가지 문서 이동 방식

    1. a태그를 이용해보자. <a href=”문서이름”></a>

    2. 폼태그의 action 속성을 이용해보자.

    <form method=”get” action=”데이터를 받을 문서이름”>

    버튼 submit

    </form>

     

    guestWriteSavfe.jsp 문서에서

    Gtitle = request.getParameter(“title”);

    request 를 작성함으로써 데이터를 전달 받는다.

    받은 데이터를 Gtitle 이라는 곳에 넣어준다.

     

    19) 입력안하고 등록하기 눌러도 넘어와진다. submit 의 최대 단점 : 데이터가 없어도 그냥 넘어가진다. 따라서 request로 해보자!

     

    20) 원래 이렇게 되어있던걸

     

    21) 이렇게 request.parameter 로 변경해준다. int형은 잘 작동되지 않으니 급여도 String 타입으로 바꿔준다.

     

    22)

     

    23) 출력된다는것만 확인하려고 적은거다. 쓰잘데기가 없다. 지운다.

     

    24) response.sendRedirect(“이동할 문서”)로 문서이동 방법 

    저장 하고 바로 메인화면으로 이동하겠다. 하지만 일단  이런게 있다는거 정도만 알아두고 주석처리해준다.

     

    25) a 태그로 문서이동 방법 

     

    26) form태그의 action 속성으로 문서이동 방법

     

    27) 

    request와 response 기술방법

    response.sendRedirect("guestList.jsp");

     

    28) 중요한 데이터가 유알엘에 다 표시된다.

     

    29) 폰트색 바꾸기 

    기본값

    Courier 로 바꿨더니 너무 좋음

    ojdbc6.jar를 lib 안에 넣음

     

    30)

    <!-- 이것도 출력이 된다는것을 확인하기 위한것 -->

    <!--  넘어온제목: <%= Gtitle %> <br> -->

    <!--넘어온급여:   <%= Gpay   %> <br>   -->

     

    31)

    //저장성공후 전체출력화면으로 이동

      //response.sendRedirect("guestList.jsp");

     

    32) guestWriteSave 문서에 있는 하위 항목 guestList 에 복시

    |- 전역변수

    |- 임포트

    |- <% 드라이버매니저  db연결정보%>

     

    33)

    |- guestList

    |- guestWriteSave

    이렇게 두군데로 나눠서 적는 경우의 단점으로, 각각의 파일에 db 연결 부분을 적어줘야한다는 불편함이 있다.

     

    34) 조회한 결과를 RS가 기억한다.

    결과를 웹페이지에 출력하는 두가지 방법

    while (RS.next()) {

    System.out.println(RS.getString(“title”)); => 이건 콘솔에 뿌리는거

    out.println(RS.getString(“title”));  => 음.. 되긴 되는데..

    <%= RS.getString(“title”)) %>   ⇒ 이게 더 깔끔하다.

    }

     

    35) 

    이렇게 총 세개의 jsp 파일을 만들어서 db 연결에 성공했다.

    guestList.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <%@ page import="java.sql.Statement" %>

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

    <%@ page import="java.sql.CallableStatement" %>

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

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

    <%@ page import="java.util.Date"%>

    <%! Connection CN;

      Statement ST; 

      PreparedStatement PST;

      CallableStatement CST; 

      ResultSet RS; 

      int Gsabun, Gpay, Ghit, Gtotal; String Gname, Gtitle, Gemail;

      java.util.Date Gwdate;

      String msg="쿼리문기술"; String submsg="";

    %>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[geustList.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body> <!-- 이 파일은 단독실행 가능 -->


    <%

    try{

    Class.forName("oracle.jdbc.driver.OracleDriver"); //드라이브로드

        String url="jdbc:oracle:thin:@127.0.0.1:1521:XE" ;

        CN=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","system","1234");

        System.out.println("Oracle Connected at 2020-07-21 Tue");

        

        msg="select * from guest";

        ST=CN.createStatement();

        RS=ST.executeQuery(msg);

    }catch(Exception ex){System.out.println("Error name :" + ex);}

    %>


    <p>

    <table width=900 border="1" cellspacing="0">

    <tr bgcolor="yellow">

    <td>사번</td> <td>이름</td> <td>제목</td> <td>날짜</td> <td>조회수</td>

    </tr>


    <%

    while(RS.next()){

    Gsabun=RS.getInt("sabun");

    Gtitle=RS.getString("title");

    %>


    <tr>

      <td><%= Gsabun %></td>

      <td><%= RS.getString("name") %></td> 

      <td><%= RS.getString("title") %></td> 

      <td><%= RS.getDate("wdate") %></td> 

      <td><%= RS.getInt("hit") %></td>

    </tr>

    <% } %>

    </table>

    <br>

     <a href="guestWrite.jsp">[회원등록]</a>

     <a href="index.jsp">[메인화면]</a>

     <a href="guestList.jsp">[전체출력]</a>

    <p><br>

    </body>

    </html>

     

    guestWrite.jsp

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestWrite.jsp 입력 화면]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body>

    <!-- 주석 -->

     <p>

      guestWrite.jsp문서 입력화면<p>

     <form method="get" action="guestWriteSave.jsp">

     사번 : <input type="text" name="sabun"><br>

     이름 : <input type="text" name="name"><br> 

     제목 : <input type="text" name="title"><br>

     급여 : <input type="text" name="pay" value="97"><br> 

     메일 : <input type="text" name="email" value="email"><br>

          <input type="submit" value="등록하기">

          <input type="reset" value="입력취소">

     </form>

     

     <p>

     <a href="guestWrite.jsp">[회원등록]</a>

     <a href="index.jsp">[메인화면]</a>

     <a href="guestList.jsp">[전체출력]</a>

     <p><br>

    </body>

    </html>

     

    guestWriteSave.jsp

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <%@ page import="java.sql.Statement" %>

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

    <%@ page import="java.sql.CallableStatement" %>

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

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

    <%@ page import="java.util.Date"%>

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestWriteSave.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body>

    <!-- 자바코드기술한 페이지 -->

      <%! Connection CN;

         Statement ST; 

         PreparedStatement PST;

         CallableStatement CST; 

         ResultSet RS; 

         int Gsabun, Gpay, Ghit, Gtotal; String Gname, Gtitle, Gemail;

         java.util.Date Gwdate;

         String msg="쿼리문기술"; String submsg="";

      %>

     <p>

      <%

      Gsabun=Integer.parseInt(request.getParameter("sabun"));

      Gname=request.getParameter("name");

      Gtitle=request.getParameter("title");

      Gpay=Integer.parseInt(request.getParameter("pay"));

      Gemail=request.getParameter("email");

      

      //웹페이지에 출력

      out.println("사번=" + Gsabun + "<br>");

      out.println("이름=" + Gname + "<br>");

      out.println("제목=" + Gtitle + "<br>");

      out.println("급여=" + Gpay + "<br>");

      out.println("메일=" + Gemail + "<br>");

      

      try{

       Class.forName("oracle.jdbc.driver.OracleDriver"); //드라이브로드

        String url="jdbc:oracle:thin:@127.0.0.1:1521:XE" ;

        CN=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","system","1234");

        System.out.println("Oracle Connected at 2020-07-21 Tue");

        

        ST=CN.createStatement();

     

        //msg="insert into guest values(Gsabun, 싱Gname싱, 싱Gtitle싱, sysdate, Gpay, 0, 싱Gemail싱)";

        msg="insert into guest values(" + Gsabun +", '" + Gname + "', '"+ Gtitle + "', sysdate, " + Gpay + ", "+ 0 +", '" + Gemail + "')";

       System.out.println(msg);

       System.out.println("데이터 저장 성공 했습니다.");

       out.println(msg);

       ST.executeUpdate(msg); //데이터를 오라클에 넣어주는 역할

      } catch (Exception e){}

      %>


     <br>

     <a href="guestWrite.jsp">[회원등록]</a>

     <a href="index.jsp">[메인화면]</a>

     <a href="guestList.jsp">[전체출력]</a>

    </body>

    </html>

     

    36) guestList를 복사해서 guestDetail 파일을 하나 만들어준다.

    그리고 새로운 변수 String data = “5566”;

    msg 안에 

    msg="select * from guest where sabun = " + data; 를 수정해준다.

    그러면 조회한 한건의 결과를 RS가 기억하는중

    37) ssi : Server side include

    38) guestDetail 파일의 while 을 if 로 바꿔준다.

    39) guestDetail을 복사해서 ssi.jsp 를 만들어준다.

    테이블을 과감하게 다 없애버린다.

    40) guestWriteSave 에서 중복되는 전역변수와 데이터베이스 연결문, 임포트문을 다 없애버리고 <%@ include file =”ssi.jsp”%>를 상단에 적어준다.





    2020-07-22 수요일

    1)문서이동방법

    1) a 태그

    2) form 태그

    3) response.sendRedirect(“”)

    4) 자바스크립트 setTimeout(“location.href=’문서’, 1000)

     

     

    2) 예전에 만들어둔 index.html 의 바디 부분을 복사해서 eclipse 에 있는 index.jsp 의 바디에 붙여줬다. index 를 실행하면 2초 후에 넘어간다.

     

     

    3)

     

    4) ssi 에 ST=CN.createStatement(); 를 빼줬다.

     

    현재 guestList 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[geustList.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    #pline{ margin-top : 35px; }

    </style>

    </head>

    <body> <!-- 이 파일은 단독실행 가능 -->

    <%

        //ST=CN.createStatement();

        //String msg2="select rownum rn, g.* from guest g"; //행번호도 나오면서 사번으로 소트하는건 어떻게 하는걸까?

        //RS=ST.executeQuery(msg2);

    %>

    <%

    msg="select count(*) as Record from guest";

    RS=ST.executeQuery(msg);

    RS.next();

    Gtotal = RS.getInt("RECORD");

    %>

    <p id="Pline">

    레코드 갯수 [<%= Gtotal %>]


    <table width=900 border="1" cellspacing="0">

    <tr bgcolor="yellow">

    <td>행번호</td> <td>사번</td> <td>이름</td> <td>제목</td> <td>이메일</td> <td>날짜</td> <td>조회수</td>

    </tr>


    <%

        msg="select rownum rn, g.* from guest g"; //행번호도 나오면서 사번으로 소트하는건 어떻게 하는걸까?

        RS=ST.executeQuery(msg);

    while(RS.next()){

    //Grownum=RS.getInt("rn");

    Gsabun=RS.getInt("sabun");

    Gtitle=RS.getString("title");

    Gemail=RS.getString("email");

    %>


    <tr>

      <td><%= RS.getInt("rn") %></td>

      <td><%= RS.getInt("sabun") %></td>

      <td><%= RS.getString("name") %></td> 

      <td><%= RS.getString("title") %></td> 

      <td><%= RS.getString("email") %></td>

      <td><%= RS.getDate("wdate") %></td> 

      <td><%= RS.getInt("hit") %></td>

    </tr>

    <% } %>

    </table>

    <br>

     <a href="guestWrite.jsp">[회원등록]</a>

     <a href="index.jsp">[메인화면]</a>

     <a href="guestList.jsp">[전체출력]</a>

    <p><br>

    </body>

    </html>

     

    5) 이제 이미 등록되어있는 정보를 중복등록을 했을때 alert 창을 띄우면서 에러를 띄워보자.

     

    6) 

    msg = "SELECT COUNT(*) AS CNT FROM GUEST WHERE SABUN = " + Gsabun;

    if (Gsabun > 0 ) 

    Gsabun이 있을경우 1이니까 이렇게 쓴다.

    만약에 Gsabun 이 0 보다 작은 경우에는 없다는 뜻이다.

    페이지가 location.href="guestWrite.jsp"; 로 넘어가니까 break;는 없어도 된다.

     

     

    현재 guestWriteSave2.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestWriteSave2.jsp]</title>

    <style type="text/css">


    </style>

    </head>

    <body>

     <p>

      <%

         Gsabun = Integer.parseInt(request.getParameter("sabun"));

         Gname  = request.getParameter("name");

         Gtitle = request.getParameter("title");

         Gpay   = Integer.parseInt(request.getParameter("pay"));

         Gemail = request.getParameter("email");

         

         System.out.println("사번=" + Gsabun + "<br>");

         System.out.println("이름=" + Gname + "<br>");

         System.out.println("제목=" + Gtitle + "<br>");

         System.out.println("급여=" + Gpay + "<br>");

         System.out.println("메일=" + Gemail + "<br>");

         //중복체크

         try{

         msg="select sabun from guest";

         ST=CN.createStatement();

         RS=ST.executeQuery(msg);

         while (RS.next()){

         if (Gsabun == RS.getInt("sabun")) {

            %>

            <script type="text/javascript">

            alert("이미 있는 사번 입니다. 다른 사번을 이용하세요.");

            location.href="guestWrite.jsp";

            </script>

            <%

        Date now = new Date();

        System.out.println("[guestWriteSave2.jsp_PST used] Oracle Connected at "+ now);

        } else {

        msg="insert into guest values(?, ?, ?, sysdate, ?, 0, ?)"; // 물음표 갯수가 순서임

        PST=CN.prepareStatement(msg);

           PST.setInt(1, Gsabun);

           PST.setString(2, Gname);

           PST.setString(3, Gtitle);

           PST.setInt(4, Gpay);

           PST.setString(5, Gemail);

            PST.executeUpdate();

        System.out.println("데이터 저장 성공 했습니다.\n" + msg);

        out.println(msg);

        response.sendRedirect("guestList.jsp");

        } //else end

      }//while end

        } catch (Exception e){

       System.out.println("[guestWriteSave.jsp] 에러 사유 : " + e);

       e.printStackTrace();}

      %>


     <br>

     <a href="guestWrite.jsp">[회원등록]</a>

     <a href="index.jsp">[메인화면]</a>

     <a href="guestList.jsp">[전체출력]</a>   

    </body>

    </html>



    7) 

    Web에서 자동인식

    |-html

    |-css

    |-javascript

     

    Dom : Document of Model

    Bom : Web browser model

     

    |-  면접관 : Dom, Bom 모델 해보셨어요?

    => Javascript, Ajax, jQuery, Bootstrap 해봤는지?

    => Node, View, React 해봤는지?

    1) Window

    2) document

    3) history

    4) location

    5) Array

    6) Date 날짜 dt=new Date()

     

    <script type=”text/javascript”>

    funtion emailcheck() {

    함수가 없는 상태

    }

    </script>



    8) 원래는 guestWrite.jsp 에서 중복체크를 해야된다. 그런데 guestWriteSave에서 하면 guestWrite에서도 쉽게 할 수 있기 때문에 한거다.

     

    9) 면접시 못하는데 잘한다고 하면 연봉이 올라가겠지만 나중에 필히 망신당한다. 그러니까 솔직하게 못한다고 하자. 

     

    10) 

    class AAAA{

       public String getBook() {

       String title="몽블랑";

       return title;

       }//end

     

       public int getPay() {

       int m=2700;

       return m

       }//end

     

       public boolean success() {

       boolean flag = true;

       return flag;

       }//end

     

       public double average() {

       double avg = 3.1415;

       return avg;

       }//end

     

       public void note() {

       코드기술

       return ; 리턴값이 없으면 void다.

       이 리턴은 빠져나가겠다는 말임

       리턴을 적으면 아래에 코드가 없어야됌

      if (ok>0) { 처리 return; }

      else {처리 return;} 리턴 단독 기술은 아래에 코드가 없다.

       }//end

    }

     

    11) 

    return 단독 사용 : 함수를 빠져나가겠다.

    break 단독 사용 : 에러

    따라서 return 은 아래에 코드가 없을때만 사용가능하다. 밑에 코드를 더 기술하면 그건 unreachable code 가 되버린다.

     



    사번

    사진

    이름

    이메일

    날짜

    제목

     

    guestDetail.jsp 완성 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[geustDetail.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body align = "center"> <!-- 이 파일은 단독실행 가능 -->


    <%

        data = "5566";

        msg="select * from guest where sabun = " + data;

        ST=CN.createStatement();

        RS=ST.executeQuery(msg); // 조회한 한건의 결과를 RS가 기억하는중

    %>

    <p>

    <table width=600 border="1" cellspacing="0">

    <tr bgcolor="yellow">

    <td>사번</td> <td>이름</td> <td>제목</td> <td>이메일</td><td>날짜</td> <td>조회수</td>

    </tr>

    <%

    if (RS.next()){

    Gsabun=RS.getInt("sabun");

    Gtitle=RS.getString("title");

    Gemail=RS.getString("email");

    %>

    <tr>

      <td><%= Gsabun %></td>

      <td><%= RS.getString("name") %></td> 

      <td><%= RS.getString("title") %></td> 

      <td><%= RS.getString("email") %></td>

      <td><%= RS.getDate("wdate") %></td> 

      <td><%= RS.getInt("hit") %></td>

    </tr>


    <% } %>

    </table>


    <p>


      <Table width=600 border="1" cellspacing="0">

    <tr align="center">

    <td colspan="2" bgcolor="skyblue"><p>사번 [<%= Gsabun %>]</p></td>

    </tr>

    <tr>

    <td rowspan="4" width=300>

    <img src="images/pic_5.jpg" width=300></td>

    <td> 이름 : <%= RS.getString("name") %> </td>

    </tr>

    <tr>

    <td> 제목 : <%= RS.getString("title") %></td>

    </tr>

    <tr>

    <td> 메일 : <%= RS.getString("email") %></td>

    </tr>

    <tr>

    <td> 날짜 : <%= RS.getDate("wdate") %></td>

    </tr>

    <tr>

    <td colspan="2" align="center"><p>

    <a href="guestWrite.jsp">[등록]</a>

    <a href="guestWrite.jsp">[수정]</a>

    <a href="guestWrite.jsp">[삭제]</a>

    <a href="index.jsp">[메인화면]</a>

    <a href="guestList.jsp">[전체출력]</a>

    </p>

    </td>

    </tr>

      </Table>

      <!-- 댓글 문서 여기에 붙일거야요 guestReply.jsp -->

      

      </body>

    </html>



    12) 문서이동방법

     

    1) a태그는 사용자가 텍스트나 그림을 클릭해야함

      <a href=”index.jsp”> [시작] </a>


    guestList에서 

    Gtitle=RS.getString(“title”);

    Gsabun=RS.getString(“sabun”);

    guestLst에서 제목을 누르면 상세 geustDetail 로 이동하고싶다.

    <a href=”guestDetail.jsp”> <%Gtitle%> </a>


    guestList에서 title을 누르면 상세 geustDetail 에 데이터를 보내고 싶다.

    data = request.getParameter(“사번”);

    msg=”select * from guest where sabun =” + data;

    <a href=”guestDetail.jsp”> <% Gsabun %> </a>

    <a href=”guestDetail.jsp”?idx=5566”> <% Gsabun %> </a>

    <a href=”guestDetail.jsp”?idx=Gsabun”> <% Gsabun %> </a>

    <a href=”guestDetail.jsp”?idx=<%=Gsabun%>”> <% Gsabun %> </a>

    <a href=”guestDetail.jsp”?idx=<%=Gsabun%>&”> <% Gsabun %> </a>

    id, user 




    item?goodsCode=1590 넘길 값

    |- 넘기려는 장소

    예를들어 G마켓 식품 페이지의 아무 음식을 클릭하고 들어가서 url을 살펴보면 이렇다.

     

     

    확장자와 넘길값을 구분해주는 문자 ==> ?


    ssi.jsp문서 data 대신 Gdata로 변경

    guestDetail.jsp문서에서 사번데이터를

    Gdata = request.getParameter(“idx”);

    system.out.println(“넘어온 Gsabun =” + data);

    msg=”select * from guest where sabun = ” + Gdata;

     

    문제

    guestList.jsp 문서에서 제목 내용을 클릭했을때 guestDetail.jsp 가 나오도록

    2) form 태그


    3) response.sendRedirect(“guestList.jsp”);

    4) setTimeout(location.href=””, 2000);

    5) 참고팝업창 window.open함수(1,2,3);



     

    13) guestEditSave.jsp 는 guestWrite.jsp  + guestDetail.jsp 

    value=<%=Gtitle%>

    Statement 는 셀렉트 쿼리 쓸때만 쓴다.

    PreparedStatement 는 업데이트 할때 쓴다.

    아이디 중복체크를 자바스크립트로 할 예정

     

    14) 완성된 guestEdit.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestEdit.jsp]</title>

    <style type="text/css">

    </style>

    </head>

    <body>

    <%

        Gdata= request.getParameter("idx");

        System.out.println("[guestEdit] 넘어온 Gsabun : " + Gdata);

      %>



     <form method="get" action="guestEditSave.jsp">

     사번 : <input type="text" name="sabun" value="<%=Gdata %>"><br>

     이름 : <input type="text" name="name" value=""><br> 

     제목 : <input type="text" name="title" value=""><br>

     급여 : <input type="text" name="pay" value=""><br> 

     메일 : <input type="text" name="email" value=""><br>

          <input type="submit" value="수정완료">

          <input type="reset" value="수정취소">

       </form>

       <p>

       <a href="guestList.jsp">[뒤로가기]</a>

       </p>

    </body>

    </html>

     

    15) 완성된 guestEditSave.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestEdit.jsp]</title>

    <style type="text/css">

    </style>

    </head>

    <body>


    <%

    Gsabun = Integer.parseInt(request.getParameter("sabun"));

    Gname  = request.getParameter("name");

    Gtitle = request.getParameter("title");

    Gpay   = Integer.parseInt(request.getParameter("pay"));

    Gemail = request.getParameter("email");

      

        try{ //수정하는 쿼리

          msg = "update guest set sabun=?, name=?, title=?, pay=?, email=? " 

           +" where sabun= "+ Gsabun;

           PST = CN.prepareStatement(msg);

       PST.setInt(1, Gsabun);

       PST.setString(2, Gname);

       PST.setString(3, Gtitle);

       PST.setInt(4, Gpay);

       PST.setString(5, Gemail);

       PST.executeUpdate();

       System.out.println("데이터 수정 성공 했습니다.");

        response.sendRedirect("guestList.jsp");

        } catch (Exception e){

       System.out.println("[guestEidtSave.jsp] 에러 사유 : " + e);}

    %>

      

    </body>

    </html>

     

    16) 완성된 guestDetail.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[geustDetail.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body align = "center"> <!-- 이 파일은 단독실행 가능 -->


    <%

        Gdata = request.getParameter("idx");

    System.out.println("[guestDetail] 넘어온 Gsabun =" + Gdata);

        msg="select * from guest where sabun = " + Gdata;

        ST=CN.createStatement();

        RS=ST.executeQuery(msg); // 조회한 한건의 결과를 RS가 기억하는중

    %>

    <p>

    <table width=600 border="1" cellspacing="0">

    <tr bgcolor="yellow">

    <td>사번</td> <td>이름</td> <td>제목</td> <td>이메일</td><td>날짜</td> <td>조회수</td>

    </tr>

    <%

    if (RS.next()){

    Gsabun=RS.getInt("sabun");

    Gtitle=RS.getString("title");

    Gemail=RS.getString("email");

    %>

    <tr>

      <td><%= Gsabun %></td>

      <td><%= RS.getString("name") %></td> 

      <td><%= RS.getString("title") %></td> 

      <td><%= RS.getString("email") %></td>

      <td><%= RS.getDate("wdate") %></td> 

      <td><%= RS.getInt("hit") %></td>

    </tr>


    <% } %>

    </table>


    <p>


      <Table width=600 border="1" cellspacing="0">

    <tr align="center">

    <td colspan="2" bgcolor="skyblue"><p>사번 [<%= Gsabun %>]</p></td>

    </tr>

    <tr>

    <td rowspan="4" width=300>

    <img src="images/pic_5.jpg" width=300></td>

    <td> 이름 : <%= RS.getString("name") %> </td>

    </tr>

    <tr>

    <td> 제목 : <%= RS.getString("title") %></td>

    </tr>

    <tr>

    <td> 메일 : <%= RS.getString("email") %></td>

    </tr>

    <tr>

    <td> 날짜 : <%= RS.getDate("wdate") %></td>

    </tr>

    <tr>

    <td colspan="2" align="center"><p>

    <a href="guestWrite.jsp">[등록]</a>

    <a href="guestEdit.jsp?idx=<%=Gsabun%>">[수정]</a>

    <a href="guestDelete.jsp?idx=<%=Gsabun%>">[삭제]</a>

    <a href="index.jsp">[메인화면]</a>

    <a href="guestList.jsp">[전체출력]</a>

    </p>

    </td>

    </tr>

      </Table>

      <!-- 댓글 문서 여기에 붙일거야요 guestReply.jsp -->

      

      </body>

    </html>

     

    17) 완성된 guestDelete.jsp 코드

     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>[guestDelete.jsp]</title>

    <style type="text/css">

    *{font-size:16pt;}

    a{ font-size: 16pt; color:black; text-decoration:none;}

    a:hover{ font-size: 16pt; color:blue; text-decoration:underline;}

    </style>

    </head>

    <body>

      <%

      try{ //삭제하는 쿼리

       int ret = Integer.parseInt(request.getParameter("idx"));

        msg="delete from guest where sabun =" + ret;

        ST=CN.createStatement();

        ST.executeUpdate(msg);

       System.out.println("데이터 삭제 성공 했습니다.");

      } catch (Exception e){}

      response.sendRedirect("guestList.jsp");

      %>

    </body>

    </html>



    18) 이렇게 오늘 중복된 내용을 등록하는 경우 alert 창이 나오는 것과

    삭제, 수정, 수정한 내용을 저장하는 jsp 파일을 구현해봤다.

    guestWrite.jsp (중복체크)

    guestDetail.jsp (한건상세)

    guestDelete.jsp (Detail에서 선택한 한건 삭제)

    guestEdit.jsp (Detail에서 선택한 한건 수정 하는 화면)

    guestEditSave.jsp (Detail에서 선택한 한건 수정 후 저장)

     

    댓글

Today
Designed by Danbee Park.