빨리 데려 다 줄 게.Servlet.
(1)Tomcat 은 무엇 입 니까?
Tomcat 은 사실 웹 서버 와 Servlet 용기 의 결합 체 입 니 다.
(2)웹 서버 가 무엇 입 니까?
예 를 들 어,나 는 현재 항 저 우 에 있 는데,너 는 자신의 컴퓨터 로 나의 데스크 톱 위의 그림 을 방문 할 수 있 니?아마 안 될 것 같 습 니 다.우 리 는 URL 을 통 해 한 사 이 트 를 방문 하고 영 화 를 다운로드 하 는 것 에 너무 익숙 합 니 다.하나의 자원,URL 맵 이 없 으 면 외부 에 접근 하기 가 거의 어렵 습 니 다.웹 서버 의 역할 은 한 호스트 의 자원 을 하나의 URL 로 표시 하여 외부 에 접근 할 수 있 도록 하 는 것 입 니 다.
둘 째 는 Servlet 이 무엇 입 니까
(1)Servlet 용기 가 무엇 입 니까?
Servlet 은 웹 서버 나 응용 서버 에서 실행 되 는 프로그램 입 니 다.
Servlet 용 기 는 말 그대로 Servlet 대상 이 저장 되 어 있 습 니 다.우 리 는 왜 웹 서버 를 통 해 매 핑 된 URL 로 자원 에 접근 할 수 있 습 니까?프로그램 처리 요청 을 써 야 합 니 다.주요 3 가지 과정:요청 을 받 아들 이 고 요청 을 처리 하 며 요청 에 응답 합 니 다.
3.Servlet 의 유형 구조
HttpServlet 계승 을 통 해 Servlet 인터페이스 구현
일반적으로 실제 프로젝트 개발 에 서 는 HttpServlet 류 를 계승 하 는 방식 으로 Servlet 프로그램 을 실현 합 니 다.
(1)HttpServlet 클래스 를 계승 하기 위해 클래스 를 작성 합 니 다.
(2)업무 수요 에 따라 doGet 또는 doPost 방법 을 다시 쓴다.
(3)웹.xml 에 설 정 된 servlet 프로그램의 접근 주소
4.ServletConfig 클래스
ServletConfig 는 현재 Servlet 의 웹.xml 설정 정 보 를 대표 합 니 다.
String getServletName(); --- Servlet web.xml
ServletContext getServletContext();--- Servlet
String getInitParameter(String var1);--- Servlet
Enumeration<String> getInitParameterNames();--- web ServletContext
(1)역할:1.Servlet 프로그램의 별명 Servlet-name 값 을 가 져 올 수 있 습 니 다.
2.초기 화 매개 변수 init-param 가 져 오기
3.ServletContext 대상 가 져 오기
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// 1、 Servlet Servlet-name
System.out.println(servletConfig.getServletName());
// 2、 init-param
System.out.println(servletConfig.getInitParameter("username"));
// 3、 ServletContext
System.out.println(servletConfig.getServletContext());
System.out.println("2、 ");
}
5.ServletContext 류(1)ServletContext 가 무엇 입 니까?
1.ServletContext 는 하나의 인터페이스 로 Servlet 컨 텍스트 대상 을 표시 합 니 다.
2.하나의 웹 프로젝트,하나의 ServletContext 대상 인 스 턴 스 만 있 습 니 다.
3.ServletContext 는 도 메 인 대상 입 니 다.
4.ServletContext 는 웹 프로젝트 배치 가 시 작 될 때 만 들 고 웹 프로젝트 가 중 단 될 때 소각 합 니 다.
도 메 인 대상 은 무엇 입 니까?
도 메 인 대상 은 맵 처럼 데 이 터 를 액세스 할 수 있 는 대상 으로 도 메 인 대상 이 라 고 합 니 다.
이 도 메 인 은 데이터 액세스 작업 범위,전체 웹 프로젝트 를 말 합 니 다.
데이터 저장
Map put() get() remove()
도 메 인 대상 setAttribute()getAttribute()removeAttribute()
(2)ServletContext 류 의 네 가지 역할
1.웹.xml 에 설 정 된 컨 텍스트 매개 변수 context-param 가 져 오기
public class ContextServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、 web.xml context-param
ServletContext servletContext = getServletConfig().getServletContext();
String username = servletContext.getInitParameter("username");
System.out.println("context-param username"+username);
}
}
웹 xml 에서
<!-- context-param ( web )-->
<context-param>
<param-name>username</param-name>
<param-value>context</param-value>
</context-param>
2.현재 프로젝트 경로 가 져 오기,형식:/프로젝트 경로3.프로젝트 배 치 를 가 져 온 후 서버 하 드 디스크 에 있 는 절대 경로
(3)ServletContext 는 맵 처럼 데 이 터 를 액세스 합 니 다.
public class ContextServlet1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ServletContext
ServletContext context = getServletContext();
System.out.println(" :Context1 key1 :"+context.getAttribute("key1"));
context.setAttribute("key1","value1");
System.out.println("Context1 key1 :"+context.getAttribute("key1"));
}
}
:Context1 key1 :null
Context1 key1 :value1
Context2 key1 :value1
6.Servlet 의 생명주기
public class HelloServlet implements Servlet {
public HelloServlet() {
System.out.println("1、 ");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2、 ");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//service
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3、hello servlet ");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println(" 4、 ");
}
}
실행 결과1.구조 기 방법 을 집행 한다.
2.초기 화 방법 실행
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
3.hello servlet 이 방문 되 었 습 니 다.
G:\softWareInstall\apache-tomcat-9.0.45\bin\catalina.bat stop
Using CATALINA_BASE: "C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_Servlet"
Using CATALINA_HOME: "G:\softWareInstall\apache-tomcat-9.0.45"
Using CATALINA_TMPDIR: "G:\softWareInstall\apache-tomcat-9.0.45\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_60"
Using CLASSPATH: "G:\softWareInstall\apache-tomcat-9.0.45\bin\bootstrap.jar;G:\softWareInstall\apache-tomcat-9.0.45\bin\tomcat-juli.jar"
Using CATALINA_OPTS: ""
03-may-2021 14:33:11.909 기℃[main]org.apache.catalina.core.StandardServer.wait 杩 杩 掮 掮 板 추출 계 호 주
03-May-2021 14:33:11.909 치℃[main]org.apache.coyote.AbstractProtocol.pause ProtocolHandler["http-nio-8080"]
03-may-2021 14:33:12.289 기℃[main]org.apache.catalina.core.StandardService.stopInternal 주 e ㄥ 주 2[Catalina]
4.소각 방법 을 집행 한다
(1)Servlet 구조 기 방법 실행
(2)init 초기 화 방법 실행
첫 번 째,두 번 째 단 계 는 첫 번 째 방문 때 Servlet 프로그램 을 만 들 면 호출 됩 니 다.
(3)서비스 수행 방법
세 번 째 단 계 는 방문 할 때마다 호출 됩 니 다.
(4)destroy 소각 방법 집행
STEP 4:웹 프로젝트 가 중 단 될 때 호출
7.Get,Post
get,post 요청 은 모두 서비스 방법 으로 갑 니 다.그러면 get,post 요청 을 어떻게 구분 합 니까?
//service
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3、hello servlet ");
HttpServletRequest httpServletRequest=(HttpServletRequest)servletRequest;
String method = httpServletRequest.getMethod();
if ("Get".equals(method)){
}
if ("POST".equals(method)){
}
}
여기 서 빠 른 속도 로 시작 할 수 있 는 Servlet 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Servlet 상세 한 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.