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내부의 흐름(알고리즘)
테이블 명 : 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;
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
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
<%@ 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();
}
%>
<%@ 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>");
%>
정상일 때
비정상 일 때