context path 는 root를 나타냄
jsp -> 웹컨테이너 -> html
웹컨테이너인 tomcat이
java -> class -> obj 순으로 변환해줌
이렇기에 페이지에서 소스보기를 눌러도 jsp 가 보이지 않고 html만 보이게 됨.
저장되어있는 곳을 보면 class 파일이 생성된 것을 확인할 수 있음
jsp 는 WebContent 안에
servlet 은 java Resources 의 src 안
Servlet 맵핑
full path : localhost:8090/context_path/servlet/package_name.servlet_name
mapping path : localhost:8090/context_path/url_mapping
web.xml 또는 java annotation을 이용하여 한다.
java annotation : @WebServlet("/hs") 이렇게 public class HelloServlet extends HttpServlet { 위에다가 써놓음
web.xml 에
<servlet>
<servlet-name>servletEx</servlet-name> 이곳에는 임의의 이름
<servlet-class>com.servlet.ServletEx</servlet-class> 이곳에는 servlet 경로
</servlet>
<servlet-mapping>
<servlet-name ~~~ 위의 이름
<url-pattern>/임의의 url 정함</url-pattern>
</servlet-mapping> 이렇게 한다. 저곳의 url 를 치면 해당 servlet으로 맵핑이 된다.
ㅡㅡㅡㅡ
servlet 파일을 생성시에 자동으로 HttpServlet 을 extends 해준다.
요청에 관한 처리는 request 응답을 해주기 위한 작업을 할 때에는 response 객체를 이용해주면 된다.
ㅡㅡㅡㅡ
servlet 생명 주기
@PostConstruct --> init() --> service --> destroy() --> @PreDestroy
init 과 destroy를 따로 할 것이 없다면 doGet 과 dePost 만 해도된다.
PostConstruct 과 PreDestroy 의 경우 함수명을 임의로 설정해도 된다. annotation 만 @PostConstruct , @PreDestroy 로 잘 달아주기만 하면 된다.
데이터 서버의 로그인 아이디와 pw 를 어떤 변수에 담는다던가 공통적으로 이루어질 업무들을 init 단계에서 많이 하게 된다.
다시 무언가를 반납해야 할 때에 destroy 함수에 많이 사용하게 된다.
이러한 함수를 누가 호출해주냐? 웹컨테이너 (톰캣)이 호출해준다.
ㅡㅡㅡㅡ
the import javax.servlet cannot be resolved 가 뜰 때에는
프로젝트 오른쪽 클릭 Configure build Path -> Java Build Path -> Libaries -> Add External JARs...
-> 톰캣폴더\lib\ 찾기 -> jsp-api.jar, servlet-api.jar를 넣어주면 된다.
request.getParameterNames(); 는 request로 오는 name 값 들을 다 가지고 온다.
ㅡㅡㅡㅡ
servlet 은 .java --> .class 이고 java 코드로 이루어져 있다.
jsp 는 xxx.jsp --> xxx_jsp.java --> xxx_jsp.class 로 변형이 되고, html 코드 안에 java코드가 들어가있는 형태이다.
jsp 의 선언 태그 <%! ... %> 이고, JSP 페이지에서 Java의 멤버변수 또는 메서드를 선언한다.
주석태그 <!-- ... --> 이것은 html 주석태그이고 <%-- ... --%> 이것은 jsp 주석 코드이다.
jsp 주석 태그는 java 코드가 소스보기를 눌렀을 때에 보이지 않은 것처럼 이것 또한 보이지 않게 된다.
스크립트릿 태그 : JSP 페이지에서 Java 코드를 넣기 위한 태그
<% if(num>0) { %>
<p> num>0 </p>
<% } %>
선언 태그는 멤버변수와 메서드만을 선언하는데 스크립트릿 태그는 java 코드를 마음껏 사용할 수 있다.
표현식 태그 : Java 의 변수 및 메서드의 반환값을 출력하는 태그
num is <%=num%>
html코드 java코드
소스보기를 눌렀을 때에는 java 코드가 보이지 않는다.
지시어 : 서버에서 jsp 페이지를 처리하는 방법에 대한 정의
1) page : 페이지 기본 설정 -> <%@ page 속성 = " 속성 값" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="java.util.ArrayList"%>
2) include : include file 설정 --> <%@ include file="파일명" %>
<%@ include file="header.jsp" %>
3) taglib : 외부라이브러리 태그 설정 --> <%@ taglib uri="uri" prefix ="네임스페이스명" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
ㅡㅡㅡㅡ
response.sendRedirect("secondpage.jsp"); 이쪽으로 돌려준다.
config 객체
web.xml 에 미리 값을 선언해두고 jsp에서 가져오는 방법이다.
application 객체는 하나의 jsp 에 적용하던 config 객체의 init Param 과는 다르게 전체에 적용된다.
다음과 같이 사용하고 jsp 내에서는 config 객체때처럼 표현식 태그를 동일하게 이용해 출력해주면 된다.
그리고,
application.setAttribute("connectedIP","165.62.58.23");
application.setAttribute("connectedUser","hong"); 다음과 같이 application 객체에 값을 set 해두고
connectedIP=(String)application.getAttribute("connectedIP");
connectedUser=(String)application.getAttribute("connectedUser"); 다음과 같이 다른 jsp 에서 이렇게 받아올 수 있다.
<%@ page errorPage="errorPage.jsp"%> 다음과 같이 작성하여서 이 페이지 내에서 에러가 났을 때에 " " 안의 jsp 로 보낼 수 있다.
그리고 그 에러 페이지에는 <%@ page isErrorPage="true"%> 를 작성해 주어야 한다.
다음과 같다. 오늘은 여기서 끝.
'공부 기록들' 카테고리의 다른 글
2020.03.19 Spring(1) (0) | 2020.03.19 |
---|---|
2020.03.11 JSP(2) (0) | 2020.03.11 |
2020.02.25-28 백엔드 공부(8) (0) | 2020.02.28 |
2020.02.19 백엔드 공부 (7) (0) | 2020.02.19 |
2020.02.14 & 02.17 백엔드 공부(5),(6) (0) | 2020.02.18 |