"2018/10/20"에 해당되는 글 - 3건
Post
반응형
18.10.20_TIL
오늘 한 일
- JSP 태그, 요청, 응답 처리, 지시자 공부
- 알고리즘 문제 풀이(Max, Min value 찾기, 배열 중 가장 큰 값 찾기)
오늘 느낀 점
- 알고리즘 문제 풀이를 git에 올렸는데 markdown 문법을 썼지만 적용이 안되고 있다. 찾아볼 것
- JSP 정리하면서 블로그에 글 올릴 때 너무 팔아프다.. 얼른 git 블로그 생성하는 법 찾자.
- 알고리즘 문제풀이 하루에 1~2문제씩 하자.
내일 할 일 (계획)
- git + hexo 찾아보자
- JSP 공부하기
- 알고리즘 문제 풀이
반응형
'이전게시판 > TIL' 카테고리의 다른 글
2018.12.10_TIL (0) | 2018.12.10 |
---|---|
2018.12.08_TIL (0) | 2018.12.08 |
2018.12.07_TIL (0) | 2018.12.08 |
18.10.21_TIL (0) | 2018.10.21 |
18.10.19_TIL (0) | 2018.10.19 |
18.10.18_TIL (0) | 2018.10.18 |
18.10.17_TIL (0) | 2018.10.17 |
18.10.16_TIL (0) | 2018.10.16 |
Post
반응형
JSP 태그, request, response, 지시자, 액션태그
JSP 태그
- JSP는 html코드에 java를 사용하여 다이나믹 웹을 만들 수 있다.
- html에서 java를 사용하기 위해 jsp 태그를 사용한다.
- jsp 태그
- 지시자 : <%@ @> 페이지 속성
- 주석 : <%-- --%>
- 선언 : <%! %> 변수, 메소드 선언
- 표현식 : <%= %> : 결과값 출력
- 스크립트릿 : <% %> java 코드
- 액션태크 : <jsp:action> </jsp:action> : 자바빈 연결
JSP 동작 원리
- client가 web에 jsp 요청 시 jsp 컨테이너가 jsp파일을 servlet파일(.java)로 변환
- 그리고 servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고 html 파일로 응답함.
- jsp가 요청을 받을 시 servlet, class 파일로 변환되고 메모리에 올려지고, 요청 응답을 한다.
- 다시 요청을 받을 시 메모리에 이미 올려져있으므로, 메모리에 올려진 데이터를 재활용해서 응답 한다.
JSP 내부 객체
- 개발자가 객체를 생성하지 않고 바로 사용할 수 있는 객체.
- JSP컨테이너에 의해 Servlet으로 변화될 때 자동으로 객체가 생성 됨.
- 내부객체 종류
- 입출력 객체 : request, response, out
- 서블릿 객체 : page, config
- 세션 객체 : session
- 예외 객체 : exception
JSP 스크립트릿, 선언, 표현식
- <% java 코드 기술 %>
- jsp페이지에서 java 언어를 사용하기 위한 요소
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <% int i = 0; for(i = 0; i < 10; ++i) { out.println(i+":"+"HelloWorld"+"<br/>"); } %> </body> </html> | cs |
- <% java 선언 기술 %>
- jsp페이지에서 변수 또는 메소드를 선언할 때 사용함.
- 변수는 '<%' 사용시 에러 안나는데 함수는 에러남.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <%! int a = 10; int b = 20; %> <%! public int sum(int a, int b) { return a+b; } %> <% out.println(a+"+"+b+"="+sum(a, b)+"<br/>"); %> </body> </html> | cs |
- <%= java 코드 기술 %>
- 변수의 값 또는 메소드 호출 결과값을 출력하기 위해 사용됨.
- 결과값은 String 타입이며 ;를 사용할 수 없다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <%! int a = 10; int b = 20; %> <%=a %></br> <%=b %></br> </body> </html> | cs |
JSP 지시자
- JSP 페이지의 전체적인 속성을 지정할 때 사용.
- <%@ 속성 %>
- page : JSP페이지 속성. import 할 때도 쓴다.
1 2 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> | cs |
- include : 다른 page의 내용을 삽입함.
- JspEx.jsp, IncludeEx.jsp 파일을 만들고 JspEx.jsp 소스에 include 지시자를 사용한다.
- 출력결과 JspEx.jsp 페이지 IncludeEx.jsp 페이지 라고 나오는 것을 확인할 수 있다.
JspEx.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <%@ page import="java.util.Arrays" %> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> JspEx.jsp 페이지 <%@ include file="IncludeEx.jsp" %> </body> </html> | cs |
IncludeEx.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> IncludeEx.jsp 페이지 </body> </html> | cs |
taglib 지시자
- 사용자가 만든 tag들을 태그 라이브러리라고 함.
- 유명한 라이브러리로 JSTL이 있음.
JSP 주석
- <%-- 주석 -->
- JSP 주석은 페이지 소스 보기로 보이지 않음.
- JSP 안에서 java 주석을 사용해도 됨.
request 객체
- web client가 server로 정보를 요청하는 것을 request라고 함.
- 요청정보는 request 객체가 관리함.
- 메소드
- getServerName() : 서버 이름 얻어옴
- getServerPort() : 서버 포트 번호 얻어옴
- getContextPath() : 웹어플리케이션의 컨텍스트 패스를 얻음.
- getMethod() : get, post 방식 구분
- getSession() : session 객체 얻음.
- getProtocol() : protocol 객체 얻음.
- getRequestURL() : 요청 URL을 얻음.
- getRequestURI() : 요청 URI를 얻음.
- getQueryString() : 쿼리스트링을 얻음.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <% out.println("ServerName:"+request.getServerName()+"<br/>"); out.println("ServerPort:"+request.getServerPort()+"<br/>"); out.println("ContextPath:"+request.getContextPath()+"<br/>"); out.println("Get or Post?:"+request.getMethod()+"<br/>"); out.println("URL:"+request.getRequestURL()+"<br/>"); out.println("URI:"+request.getRequestURI()+"<br/>"); out.println("QueryString:"+request.getQueryString()+"<br/>"); %> </body> </html> | cs |
Parameter메소드
- JSP 코드로 요청받은 정보의 값을 얻어온다.
- 메소드
- getParameterNames() : Parameter 이름 구함
- getParameter(String name) : Parameter 이름으로 값을 찾음.
- getParameterValues(String name) : 배열같이 여러개의 값을 가지고 있을 때 이름을 구함.
form.html
1 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 | <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <form action="JspEx.jsp" method="post"> 이름:<input type="text" name="name" size="10"><br/> 아이디:<input type="text" name="id" size="10"><br/> 비밀번호:<input type="password" name="pw" size="10"><br/> 취미:<input type="checkbox" name="hobby" value="read">독서 <input type="checkbox" nam="hobbpy" value="cook">요리 <input type="checkbox" nam="hobbpy" value="run">조깅 <input type="checkbox" nam="hobbpy" value="swim">수영 <input type="checkbox" nam="hobbpy" value="sleep">취침<br/> <input type="radio" name="major" value="kor">국어 <input type="radio" name="major" value="checked">영어 <input type="radio" name="major" value="mat">수학 <input type="radio" name="major" value="des">디자인<br/> <select name="protocol"> <option value="http">http</option> <option value="ftp" selected="selected">ftp</option> <option value="smtp">smtp</option> <option value="pop">pop</option> </select><br/> <input type="submit" value="전송"> <input type="reset" value="초기화"> </form> </body> </html> | cs |
JspEx.jsp
1 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 ="java.util.Arrays" %> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta http-equivb="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <%! String name, id, pw, major, protocol; String[] hobbys; %> <% request.setCharacterEncoding("EUC-KR"); name = request.getParameter("name"); id = request.getParameter("id"); pw = request.getParameter("pw"); major = request.getParameter("major"); protocol = request.getParameter("protocol"); hobbys = request.getParameterValues("hobby"); %> 이름:<%= name %><br/> id:<%=id %><br/> pw:<%=pw %><br/> major=<%=major %><br /> protocol=<%=protocol %><br /> </body> </html> | cs |
response 객체의 이해
- 요청의 응답 정보를 가지고 있는 객체.
- 메소드
- getCharacterEncoding() : 응답할 때 문자의 인코딩 형태를 구함.
- addCookie(Cokkie) : 쿠키 지정.
- SendRedirect(URL) : 지정한 URL로 이동.
- 아래 예제는 id가 admin일 경우 admin. 페이지로 이동하고 일반 유저일 경우 user 페이지로 이동하게 해놨다.
form.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <form action="JspEx.jsp"> id를 입력해주세요 <input type="text" name="id" size="10"> <input type="submit" value="전송"> </form> </body> </html> | cs |
JspEx.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta http-equivb="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <% String str = request.getParameter("id"); if(str.equals("admin")) { response.sendRedirect("admin.jsp?id="+str); } else { response.sendRedirect("user.jsp?id="+str); } %> </body> </html> | cs |
JSP 액션태그
- JSP 파일에서 어떤 동작을 하도록 지시하는 태그.
- forward, include, param 태그 등.. 이 있다.
forward 태그
- 다른 페이지로 이동할 때 사용
- 다른 페이지로 이동해도 이동한 페이지 url로 변경되지 않음.
- <jsp:forward page="sub.jsp"/>
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta http-equivb="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <h1>jspEx.jsp 페이지</h1> <jsp:forward page="user.jsp"/> </body> </html> | cs |
include 태그
- 현재 페이지에 다른 페이지를 삽입함.
- <jsp:include page="otherpagename.jsp"/>
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta http-equivb="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <h1>jspEx.jsp 페이지</h1> <jsp:include page="user.jsp"/> </body> </html> | cs |
param 태그
- 데이터를 전달하는 태그.
- 이름과 값으로 이루어져 있다.
- forward, include 태그와 같이 사용하면 페이지를 넘길 때 Param을 넘겨줄 수 있다.
- <jsp:param name="id" value="id" />
JspEx.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta http-equivb="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body> <jsp:forward page="user.jsp"> <jsp:param name="id" value="id" /> <jsp:param name="pw" value="!@#!@#" /> </jsp:forward> </body> </html> | cs |
user.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <%! String id, pw; %> <% id = request.getParameter("id"); pw = request.getParameter("pw"); %> 유저정보 id : <%=id %> pass : <%=pw%> </body> </html> | cs |
반응형
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
Servlet 값 초기화, 리스너 (0) | 2018.10.20 |
Servlet Get,Post 동작 (0) | 2018.10.19 |
Servlet 설정, 예제 (0) | 2018.10.18 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |
Post
반응형
Servlet 값 초기화, 리스너
ServletConfig
- 특정 Servlet이 생성될 때 초기에 필요한 데이터가 있음.
- WebContent/WEB-INI/web.xml에 기술하고 Servlet 파일에서는 Servlet.Config 클래스를 이용해서 접근.
- 아래 예제에서 InitParam 주소를 IP로 mapping 하고 있다.
- 또 Parameter id, pw에 값을 초기화할 수도 있다.
WebContent\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>InitParam</servlet-name>
<servlet-class>com.java.w.InitParam</servlet-class>
<init-param>
<param-name>id</param-name>
<param-value>id</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>12345</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitParam</servlet-name>
<url-pattern>/IP</url-pattern>
</servlet-mapping>
</web-app>
InitParam.java
package com.java.w; 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; /** * Servlet implementation class InitParam */ @WebServlet("/InitP") public class InitParam extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public InitParam() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); String id = getInitParameter("id"); String pw = getInitParameter("pw"); System.out.println("id ="+id); System.out.println("pw ="+pw); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
Servlet에서 Parameter를 직접 초기화 할 수도 있다.
- @WebServlet("/InitP") 되어있는 소스코드를 아래와 같이 수정한다.
- @WebServlet(urlPatterns= {"/InitP"}, initParams={@WebInitParam(name="id", value="id"), @WebInitParam(name="pw", value="1234")})
Servlet 데이터 공유
- 여러 Servlet에서 특정 데이터를 공유할 수 있다.
- web.cml파일에 context parameter 을 넣는다.
- 여러 Servlet이 사용하므로 코드 상단에 추가해야한다.
- ServletContext 메소드를 이용해서 데이터를 불러온다.
web.xml
<context-param>
<param-name>id</param-name>
<param-value>abc</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>123</param-value>
</context-param>
jsp
String id = getServletContext().getInitParameter("id");
String pw = getServletContext().getInitParameter("pw");
System.out.println("id="+id);
System.out.println("pw="+pw);
웹 어플리케이션 감시
웹어플리케이션을 감시하는 Listener를 만들수 있다.
ServletContextListener을 상속하면 감시 클래스가 된다.
웹 어플리케이션 시작, 종료 시 호출된다.(호출함수:contextInitialized, contextDestroyed)
WebContent\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
com.java.w.ServetlL
</listener-class>
</listener>
</web-app>
package com.java.w; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServetlL implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextDestroyed"); } @Override public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextInitialized"); } }
Servlet Listener
- web.xml 에서 Lisner를 선언하지 않고 Servelt 소스코드에서(class 이름 위에)@WebListener 라고 명시해도 Listener 클래스가 된다
반응형
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
JSP 태그, request, response, 지시자, 액션태그 (0) | 2018.10.20 |
Servlet Get,Post 동작 (0) | 2018.10.19 |
Servlet 설정, 예제 (0) | 2018.10.18 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |