JSP
jsp파일은 내부적으로 서블릿으로 변환 된다는 점을 잊지말자.
톰캣이 자동으로 해준다.
리다이렉트 포워드의 차이
포워드 - 새로운 페이지는 이전 페이지에서 처리하던 것과 같은 요청을 처리하게 하고 응답하여 브라우저는 하나 이상의 페이지가 연관 된 것을 알 수 없다.
리다렉트 - 첫번째 페이지는 브라우저에게 새로운 페이지로 다시 요청해야 한다는 내용의 응답을 보낸다. 브라우저는 이 응답을 받으면 즉시 새로운 페이지로 다시 요청을 보낸다.
실습
다이나믹 웹 프로젝트 생성
-서버우클릭 add and remove 프로젝트 추가
프로젝트 우클릭 후 - 프로퍼티스 -JAVA BUILD PATH - add library 후 ojdbc 추가
프로젝트 우클릭 후 - 프로퍼티스 -deployment assembly - add -jdbc 추가 후 apply
JSTL
jsp standard tag library
EmailListDao.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| package com.bigdata2017.emaillist.dao;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List;
import com.bigdata2017.emaillist.vo.EmailListVo;
public class EmailListDao { public int insert( EmailListVo vo) { int count = 0;
Connection conn= null; PreparedStatement pstmt = null;
try { conn = getConnection(); String sql = "INSERT " +"INTO EMAILLIST " + "VALUES (SEQ_EMAILLIST.NEXTVAL,?,?,?)";
pstmt = conn.prepareStatement(sql); pstmt.setString(1, vo.getFirstName()); pstmt.setString(2, vo.getLastName()); pstmt.setString(3, vo.getEmail());
count = pstmt.executeUpdate(); } catch (SQLException e) { System.out.println( "error" + e ); } finally { try {
if( pstmt != null ) { pstmt.close(); } if( conn != null ) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return count; }
public List<EmailListVo> getList(){ List<EmailListVo> list = new ArrayList<EmailListVo>();
Connection conn = null ; Statement stmt = null; ResultSet rs = null; try { conn = getConnection();
stmt = conn.createStatement();
String sql ="SELECT NO,FIRST_NAME,LAST_NAME,EMAIL\r\n" + "FROM EMAILLIST ORDER BY NO DESC"; rs = stmt.executeQuery(sql);
System.out.println("connection 성공");
while( rs.next() ) { Long no = rs.getLong( 1 ); String firstName = rs.getString(2); String lastName = rs.getString(3); String email = rs.getString(4);
EmailListVo vo = new EmailListVo(); vo.setNo(no); vo.setFirstName(firstName); vo.setLastName(lastName); vo.setEmail(email); list.add(vo); }
} catch (SQLException e) { System.out.println( "error" + e ); } finally { try { if( rs != null ) { rs.close(); } if( stmt != null ) { stmt.close(); } if( conn != null ) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return list; } private Connection getConnection() throws SQLException {
Connection conn = null ;
try { Class.forName( "oracle.jdbc.driver.OracleDriver" );
String url = "jdbc:oracle:thin:@localhost:1521:xe"; conn = DriverManager.getConnection(url, "webdb", "webdb");
} catch (ClassNotFoundException e) { e.printStackTrace(); }
return conn; } }
|
form.jsp1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>메일 리스트 가입</h1> <p> 메일 리스트에 가입하려면,<br> 아래 항목을 기입하고 등록 버튼을 클릭하세요. </p> <form method="post" action="<%=request.getContextPath() %>/insert.jsp" > First name: <input type="text" name="fn" value="" /><br> Last name: <input type="text" name="ln" value="" /><br> Email address: <input type="text" name="email" value=""/><br> <input type="submit" value="submit"> </form> <br> <p> <a href = "<%=request.getContextPath()%>">리스트 바로가기</a> </p> </body> </html>
|
index.jsp1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| <%@page import="com.bigdata2017.emaillist.vo.EmailListVo"%> <%@page import="java.util.List"%> <%@page import="com.bigdata2017.emaillist.dao.EmailListDao"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%
EmailListDao dao = new EmailListDao(); List<EmailListVo> list = dao.getList(); %>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>메일 리스트에 가입되었습니다.</h1> <p>입력한 정보 내역입니다.</p> <!-- 메일정보 리스트 --> <%-- list에서 하나씩 빼서 테이블를 채운다--%>
<% for(EmailListVo vo : list ){ %>
<table border="1" cellpadding="5" cellspacing="2"> <tr> <td align=right>First name: </td> <td><%=vo.getFirstName() %></td> </tr> <tr> <td align=right width="110">Last name: </td> <td width="110"><%=vo.getLastName()%></td> </tr> <tr> <td align=right>Email address: </td> <td><%=vo.getEmail()%></td> </tr> </table> <br> <%} %> <p> <a href="<%=request.getContextPath() %>/form.jsp" >추가메일 등록</a> </p> <br> </body> </html>
|
insert.jsp1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <%@page import="com.bigdata2017.emaillist.dao.EmailListDao"%> <%@page import="com.bigdata2017.emaillist.vo.EmailListVo"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding( "utf-8"); String firstName = request.getParameter( "fn" ); String lastName = request.getParameter( "ln" ); String email = request.getParameter("email");
EmailListVo vo = new EmailListVo(); vo.setFirstName(firstName); vo.setLastName(lastName); vo.setEmail(email);
new EmailListDao().insert(vo);
response.sendRedirect( request.getContextPath() ); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>성공적으로 등록되었습니다.</h1> <a href="index.jsp">리스트 돌아가기</a> </body> </html>
|