JSP [11] Message

totwo·2024년 7월 16일

JSP/Servlet/JSTL

목록 보기
11/15
post-thumbnail

Message

▶ 로그인한 회원의 Email, Phone, Address 페이지에 구현하기

▶ 로그인 하지 않았을 시 로그인 하라는 문구 출력하기

<!-- main.jsp -->
		<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.getPhone() %></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.getAddr() %></span> 
			<% } %>
			<!-- 로그인 한 사용자의 집주소를 출력하시오 -->
		</div>
	</section>

입력받은 NAME, EMAIL, MESSAGE DB에 저장하기
-> 회원정보 저장한 테이블과 별개로 다른 테이블 생성하기
-> DAO, DTO도 따로 만들기

	<form action="MessageInsertService" method="post">
		<div class="field half first">
				<label for="name">Name</label>
				<input type="text" name="name" id="name" placeholder="보내는 사람 이름" />
			</div>
			<div class="field half">
				<label for="email">Email</label>
				<input type="text" name="email" id="email" placeholder="보낼 사람 이메일"/>
			</div>

			<div class="field">
				<label for="message">Message</label>
				<textarea name="contents" 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>

[문제] 보내는 사람의 이름, 받는 사람 이메일, 작성내용을 콘솔창에 출력하세요

// servlet
@WebServlet("/MessageInsertService")
public class MessageInsertService extends HttpServlet { 
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("EUC-KR");
		String name = request.getParameter("name");
		String email = request.getParameter("email");
		String contents = request.getParameter("contents");
		
		System.out.println(name);
		System.out.println(email);
		System.out.println(contents);		 
	}
}


▶ 출력 잘 되는 것을 볼 수 있음!




messageInsert

[문제] 입력받은 메세지 내용을 MESSAGE 테이블에 넣어주세요
그리고 메인 페이지로 이동하시오

[ messageDTO ]
먼저 DATA를 묶어줄 messageDTO 생성하기

public class MessageDTO {
	
	private int num;
	private String name;
	private String email;
	private String contents;
	private String indate;
	  
	public MessageDTO(String name, String email, String contents) {
		this.name = name;
		this.email = email;
		this.contents = contents;
	}	  
 
	public MessageDTO(int num, String name, String email, String contents, String indate) { 
		this.num = num;
		this.name = name;
		this.email = email;
		this.contents = contents;
		this.indate = indate;
	}

	public int getNum() {
		return num;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getContents() {
		return contents;
	}

	public void setContents(String contents) {
		this.contents = contents;
	}

	public String getIndate() {
		return indate;
	}

	public void setIndate(String indate) {
		this.indate = indate;
	}  

[ messageDAO ]
① 자주 사용하는 필드와 메서드 생성해주기

public class MessageDAO {
	 
	private Connection conn;
	private PreparedStatement psmt;
	private ResultSet rs; 

	private void dbOpen() {		
		try { 
			Class.forName("oracle.jdbc.driver.OracleDriver");	 
			String db_id = "hr";
			String db_pw = "12345";
			String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
 
			conn = DriverManager.getConnection(db_url, db_id, db_pw);			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	
	private void dbClose() {
		try {
			if (rs != null)
				rs.close();
			if (psmt != null)
				psmt.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace(); 
		}
	}

messageInsert DAO 만들어주기

	public int messageInsert(MessageDTO dto) {
		
		int cnt = 0;
		
		dbOpen();
		
		try { 
			String sql = "INSERT INTO MESSAGE VALUES(MSGNUM.NEXTVAL, ?,?,?, SYSDATE)";
			psmt = conn.prepareStatement(sql);
			psmt.setString(1, dto.getName());
			psmt.setString(2, dto.getEmail());
			psmt.setString(3, dto.getContents());
			
			cnt = psmt.executeUpdate(); 
			if (cnt > 0) {
				System.out.println("입력 성공");
			} else {
				System.out.println("입력 실패");
			} 
		} catch (SQLException e) { 
			e.printStackTrace();
		} finally {
			dbClose();
		} 
		return cnt; 
	}

[ main에서 action으로 지정한 Servlet 작성하기 ]

// servlet
@WebServlet("/MessageInsertService")
public class MessageInsertService extends HttpServlet { 
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
		request.setCharacterEncoding("EUC-KR");
		String name = request.getParameter("name");
		String email = request.getParameter("email");
		String contents = request.getParameter("contents");
		 
		MessageDAO dao = new MessageDAO();
		MessageDTO dto = new MessageDTO(name, email, contents); 
		
		int cnt = dao.messageInsert(dto);
		if (cnt > 0) {
			System.out.println("메시지 발신 성공");
		} else {
			System.out.println("메시지 발신 실패");
		} 
		response.sendRedirect("main.jsp"); 
	}
profile
Hello, World!

0개의 댓글