ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day45 - JSP(jdbc 연결, JSP의 4가지 영역, EL Object)
    KIC/JSP 2021. 8. 19. 00:29
    반응형

     

    [Book 프로젝트]

     

    [Book.java]

    package book;
    
    public class Book {
    	private String writer;
    	private String title;
    	private String content;
    	
    
    	public Book(String writer, String title, String content) {
    		super();
    		this.writer = writer;
    		this.title = title;
    		this.content = content;
    	}
    	public String getWriter() {
    		return writer;
    	}
    	public void setWriter(String writer) {
    		this.writer = writer;
    	}
    	@Override
    	public String toString() {
    		return "book [writer=" + writer + ", title=" + title + ", content=" + content + "]";
    	}
    	public String getTitle() {
    		return title;
    	}
    	public void setTitle(String title) {
    		this.title = title;
    	}
    	public String getContent() {
    		return content;
    	}
    	public void setContent(String content) {
    		this.content = content;
    	}
    }

     

    [BookService.java]

    package book;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    
    import util.DBConnection;
    
    public class BookService {
    
    	public int bookInsert(HttpServletRequest request) {
    		Connection con = DBConnection.getConnection();
    		
    		PreparedStatement pstmt = null;
    		String sql = "insert into book (writer, title, content) values(?, ?, ?)";
    		
    		try{
    			pstmt = con.prepareStatement(sql);
    			pstmt.setString(1, request.getParameter("writer"));
    			pstmt.setString(2, request.getParameter("title"));
    			pstmt.setString(3, request.getParameter("content"));
    			return pstmt.executeUpdate();
    		}catch(SQLException e) {
    			e.printStackTrace();
    		}finally {
    			DBConnection.close(con, pstmt, null);
    		}
    		
    		return 0;
    	}
    	public List<Book> bookList() {
    		Connection con = DBConnection.getConnection();
    		 System.out.println("bookList");
    		PreparedStatement pstmt = null;
    		ResultSet rs = null;
    		String sql = "select * from book";
    		List<Book> li = new ArrayList<Book>();
    		
    		try{
    			pstmt = con.prepareStatement(sql);
    			rs=pstmt.executeQuery();
    			while(rs.next()) {
    				Book b = new Book(rs.getString("writer"),rs.getString("title"),rs.getString("content"));
    				 System.out.println(b);
    				li.add(b);
    			}
    		}catch(SQLException e) {
    			e.printStackTrace();
    		}finally {
    			DBConnection.close(con, pstmt, null);
    		}
    	
    	    System.out.println(li);
    		return li;
    	}
    	
    
    }

     

    [DBConnection.java]

    package util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class DBConnection {
    	public static Connection getConnection() {
    		Connection con = null;
    		try {
    			
    			Class.forName("oracle.jdbc.OracleDriver");
    			
    			
    			
    			String url="jdbc:oracle:thin:@localhost:1521:xe";
    			String userId = "kic";
    			String passwd = "passwd";
    			con = DriverManager.getConnection(url, userId, passwd);
    		}catch(Exception e) {
    			e.printStackTrace();
    		}
    		
    		return con;
    	}
    	
    	public static void close(Connection con, Statement stmt, ResultSet rs) {
    		
    			try {
    				if(rs != null)rs.close();
    				if(stmt !=null) stmt.close();
    				if(con !=null) {
    					con.commit();
    					con.close();
    				}
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    	}
    }

     

    [book.jsp]

    <%@page import="book.Book"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
    
    <%@page import="book.BookService"%>
    <%@page import="java.sql.ResultSetMetaData"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.PreparedStatement"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.DriverManager"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    
    <!-- 
    book.BookService
    1) 입력 받아서 저장
    2) 저장된 내용 리스트 보기
    
    3) util.DBConnection : database 연결을 위한 class
    4) DB 생성
     create table book(
    	writer varchar(20),
    	title varchar(100),
    	content varchar(3000));
    
     -->
     <% 
     request.setCharacterEncoding("UTF-8");
     List<Book> li = new ArrayList<Book>();
     if(request.getParameter("writer")!=null){
     	BookService bs = new BookService();
     	bs.bookInsert(request);
     	li = bs.bookList();
     }
     %>
    
     
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset = "UTF-8">
    <title>Insert title here</title>
    </head>
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    
    <body>
    <form  method="post">
     <table>
        <tr><td>방문자</td>
            <td><input type="text" name="writer"></td></tr>
        <tr><td>제목</td>
            <td><input type="text" name="title"></td></tr>
        <tr><td>내용</td>
            <td><textarea name="content" rows="5"></textarea></td></tr>
        <tr><td colspan="2" align="center">
        <input type="submit" value="방명록등록"></td></tr>    
     </table>
    </form>
    <table class = "w3-table-all">
    <tr><th>방문자 </th><th>제목</th><th>내용</th></tr>
    <%
    	for(Book b : li){
    		%>
    		<tr><td><%=b.getWriter() %></td>
    		<td><%=b.getTitle()%></td>
    		<td><%=b.getContent()%></td></tr>
    		<%
    	}
    %>
    </table>
    
    </body>
    </html>

     

     

     

     

     

    [JSP의 4가지 영역]

    <%-- /WebContent/application2.jsp
       jsp의 4가지의 영역
         1.page 영역      : 하나하나의 jsp 페이지. pageContext 객체. 
         2.request 영역: 한번의 요청 후 응답까지 호출되는 모든 jsp 페이지.
                        request 객체를 공유함.
         3.session 영역 : 같은 브라우저에서 호출되는 모든  jsp 페이지.
                        session 객체를 공유함. 
         4.application 영역 : 웹어플리케이션에 속한 모든 jsp 페이지.
                        application 객체를 공유함.
                        웹어플리케이션 :                           
    
         영역담당 객체들은 속성 관련 메서드 멤버로 가진다
                속성등록 : setAttribute(키(key), 객체(value))
                   setAttribute(String,Object)
                속성조회  : getAttribute(String)
                속성제거  : removeAttribute(String)                   
    --%>

    - JSP에는 저장할 수 있는 영역이 4가지가 있다.

    - 4가지 영역은  특정한 값을 키와 객체(value)로 가지고 있다가 클라이언트에 효율적으로 보내는 방법들이다.

     

    1.page 영역      : 하나하나의 jsp 페이지. pageContext 객체. JSP 한 페이지에 유효한 영역

     

    2.request 영역: 한번의 요청 후 응답까지 호출되는 모든 jsp 페이지. request 객체를 공유함.

    request 영역은 클라이언트에서 url을 만들어 url과 함께 데이터를 보낼 때 처리가 된다.

    request 영역은 서버에서 url이 발동해 실행과 함께 사이클이 돌면 refresh가 된다.

     

     

    3.session 영역 : 같은 브라우저에서 호출되는 모든  jsp 페이지. session 객체를 공유함. 

    setAttribute, getAttribute가 여기에 해당

    로그인 후 로그아웃 될때 까지 세션이 유지가 된다.


    4.application 영역 : 웹어플리케이션에 속한 모든 jsp 페이지. application 객체를 공유함

    application 영역은 어떤 유저든 상관 없이 데이터를 확인 가능, application 영역은 계속 유지가 된다.

     

     

     

     

    [EL Object]

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%
    	request.setAttribute("name", "최범균");
    
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset = "UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    요청 URI: ${pageContext.request.requestURI}<br>
    request의 name 속성: ${requestScope.name}<br>
    code 파라미터: ${param.code}
    
    </body>
    </html>

    300x250

    댓글

Designed by Tistory.