-
Tue/Feb/04 [Java] day24. - JSPStudy/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> 위 약관에 동의하십니까? <input type="radio" name=agree value=yes /> 네 <input type="radio" name=agree value=no /> 아니오 <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]);
'Study > 2020 국비교육_Java' 카테고리의 다른 글
Mon/Feb/10[Java-JSP] day28.JSP action tag_forward/include (0) 2020.02.10 Wed/Feb/05 [Java] day25. DAO Model 활용 (0) 2020.02.05 Mon/Feb/03 [Java] day23. 페이지 간 데이터 이동 (0) 2020.02.03 Fri/Jan/31 [Java] day22. Servlet basic (0) 2020.01.31 Thu/Jan/30[Java] day21. SQL-HTML 연습 (게시판 답글 만들기) (0) 2020.01.30