0425

조성현·2023년 4월 25일
0

get과 post

get
: a
-> 개발자가 의도한 방식으로 데이터를 전송

post
: form
-> 사용자 입력대기

주석 처리

jsp : <%-- --%>
html : < !-- -->
java : // /* */

웹 프로그램 만들기

UI 제작 : 웹디자이너(psd, ai) / 퍼블리셔(html) => front-end + js
back-end

디자인 시안 -> 기획 -> 웹 사이트 프로그램
기획
1. page 흐름 + 데이터 흐름
2. UML

3. ERD

4. DFD(data flow diagram) - page간의 흐름 / page내부의 흐름(알고리즘)

ERD - 1개의 테이블 컬럼에 대한 내용작성

테이블 명 : board1
번호		  seq		  int				not null primary key auto_increment
제목		  subject	  varchar(150)		not null
글쓴이	  wirter	  varchar(12)		not null
이메일	  mail		  varchar(50)		null
비밀번호	  password	  varchar(12)		not null
내용		  content	  varchar(2000)		null
조회수	  hit		  int				not null
아이피	  wip		  varchar(15)		not null
등록일	  wdate		  date				not null

생성자 생성

create user board@'%' identified by '1234';

데이터베이스 생성 및 권한 부여

grant all privileges on board.* to board@'%';

create database board;

table 생성

create table board1(
seq int auto_increment primary key,
subject	 varchar(150) not null,
writer varchar(12) not null,
mail varchar(50),
password varchar(12) not null,
content varchar(2000),
hit int not null,
wip varchar(15) not null,
wdate datetime not null
);

암호화

평문 -> 비문
: md5, sha
java 또는 mariadb에서 실행

테이블 추가

insert into board1 values (0, '제목', '이름', 'test@test.com', '1234', '내용', 0, '000.000.000.000', now() );

페이지 흐름 + 데이터의 흐름

글목록		board_list1.jsp
글쓰기		board_write1.jsp
글자세히보기	board_view1.jsp
글수정		board_modify1.jsp
글삭제		board_delete1.jsp

페이지 흐름(page navigation)

board_list1.jsp
	(x)							(입력내용)					(x)	
	board_write1.jsp		->	board_write_ok.jsp		->	board_list1.jsp
    (seq)
    board_view1.jsp
    	(seq)					(seq, 수정내용)				(seq)
    	board_modify1.jsp	->	board_modify1_ok.jsp	->	board_view1.jsp
        (seq)					(seq, 비밀번호)				(x)
        board_delete1.jsp	->	board_delete1_ok.jsp	->	board_list1.jsp

실행

board_writer1_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingException" %>

<%@ page import="javax.sql.DataSource" %>

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

<%
	request.setCharacterEncoding("utf-8");
	
	String subject = request.getParameter("subject");
	String writer = request.getParameter("writer");
	
	String mail = "";
	if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("")) {
		mail = request.getParameter("mail1") + "@" + request.getParameter("mail2");
	}
	
	String password = request.getParameter("password");
	String content = request.getParameter("content");
	String wip = request.getRemoteAddr();
	
	// 항상 콘솔창에 출력해서 확인할 것.
	/*
	System.out.println(subject);
	System.out.println(writer);
	System.out.println(mail);
	System.out.println(password);
	System.out.println(content);
	System.out.println(wip);
	*/
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	
	try {
		Context initCtx = new InitialContext();
		Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
		
		DataSource dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb3" );
		
		conn = dataSource.getConnection();
	
		String sql = "insert into board1 values (0, ?, ?, ?, ?, ?, 0, ?, now() );";
		pstmt = conn.prepareStatement( sql );
		pstmt.setString(1, subject);
		pstmt.setString(2, writer);
		pstmt.setString(3, mail);
		pstmt.setString(4, password);
		pstmt.setString(5, content);
		pstmt.setString(6, wip);
		
		int result = pstmt.executeUpdate();
		if(result == 1) {
			System.out.println("성공");
		} else {
			System.out.println("실패");
		}
	} catch( NamingException e ) {
		System.out.println( "[에러] " + e.getMessage() );
	} catch( SQLException e ) {
		System.out.println( "[에러] " + e.getMessage() );
	} finally {
		if( pstmt != null ) pstmt.close();
		if( conn != null ) conn.close();
	}
%>


flag를 통한 에러표현

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingException" %>

<%@ page import="javax.sql.DataSource" %>

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

<%
	request.setCharacterEncoding("utf-8");
	
	String subject = request.getParameter("subject");
	String writer = request.getParameter("writer");
	
	String mail = "";
	if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("")) {
		mail = request.getParameter("mail1") + "@" + request.getParameter("mail2");
	}
	
	String password = request.getParameter("password");
	String content = request.getParameter("content");
	String wip = request.getRemoteAddr();
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	
	// 0 : 정상  / 1 : 비정상
	int flag = 1;
	try {
		Context initCtx = new InitialContext();
		Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
		
		DataSource dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb3" );
		
		conn = dataSource.getConnection();
	
		String sql = "insert into board1 values (0, ?, ?, ?, ?, ?, 0, ?, now() );";
		pstmt = conn.prepareStatement( sql );
		pstmt.setString(1, subject);
		pstmt.setString(2, writer);
		pstmt.setString(3, mail);
		pstmt.setString(4, password);
		pstmt.setString(5, content);
		pstmt.setString(6, wip);
		
		int result = pstmt.executeUpdate();
		if(result == 1) {
			//System.out.println("성공");
			flag = 0; // flag = 1;로 바꾸면 실패 처리
		} else {
			//System.out.println("실패");
		}
		
	} catch( NamingException e ) {
		System.out.println( "[에러] " + e.getMessage() );
	} catch( SQLException e ) {
		System.out.println( "[에러] " + e.getMessage() );
	} finally {
		if( pstmt != null ) pstmt.close();
		if( conn != null ) conn.close();
	}
	
	out.println("<script type='text/javascript'>");
	if(flag == 0) {
		out.println("alert('글 쓰기 성공');");
		out.println("location.href='board_list1.jsp';");
	} else {
		out.println("alert('글 쓰기 실패');");
		out.println("history.back();");
	}
	out.println("</script>");
%>

정상일 때

비정상 일 때

0개의 댓글