ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tue/Feb/04 [Java] day24. - JSP
    Study/2020 국비교육_Java 2020. 2. 4. 09:51

    Tue/Feb/04

    [Java] day24.

     - JSP

     

    어제 퀴즈 리뷰

     

    Session 이어서

     

    Session 생성 방지; Session 객체만 사용 방지

    <%@ page session = "false" %>

     

    Session 최대활성화 기간 확인과 조정

    int timeout = session.getMaxInactiveInterval();
    
    session.setMaxInactiveInterval(300);
    
    session.setMaxInactiveInterval(-1);
    // 최대 비활성 기간을 무한대로

     

    예제1 ) Session 과 PrintWriter 활용한 회원가입 페이지

    PersonalInfo.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>회원 가입</title>
    </head>
    <body>
    
    	<h1>회원 가입 입력</h1>
    	<form action=Agreement.jsp method=get>
    		<table>
    			<tr>
    				<td>ID :</td>
    				<td><input type="text" name="id" required pattern="\w+" /> <br />
    			</tr>
    
    			<tr>
    				<td>PW :</td>
    				<td><input type="password" name="pw" required pattern="\w+" /></td>
    			</tr>
    			<tr>
    				<td>이름 :</td>
    				<td><input type="text" name="name" required pattern="[ㄱ-힣]+" /></td>
    			</tr>
    
    			<tr>
    				<td>다음</td>
    				<td><input type="submit" value="NEXT" /></td>
    			</tr>
    		</table>
    	</form>
    
    </body>
    </html>

    Agreement.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    
    <%
    	String id = request.getParameter("id");
    	String pw = request.getParameter("pw");
    	String name = request.getParameter("name");
    
    	session.setAttribute("id", id);
    	session.setAttribute("pw", pw);
    	session.setAttribute("name", name);
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>약관 확인</title>
    </head>
    <body>
    	<h2>회원 약관을 확인합니다</h2>
    
    
    	<table border=1>
    		<tr>
    			<td>1. 회원 정보는 웹 사이트의 운영을 위해서만 사용됩니다.</td>
    		</tr>
    
    		<tr>
    			<td>2. 웹 사이트의 정상 운영을 방해하는 회원은 탈퇴 처리합니다.</td>
    		</tr>
    	</table>
    	<p>
    	<form action=Subscribe.jsp method=get>
    		위 약관에 동의하십니까? &nbsp; <input type="radio" name=agree value=yes />
    		&nbsp; 네 &nbsp; <input type="radio" name=agree value=no /> &nbsp; 아니오
    		&nbsp; <input type="submit" value=NEXT />
    	</form>
    
    </body>
    </html>

    Subscribe.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"	import = "java.io.*" %>
    
    <%
    	String agree = request.getParameter("agree");
    	String result = null;
    	
    	if(agree.equals("yes")) {
    		String id = (String) session.getAttribute("id");
    		String pw = (String) session.getAttribute("pw");
    		String name = (String) session.getAttribute("name");
    		
    		PrintWriter writer = null;
    		
    		try {
    			String filePath = application.getRealPath("/WEB-INF/"+id+".txt");
    			writer = new PrintWriter(filePath);
    			writer.println("ID : "+id);
    			writer.println("PW : " + pw);
    			writer.println("이름 : " + name);
    			result = "success";
    		}
    		catch (IOException ioe) {
    			result = "fail";	
    		}
    		finally {
    			try {
    				writer.close();
    			}
    			catch (Exception e) {
    				
    			}
    		}
    	}
    	else result = "fail";
    	session.invalidate();
    
    	response.sendRedirect("Result.jsp?result="+result);
    %>

    Result.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8" import="java.io.*"%>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>RESULT</title>
    </head>
    <body>
    	<h1>회원 가입 결과</h1>
    	<%
    		if ( request.getParameter("result").equals("success") ) 	
    					out.print("회원가입을 축하드립니다");
    		else 		out.print("회원가입 실패!");
    	%>
    </body>
    </html>

     

    예제2) 위의 예제에서 일부 페이지 JSP 대신에 Servlet 사용

    Servlet에서 JSP 내장객체 사용

    ServletContext application = request.getServletContext();
    application.getRealPath("***");
    // ServletContext 객체 생성으로 application과 동일 효과
    
    PrintWriter out = response.getWriter();
    // PrintWriter 객체 생성으로 out 효과
    
    HttpSession session = request.getSession();
    // HttpSession 객체 생성으로 session 가져오기
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response){  }
    protected void doPost(HttpServletRequest request, HttpServletResponse response){  }
    // JSP의 request, response 가져오기

    InfoSavaServlet.java

    import java.io.IOException;
    
    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;
    
    @WebServlet("/infosave")
    public class InfoSaveServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	public InfoSaveServlet() {
    		super();
    	}
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		String id = request.getParameter("id");
    		String pw = request.getParameter("pw");
    		String name = request.getParameter("name");
    
    		HttpSession ss = request.getSession();
    		ss.setAttribute("id", id);
    		ss.setAttribute("pw", pw);
    		ss.setAttribute("name", name);
    
    		response.sendRedirect("Agreement.jsp");
    
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }

    SubscribeServlet.java

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import javax.servlet.ServletContext;
    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;
    
    @WebServlet("/subscribe")
    public class SubscribeServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	public SubscribeServlet() {
    		super();
    	}
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		String agree = request.getParameter("agree");
    
    		if (agree.equals("yes")) {
    
    			HttpSession ss = request.getSession();
    			String id = (String) ss.getAttribute("id");
    			String pw = (String) ss.getAttribute("pw");
    			String name = (String) ss.getAttribute("name");
    
    			ServletContext application = request.getServletContext();
    			String file_path = application.getRealPath("/WEB-INF/");
    			// String file_path =
    			// "C:/java_webserver/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/lecture0204_join_servlet/WEB-INF/lib/"+id+".txt";
    
    			FileWriter fw;
    			try {
    				fw = new FileWriter(file_path);
    				BufferedWriter bw = new BufferedWriter(fw);
    
    				bw.write("ID : " + id);
    				bw.newLine();
    
    				bw.write("PW : " + pw);
    				bw.newLine();
    
    				bw.write("NAME : " + name);
    				bw.newLine();
    
    				bw.close();
    
    				response.sendRedirect("Result.jsp?result=success");
    			} catch (IOException ioe) {
    				response.sendRedirect("Result.jsp?result=fail");
    			} finally {
    				ss.invalidate();
    			}
    		} else
    			response.sendRedirect("Result.jsp?result=fail");
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }

     


    JSP ] Log File 만들기

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8" import="java.io.*, java.util.*, java.net.*"%>
    
    <%!
    	private PrintWriter logFile;
    
    	public void jspInit() {
    		String filename = "c:/filetest/datetime_log.txt";
    		try {
    			FileWriter fw = new FileWriter(filename, true);
    			logFile = new PrintWriter(fw);
    
    		} catch (IOException ioe) {
    			System.out.printf("%TT - %s 파일을 열 수 없습니다", new GregorianCalendar(), filename);
    		}
    	}
    	
    	private String getIP(){
    		String ip = null;
    		try {
    			ip = InetAddress.getLocalHost().getHostAddress();	
    		}
    		catch (UnknownHostException e) {
    			System.out.println("ERR_getIP"+e.getMessage());
    		}
    		return ip;
    	}
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    	<%
    		GregorianCalendar now = new GregorianCalendar();
    		String date = String.format("현재날짜 : %TY년 %Tm월 %Te일", now, now, now);
    		String time = String.format("현재날짜 : %TI시 %TM분 %TS초", now, now, now);
    		
            String ip = String.format("IP address : %s", getIP());
    
    		out.println(date + "<br />");
    		out.println(time + "<br />");
    		out.println(ip + "<br />");
    
    		if (logFile != null) {
    			logFile.printf("%TF %TT에 호출되었습니다 %n", now, now);
    			logFile.printf("IP address : %s%n", ip);
    		}
    	%>
    
    </body>
    </html>
    
    <%!
    	public void jspDestroy() {
    		if (logFile != null) {
    			logFile.close();
    		}
    	}
    %>

     

    Servlet ] Fibonacci 수열 

    fibonacci.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h2>Fibonacci 만들기</h2>
    	<form action="fibo">
    		<input type="text" name="NUM" required />
    		<input type="submit"	value="submit" />
    	</form>
    </body>
    </html>

    FibonacciServlet.java

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.math.BigInteger;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/fibo")
    public class FibonacciServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	public FibonacciServlet() {
    		super();
    	}
    
    	private BigInteger arr[];
    	// Biginteger 도 내부가 String 형태 > 어떤 숫자가 와도 다 받음, 단 String 형태이므로 문자열로 받음
    
    	public void init(ServletConfig config) throws ServletException {
    		arr = new BigInteger[100];
    		// arr[] 배열 선언
    		arr[0] = new BigInteger("1");
    		arr[1] = new BigInteger("2");
    		// BigInteger 객체 생성
    
    		for (int cnt = 2; cnt < arr.length; cnt++) {
    			arr[cnt] = arr[cnt - 2].add(arr[cnt - 1]);
    		}
    
    	} // init ()
    
    	public void destroy() {
    
    	}
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		String str = request.getParameter("NUM");
    		int num = Integer.parseInt(str);
    
    		if (num > 100) {
    			num = 100;
    		}
    
    		response.setContentType("text/html; charset = UTF-8");
    		PrintWriter out = response.getWriter();
    		out.println("<HTML>");
    		out.println("<HEAD>");
    		out.println("<META charset = 'UTF-8'>");
    		out.println("<TITLE>피보나치 수열</TITLE>");
    		out.println("</HEAD>");
    		out.println("<BODY>");
    
    		for (int cnt = 0; cnt < num; cnt++) {
    			out.println((cnt+1) + " : "+arr[cnt] + "<br />");
    		}
    
    		out.println("</BODY>");
    		out.println("</HTML>");
    
    	}	// doGet()
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }

     

    실습)

    process 입력 / 삭제 웹화면 구현 (SQL - JSP - Servlet)

    [my solution]

    주요 고비

    검색 창을 어떻게 해야될까..?

    https://github.com/ezerwi/lecture0204_search/tree/master/WebContent

    불러오는 중입니다...

     

    mySQL

    - database process

     - table proc_table;

    create table proc_table (idx int not null auto_increment primary key, name varchar(10) not null, type varchar(20) not null, cpu int, memory int, incoming float(2), outgoing float(2), connection1 varchar(20), connection2 varchar(20));

     

    Java Class

    DB

     - conDB();

     

    Servlets

     - select_all()

     - select_one()

     - insert_one()

     - delete_one()

     - search()

     

    JSP

     - list.jsp ; select_all()

     - insert.jsp ; insert_one(); search()

     - delete.jsp ; String[] idx = getParameterValues("idx"), for(String i : idx) delete_one(idx[i]);

    댓글

Designed by Tistory.