
▶ 로그인한 회원의 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);
}
}

▶ 출력 잘 되는 것을 볼 수 있음!
[문제] 입력받은 메세지 내용을 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");
}