본문 바로가기

Programming/Servlet & JSP

담벼락 웹페이지(MessageSystem)

MessageSystem.zip
3.36MB

com.controller.DeleteAllMessageCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.model.MemberDTO;
import com.model.MessageDAO;

import front.ICommand;

public class DeleteAllMessageCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		
		String moveURL = null;
		
		HttpSession session = request.getSession();
		MemberDTO info = (MemberDTO) session.getAttribute("info");

		MessageDAO dao = new MessageDAO();
		dao.deleteAll(info.getEmail());
		
		moveURL = "main.jsp";
		
		return moveURL;
	}

}

 

com.controller.DeleteMessageCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.model.MessageDAO;

import front.ICommand;

public class DeleteMessageCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		String moveURL = null;
		int num = Integer.parseInt(request.getParameter("num"));

		MessageDAO dao = new MessageDAO();
		dao.delete(num);
		moveURL = "main.jsp#message";
		
		return moveURL;
	}

}

 

com.controller.InsertMessageCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.model.MessageDAO;
import com.model.MessageDTO;

import front.ICommand;

public class InsertMessageCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		String moveURL = null;
		String send_name = request.getParameter("send_name");
		String receive_email = request.getParameter("receive_email");
		String content = request.getParameter("content");

		MessageDAO dao = new MessageDAO();
		MessageDTO dto = new MessageDTO(send_name, receive_email, content);
		dao.insert(dto);

		moveURL = "main.jsp";
		
		return moveURL;
	}

}

 

com.controller.JoinCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.model.MemberDAO;
import com.model.MemberDTO;

import front.ICommand;

public class JoinCon implements ICommand{
	public String execute(HttpServletRequest request, HttpServletResponse response) {
		String moveURL = null;

		String email = request.getParameter("email");
		String pw = request.getParameter("pw");
		String tel = request.getParameter("tel");
		String address = request.getParameter("address");

		MemberDTO dto = new MemberDTO(email, pw, tel, address);
		MemberDAO dao = MemberDAO.getDAO();
		dao.join(dto);

		moveURL = "main.jsp";
		return moveURL;
	}
}

 

com.controller.LoginCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.model.MemberDAO;
import com.model.MemberDTO;

import front.ICommand;

public class LoginCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		String moveURL = null;

		String email = request.getParameter("email");
		String pw = request.getParameter("pw");

		MemberDTO dto = new MemberDTO(email, pw);
		MemberDAO dao = MemberDAO.getDAO();
		// info 안에는 로그인 성공시 --> email, tel, address
		// 로그인 실패시 --> null 을 가지고 있다.
		MemberDTO info = dao.login(dto);

		if (info != null) {
			HttpSession session = request.getSession(); // 정보를 세션에 저장 (개인정보이니까 서버에서 보관)
			session.setAttribute("info", info);
		}

		moveURL = "main.jsp";

		return moveURL;
	}

}

 

com.controller.LogoutCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import front.ICommand;

public class LogoutCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		
		String moveURL = null;
		
		HttpSession session = request.getSession();
		session.removeAttribute("info");
		
		moveURL = "main.jsp";
		return moveURL;
	}

}

 

com.controller.UpdateCon

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.model.MemberDAO;
import com.model.MemberDTO;

import front.ICommand;

public class UpdateCon implements ICommand {

	public String execute(HttpServletRequest request, HttpServletResponse response) {
		String moveURL = null;

		HttpSession session = request.getSession();
		MemberDTO info = (MemberDTO) session.getAttribute("info");

		String email = info.getEmail();
		String pw = request.getParameter("pw");
		String tel = request.getParameter("tel");
		String address = request.getParameter("address");

		MemberDTO dto = new MemberDTO(email, pw, tel, address);
		MemberDAO dao = MemberDAO.getDAO();
		int cnt = dao.update(dto);

		if (cnt > 0) {
			session.setAttribute("info", dto); // 세션 초기화를 통해 화면에 사용자 정보 최신화함
		}

		moveURL = "main.jsp";
		return moveURL;
	}

}

 

com.model.MemberDAO

package com.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MemberDAO {

	private Connection conn;
	private PreparedStatement psmt;
	private ResultSet rs;
	private static MemberDAO dao;

	// singleton pattern : 객체를 하나만 생성해서 모두 돌아가며 사용하는 것
	private MemberDAO() {

	}

	public static MemberDAO getDAO() {
		if (dao == null) {
			dao = new MemberDAO();
		}
		return dao;
	}

	private void getConnection() { // DB 연동하는 1, 2 단계는 매번 똑같으므로 매소드로 만들어둠
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";

			conn = DriverManager.getConnection(db_url, db_id, db_pw);

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private void close() { // DB 연동하는 4단계는 매번 똑같으므로 매소드로 만들어둠
		try {
			if (rs != null)
				rs.close();
			if (psmt != null)
				psmt.close();
			if (conn != null)
				conn.close();

		} catch (SQLException e) { // 모든 데이터베이스에 관련된 오류를 전부 다 잡아줌 (SQL)
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public int join(MemberDTO dto) {

		int cnt = 0;
		try {
			// 1, 2 단계
			getConnection();

			// 3단계. SQL 작성하고 실행할 수 있는 PreparedStatement 객체를 --> Connection 객체로부터 받아온다.
			String sql = "insert into web_member values(?,?,?,?)"; // 값이 4개
			// 아직 무슨 값인지 모르니까 ? 로 적음

			psmt = conn.prepareStatement(sql); // SQL 문장을 자바에서 설정해주는 객체
			psmt.setString(1, dto.getEmail());
			psmt.setString(2, dto.getPw());
			psmt.setString(3, dto.getTel());
			psmt.setString(4, dto.getAddress());
			cnt = psmt.executeUpdate(); // SQL 문장을 실행하겠다. (cnt>0 이면 정상실행됨)
			// 실행문장의 개수를 숫자로 알려줌

//			// 회원가입 잘되는지 안 되는지 확인하기 위해 조건문 작성
//			// --> 굳이 작성하지 않아도 됨 (없어도 되지만 확인하기 위해 작성한거라서 나중에는 없어도 됨)
//			if (cnt > 0) {
//				System.out.println("회원가입 성공");
//			} else {
//				System.out.println("회원가입 실패");
//			}

		} catch (SQLException e) { // 모든 데이터베이스에 관련된 오류를 전부 다 잡아줌 (SQL)
			e.printStackTrace();

		} finally { // 4단계. 연결 종료 (역순으로) // --> null 값이 아닐 때만 닫아주겠다.
			close();

		}

		return cnt;
	}

	public MemberDTO login(MemberDTO dto) {

		MemberDTO info = null; // MemberDTO 를 위에서 선언

//		String l_email = null;
//		String l_pw = null;
//		String l_tel = null;
//		String l_address = null;

		try {
//1,2 단계를  실행해주는 부분을 메소드로 만들어서 사용함 (코드를 줄여주기 위해서)
			getConnection();

			// 3단계. SQL 작성하고 실행할 수 있는 PreparedStatement 객체를 --> Connection 객체로부터 받아온다.
			String sql = "Select * from web_member where email = ? and pw = ? ";
			psmt = conn.prepareStatement(sql); // SQL 문장을 자바에서 설정해주는 객체
			psmt.setString(1, dto.getEmail()); // SQL 물음표값 채워주기
			psmt.setString(2, dto.getPw());
			rs = psmt.executeQuery(); // 실행

			if (rs.next()) { // ResultSet 이 한칸 내려올 수 있는지 물어봄
				// ---> 한 칸 내려올 수 있다면 한칸 내려와서 데이터를 뽑아옴

				String email = rs.getString(1);
				String tel = rs.getString(3);
				String address = rs.getString(4);

				info = new MemberDTO(email, tel, address); // 로그인을 성공했을시에 MemberDTO 를 생성해줌

			}

		} catch (SQLException e) { // <2>
			e.printStackTrace();
		} finally {
			close(); // 4단계를 실행해주는 부분을 메소드로 만들어서 사용함 (코드를 줄여주기 위해서)

		}

		return info;
	}

	public int update(MemberDTO dto) {

		int cnt = 0;
		try {
			getConnection();
			String sql = "update web_member set pw=?, tel=?, address=? where email=?";

			psmt = conn.prepareStatement(sql); // SQL 문장을 자바에서 설정해주는 객체
			psmt.setString(1, dto.getPw());
			psmt.setString(2, dto.getTel());
			psmt.setString(3, dto.getAddress());
			psmt.setString(4, dto.getEmail());
			cnt = psmt.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();

		} finally {
			close();
		}

		return cnt;
	}
}

 

com.model.MemberDTO

package com.model;

public class MemberDTO {
	
	
	private String email;
	private String pw;
	private String tel;
	private String address;
	
	
	// 생성자
	public MemberDTO(String email, String pw, String tel, String address) {
		this.email = email;
		this.pw = pw;
		this.tel = tel;
		this.address = address;
	}
	
	public MemberDTO(String email, String pw) {
		this.email = email;
		this.pw = pw;
	}

	

	public MemberDTO(String email, String tel, String address) {
		this.email = email;
		this.tel = tel;
		this.address = address;
	}

	// Getter , Setter
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
	
	

}

 

com.model.MessageDAO

package com.model;

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

public class MessageDAO {

	private Connection conn;
	private PreparedStatement psmt;
	private ResultSet rs;

	private void getConnection() { // DB 연동하는 1, 2 단계는 매번 똑같으므로 매소드로 만들어둠
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";

			conn = DriverManager.getConnection(db_url, db_id, db_pw);

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

	private void close() { // DB 연동하는 4단계는 매번 똑같으므로 매소드로 만들어둠
		try {
			if (rs != null)
				rs.close();
			if (psmt != null)
				psmt.close();
			if (conn != null)
				conn.close();

		} catch (SQLException e) { // 모든 데이터베이스에 관련된 오류를 전부 다 잡아줌 (SQL)
			e.printStackTrace();
		}
	}

	public int insert(MessageDTO dto) {

		int cnt = 0;
		try {
			// 1, 2 단계
			getConnection();

			// 3단계. SQL 작성하고 실행할 수 있는 PreparedStatement 객체를 --> Connection 객체로부터 받아온다.
			String sql = "insert into web_message values(num.nextval,?,?,?,sysdate)"; // 값이 3개
			// 아직 무슨 값인지 모르니까 ? 로 적음

			psmt = conn.prepareStatement(sql); // SQL 문장을 자바에서 설정해주는 객체, SQL문이 틀릴 경우를 대비하여 예외처리해줌
			psmt.setString(1, dto.getSend_name());
			psmt.setString(2, dto.getReceive_email());
			psmt.setString(3, dto.getContent());
			cnt = psmt.executeUpdate(); // SQL 문장을 실행하겠다. (cnt>0 이면 정상실행됨)
			// 실행문장의 개수를 숫자로 알려줌

//			// 회원가입 잘되는지 안 되는지 확인하기 위해 조건문 작성
//			// --> 굳이 작성하지 않아도 됨 (없어도 되지만 확인하기 위해 작성한거라서 나중에는 없어도 됨)
//			if (cnt > 0) {
//				System.out.println("성공");
//			} else {
//				System.out.println("실패");
//			}

		} catch (SQLException e) { // 모든 데이터베이스에 관련된 오류를 전부 다 잡아줌 (SQL)
			e.printStackTrace();

		} finally { // 4단계. 연결 종료 (역순으로) // --> null 값이 아닐 때만 닫아주겠다.
			close();

		}

		return cnt;
	}

	public ArrayList<MessageDTO> select(String email) {

		ArrayList<MessageDTO> list = new ArrayList<MessageDTO>();

		try {

			getConnection();

			String sql = "Select * from web_message where receive_email = ?";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, email);
			rs = psmt.executeQuery();

			while (rs.next()) {

				int num = rs.getInt(1);
				String send_name = rs.getString(2);
				String receive_email = rs.getString(3);
				String content = rs.getString(4);
				String day = rs.getString(5);

				MessageDTO dto = new MessageDTO(num, send_name, receive_email, content, day);
				list.add(dto);
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();

		}

		return list;
	}

	public void deleteAll(String email) {

		try {
			getConnection();

			String sql = "delete web_message where receive_email=?";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, email);
			psmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();

		}
	}

	public void delete(int num) {

		try {
			getConnection();

			String sql = "delete web_message where num=?";
			psmt = conn.prepareStatement(sql);
			psmt.setInt(1, num);
			psmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();

		}
	}
}

 

com.model.MessageDTO

package com.model;

public class MessageDTO {
	private int num;
	private String send_name;
	private String receive_email;
	private String content;
	private String day;

	
	public MessageDTO(int num, String send_name, String receive_email, String content, String day) {
		this.num = num;
		this.send_name = send_name;
		this.receive_email = receive_email;
		this.content = content;
		this.day = day;
	}

	public MessageDTO(String send_name, String receive_email, String content) {
		this.send_name = send_name;
		this.receive_email = receive_email;
		this.content = content;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getSend_name() {
		return send_name;
	}

	public void setSend_name(String send_name) {
		this.send_name = send_name;
	}

	public String getReceive_email() {
		return receive_email;
	}

	public void setReceive_email(String receive_email) {
		this.receive_email = receive_email;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getDay() {
		return day;
	}

	public void setDay(String day) {
		this.day = day;
	}

}

 

front.FrontController

package front;

import java.io.IOException;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.controller.DeleteAllMessageCon;
import com.controller.DeleteMessageCon;
import com.controller.InsertMessageCon;
import com.controller.JoinCon;
import com.controller.LoginCon;
import com.controller.LogoutCon;
import com.controller.UpdateCon;
import com.model.MemberDAO;
import com.model.MemberDTO;
import com.model.MessageDAO;
import com.model.MessageDTO;

@WebServlet("*.do") // .do가 아니고 .abcdef 등의 지정을 해도 무방하다.
public class FrontController extends HttpServlet {

	private HashMap<String, ICommand> map = new HashMap<String, ICommand>();

	private void putData() {
		map.put("JoinService.do", new JoinCon());
		map.put("LoginService.do", new LoginCon());
		map.put("LogoutService.do", new LogoutCon());
		map.put("UpdateService.do", new UpdateCon());
		map.put("InsertMessageservice.do", new InsertMessageCon());
		map.put("DeleteAllMessageService.do", new DeleteAllMessageCon());
		map.put("DeleteMesaageService.do", new DeleteMessageCon());
	}

	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// Front-Controller
		// Command Pattern
		// servlet 1개 자체가 무겁기 때문에 모든 servlet을 1개에서 작성
		// 기능이 servlet 1개가 모두 실행하기 때문에 클래스로 분할

		String requestURI = request.getRequestURI();
		String contextPath = request.getContextPath();
		String resultURL = requestURI.substring(contextPath.length() + 1); // *.do 앞의 프로젝트명 삭제

		request.setCharacterEncoding("EUC-KR"); // post 방식의 한글인코딩
		String moveURL = null;
		putData();
		ICommand iCommand = map.get(resultURL);

		moveURL = iCommand.execute(request, response);
		// 페이지를 전환하는 코드 ( 리다이렉트 , 포어드 방식 )
		// 데이터베이스 ( DB ) 랑 관련있는 페이지의 전환에서는 리다이렉트만 사용해라
		// --> 포워드 방식을 사용할 경우, URL 은 변경되지 않고 페이지만 변경되는 거여서
		// --> 내가 main 페이지로 가고 싶다고 계속 새로고침을 하게되면 내가 새로고침을 한 만큼
		// DB 테이블에 정보가 계속 들어가서 중복이 일어난다.
		response.sendRedirect(moveURL);
	}
}

 

front.ICommand

package front;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface ICommand {
	public String execute(HttpServletRequest request, HttpServletResponse response);
}

 

main.jsp

<%@page import="com.model.MessageDTO"%>
<%@page import="com.model.MessageDAO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.model.MemberDTO"%>

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Forty by HTML5 UP</title>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]-->
<link rel="stylesheet" href="assets/css/main.css" />
<!--[if lte IE 9]><link rel="stylesheet" href="assets/css/ie9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]-->
</head>
<body>

	<%
		MemberDTO info = (MemberDTO) session.getAttribute("info");
	%>

	<!-- Wrapper -->
	<div id="wrapper">

		<!-- Header -->
		<header id="header" class="alt"> <a href="index.html"
			class="logo"><strong>Forty</strong> <span>by HTML5 UP</span></a> <nav>
		<%
			if (info == null) {
		%> <a href="#menu">로그인</a> <%
 	} else {
 %> <a href="update.jsp">회원정보수정</a> <a href="LogoutService">로그아웃</a> <%
 	}
 %> <!-- 로그인 후 Logout.jsp로 이동할 수 있는'로그아웃'링크와 '개인정보수정'링크를 출력하시오. --> </nav> </header>

		<!-- Menu -->
		<nav id="menu">
		<ul class="links">
			<li><h5>로그인</h5></li>
			<form action="LoginService.do" method="post">
				<li><input name="email" type="text" placeholder="Email을 입력하세요"></li>
				<li><input name="pw" type="password" placeholder="PW를 입력하세요"></li>
				<li><input type="submit" value="LogIn" class="button fit"></li>
			</form>
		</ul>
		<ul class="actions vertical">
			<li><h5>회원가입</h5></li>
			<form action="JoinService.do" method="post">
				<li><input name="email" type="text" placeholder="Email을 입력하세요"></li>
				<li><input name="pw" type="password" placeholder="PW를 입력하세요"></li>
				<li><input name="tel" type="text" placeholder="전화번호를 입력하세요"></li>
				<li><input name="address" type="text" placeholder="집주소를 입력하세요"></li>
				<li><input type="submit" value="JoinUs" class="button fit"></li>
			</form>
		</ul>
		</nav>
		<!-- Banner -->
		<section id="banner" class="major">
		<div class="inner">
			<header class="major"> <!--로그인을 안 한 상태--> <%
 	if (info == null) {
 %>
			<h1>로그인을 먼저 해주세요.</h1>
			<%
				} else {
			%> <!--로그인을 한 상태-->
			<h1><%=info.getEmail()%>님 환영합니다.
			</h1>
			<%
				}
			%> <!-- 로그인 후 로그인 한 사용자의 세션아이디로 바꾸시오.
										 ex)smart님 환영합니다 --> </header>
			<div class="content">
				<p>
					아래는 지금까지 배운 웹 기술들입니다.<br>
				</p>
				<ul class="actions">
					<li><a href="#one" class="button next scrolly">확인하기</a></li>
				</ul>
			</div>
		</div>
		</section>

		<!-- Main -->
		<div id="main">

			<!-- One -->
			<section id="one" class="tiles"> <article> <span
				class="image"> <img src="images/pic01.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">HTML</a>
			</h3>
			<p>홈페이지를 만드는 기초 언어</p>
			</header> </article> <article> <span class="image"> <img
				src="images/pic02.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">CSS</a>
			</h3>
			<p>HTML을 디자인해주는 언어</p>
			</header> </article> <article> <span class="image"> <img
				src="images/pic03.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">Servlet/JSP</a>
			</h3>
			<p>Java를 기본으로 한 웹 프로그래밍 언어/스크립트 언어</p>
			</header> </article> <article> <span class="image"> <img
				src="images/pic04.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">JavaScript</a>
			</h3>
			<p>HTML에 기본적인 로직을 정의할 수 있는 언어</p>
			</header> </article> <article> <span class="image"> <img
				src="images/pic05.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">MVC</a>
			</h3>
			<p>웹 프로젝트 중 가장 많이 사용하는 디자인패턴</p>
			</header> </article> <article> <span class="image"> <img
				src="images/pic06.jpg" alt="" />
			</span> <header class="major">
			<h3>
				<a href="#" class="link">Web Project</a>
			</h3>
			<p>여러분의 최종프로젝트에 웹 기술을 활용하세요!</p>
			</header> </article> </section>
			<!-- Two -->
			<section id="two">
			<div class="inner"  id="message">
				<!--새로고침 위치기억하기 id="message"-->
				<!--DeleteMessageService 서블릿에서 response.sendRedirect("main.jsp#message") 작성 -->
				<header class="major">
				<h2>나에게 온 메세지 확인하기</h2>
				</header>
				<p></p>
				<ul class="actions">
					<%
						if (info == null) {
					%>
					<li>로그인을 하세요.</li>
					<%
						} else {

							MessageDAO dao = new MessageDAO();
							ArrayList<MessageDTO> list = dao.select(info.getEmail());
					%>
					<div>
						<table>
							<tr>
								<td>글 번호</td>
								<td>글쓴이</td>
								<td>내용</td>
								<td>작성 날짜</td>
								<td>선택 삭제</td>
							</tr>
							<%
								for (int i = 0; i < list.size(); i++) {
							%>
							<tr>
								<td><%=i+1%></td>
								<td><%=list.get(i).getSend_name()%></td>
								<td><%=list.get(i).getContent()%></td>
								<td><%=list.get(i).getDay()%></td>
								<!-- get 방식으로 href ? 뒤로 값 넘겨주기 -->
								<td><a href="DeleteMesaageService.do?num=<%=list.get(i).getNum()%>">삭제</a></td>
							</tr>
							<%
								}
							%>
						</table>
						<li><a href="DeleteAllMessageService.do" class="button next scrolly">전체삭제하기</a></li>
					</div>
					<%
						}
					%>
				</ul>
			</div>
			</section>

		</div>

		<!-- Contact -->
		<section id="contact">
		<div class="inner">
			<section>
			<form action="InsertMessageservice.do" method="post">
				<div class="field half first">
					<label for="name">Name</label> <input name="send_name" type="text"
						id="name" placeholder="보내는 사람 이름" />
				</div>
				<div class="field half">
					<label for="email">Email</label> <input name="receive_email"
						type="text" id="email" placeholder="보낼 사람 이메일" />
				</div>

				<div class="field">
					<label for="message">Message</label>
					<textarea name="content" id="message" rows="6"></textarea>
				</div>
				<ul class="actions">
					<li><input type="submit" value="Send Message" class="special" /></li>
					<li><input type="reset" value="Clear" /></li>
				</ul>
			</form>
			</section>

			<section class="split"> <section>
			<div class="contact-method">
				<span class="icon alt fa-envelope"></span>
				<h3>Email</h3>
				<%
					if (info == null) {
				%>
				<a href="#">로그인을 해주세요</a>
				<%
					} else {
				%>
				<a href="#"><%=info.getEmail()%></a>
				<!-- 로그인 한 사용자의 이메일을 출력하시오 -->
				<%
					}
				%>

			</div>
			</section> <section>
			<div class="contact-method">
				<span class="icon alt fa-phone"></span>
				<h3>Phone</h3>
				<%
					if (info == null) {
				%>
				<span>로그인을 해주세요</span>
				<%
					} else {
				%>
				<span><%=info.getTel()%></span>
				<!-- 로그인 한 사용자의 전화번호를 출력하시오 -->
				<%
					}
				%>
			</div>
			</section> <section>
			<div class="contact-method">
				<span class="icon alt fa-home"></span>
				<h3>Address</h3>
				<%
					if (info == null) {
				%>
				<span>로그인을 해주세요</span>
				<%
					} else {
				%>
				<span><%=info.getAddress()%></span>
				<!-- 로그인 한 사용자의 집주소를 출력하시오 -->
				<%
					}
				%>


			</div>
			</section> </section>
		</div>
		</section>

		<!-- Footer -->
		<footer id="footer">
		<div class="inner">
			<ul class="icons">
				<li><a href="#" class="icon alt fa-twitter"><span
						class="label">Twitter</span></a></li>
				<li><a href="#" class="icon alt fa-facebook"><span
						class="label">Facebook</span></a></li>
				<li><a href="#" class="icon alt fa-instagram"><span
						class="label">Instagram</span></a></li>
				<li><a href="#" class="icon alt fa-github"><span
						class="label">GitHub</span></a></li>
				<li><a href="#" class="icon alt fa-linkedin"><span
						class="label">LinkedIn</span></a></li>
			</ul>
			<ul class="copyright">
				<li>&copy; Untitled</li>
				<li>Design: <a href="https://html5up.net">HTML5 UP</a></li>
			</ul>
		</div>
		</footer>

	</div>

	<!-- Scripts -->
	<script src="assets/js/jquery.min.js"></script>
	<script src="assets/js/jquery.scrolly.min.js"></script>
	<script src="assets/js/jquery.scrollex.min.js"></script>
	<script src="assets/js/skel.min.js"></script>
	<script src="assets/js/util.js"></script>
	<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
	<script src="assets/js/main.js"></script>

</body>
</html>

 

sql.sql

1. 회원가입한 정보를 저장할 수 있는 'web_member'테이블을 만드시오.
   컬럼명 : email / pw / tel / address

drop table web_member

create table web_member(
	email varchar2(100),
	pw varchar2(100),
	tel varchar2(100),
	address varchar2(300)
)

insert into web_member values ('admin', '1234', '010-1234-5678', '광주광역시 남구 송하동')

select * from web_member


drop table web_message

// 문자 타입은 크기를 지정해주어야하고, 숫자 타입은 크기를 지정하지 않아도 됨
create table web_message(
	num number,
	send_name varchar2(200),
	receive_email varchar2(200),
	content varchar2(1000),
	day date
)

drop sequence num
create sequence num start with 1 increment by 1
insert into web_message values(num.nextval,'피카츄', 'ehdrud1129@naver.com', '피카피카피카츄우우우~~피카피카피카피카', sysdate)
insert into web_message values(num.nextval,'파이리', 'ehdrud1129@naver.com', '파이파이파이리이이이이~~파이파이', sysdate)

select * from web_message

 

update.jsp

<%@page import="com.model.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title>Forty by HTML5 UP</title>
		<meta charset="utf-8" />
		<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
		<!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]-->
		<link rel="stylesheet" href="assets/css/main.css" />
		<!--[if lte IE 9]><link rel="stylesheet" href="assets/css/ie9.css" /><![endif]-->
		<!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]-->
		
	</head>
	<style>
	
	</style>
	
	<%MemberDTO info = (MemberDTO)session.getAttribute("info");%>
	
	<body style="text-align: center;">

		<!-- Wrapper -->
			<div id="wrapper">
				<!-- Menu -->
					<nav id="Update">	
						<ul class="actions vertical">
							<li><h5>회원정보수정</h5></li>
								<form action="UpdateService.do" method="post">
									<li>접속한 Email : <%=info.getEmail() %></li>
									<li><input name="pw" type="password" placeholder="PW를 입력하세요" style="width: 500px; margin: 0 auto;"></li>
									<li><input name="tel" type="text" placeholder="전화번호를 입력하세요" style="width: 500px; margin: 0 auto;"></li>
									<li><input name="address" type="text" placeholder="집주소를 입력하세요" style="width: 500px; margin: 0 auto;"></li>
									<li><input type="submit" value="JoinUs" class="button fit" style="width: 500px; margin: 0 auto;"></li>
								</form>
						</ul>
					</nav>			
			</div>
		<!-- Scripts -->
			<script src="assets/js/jquery.min.js"></script>
			<script src="assets/js/jquery.scrolly.min.js"></script>
			<script src="assets/js/jquery.scrollex.min.js"></script>
			<script src="assets/js/skel.min.js"></script>
			<script src="assets/js/util.js"></script>
			<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
			<script src="assets/js/main.js"></script>
	</body>
</html>

'Programming > Servlet & JSP' 카테고리의 다른 글

JSP 기초  (0) 2020.02.26
Servlet 기초  (0) 2020.02.26
회원관리(MemberSystem)  (0) 2020.02.24
게시판(FileUpload)  (0) 2020.02.24
JSTL 연습하기  (0) 2020.02.24