>  기사  >  Java  >  자바 고주파 기본 면접 질문——(4)

자바 고주파 기본 면접 질문——(4)

王林
王林앞으로
2020-09-02 16:08:571768검색

자바 고주파 기본 면접 질문——(4)

1. 서블릿의 라이프사이클에 대해 이야기해 보세요.

(더 많은 관련 인터뷰 질문 추천: java 인터뷰 질문 및 답변)

서블릿은 로딩, 인스턴스화, 초기화를 포함한 라이프사이클에 대한 좋은 정의를 가지고 있습니다. 요청을 처리하고 서비스를 종료합니다. 이 수명은 javax.servlet.Servlet 인터페이스의 init(), service() 및 destroy 메소드로 표현됩니다.

서블릿이 서버에 의해 인스턴스화되면 컨테이너는 init 메소드를 실행하고, 요청이 도착하면 서비스 메소드를 자동으로 요청에 해당하는 doXXX 메소드(doGet, doPost)를 디스패치하고 실행합니다. 등이며, 서버가 인스턴스를 파괴하기로 결정하면 호출됩니다.

웹 컨테이너가 서블릿을 로드하고 수명 주기가 시작됩니다. 서블릿의 init() 메소드를 호출하여 서블릿을 초기화합니다. 이는 service() 메서드를 호출하여 달성되며, 다양한 요청에 따라 다양한 do***() 메서드가 호출됩니다. 서비스를 종료하기 위해 웹 컨테이너는 서블릿의 destroy() 메소드를 호출합니다.

2. 서블릿 API에서 전달()과 리디렉션()의 차이점은 무엇입니까?

1. 주소 표시줄 표시에서

forward는 서버가 대상 주소의 URL에 직접 액세스하여 해당 URL의 응답 내용을 읽은 다음 해당 내용을 브라우저로 보냅니다. 서버는 이 작업을 전혀 수행하지 않습니다. 서버에서 보낸 콘텐츠가 어디에서 왔는지 알기 때문에 주소 표시줄은 여전히 ​​원래 주소입니다.

리디렉션은 브라우저에 해당 주소를 다시 요청하도록 논리에 따라 상태 코드를 보내는 것을 의미합니다. 따라서 주소 표시줄에 새 URL이 표시됩니다. 따라서 리디렉션은 클라이언트가 서버에 두 개의 요청을 보내고 두 개의 요청도 수락한다는 의미입니다. . 응답.

2. 데이터 공유의 관점에서

forward: 전달된 페이지와 전달된 페이지는 요청의 데이터를 공유할 수 있습니다.

redirect: 데이터를 공유할 수 없습니다

redirect는 현재 애플리케이션의 다른 리소스로 리디렉션할 수 없습니다. , 동일한 사이트의 다른 애플리케이션의 리소스로 리디렉션하거나 절대 URL을 사용하여 다른 사이트의 리소스로 리디렉션할 수도 있습니다.

전달 방법은 동일한 웹 애플리케이션 내의 리소스 간에만 요청을 전달할 수 있습니다. 전달은 내부 작업

입니다.

리디렉션은 서버가 클라이언트에게 이를 알리고 클라이언트가 요청을 다시 시작하도록 허용하는 경우입니다

따라서 리디렉션은 간접 요청이라고 말할 수 있지만 "요청이 전달인지 리디렉션인지"라고 말할 수는 없습니다

3. 응용 분야에서는

forward: 일반적으로 사용자가 로그인할 때 사용하며, 역할에 따라 해당 모듈로 전달합니다.

redirect: 일반적으로 사용자가 로그아웃하고 다른 웹사이트로 이동할 때 메인 페이지로 돌아가는 데 사용됩니다.

4. 효율성 측면에서

redirect: 낮음.

3. request.getAttribute()의 차이점은 무엇입니까? request.getParameter() post 및 get과 같은 메소드를 통해 전달된 데이터를 가져오는 것은 컨테이너 구현을 통해서입니다.

request.setAttribute() 및 getAttribute()는 웹 컨테이너 내에서만 흐르며 요청 처리 단계에만 있습니다.

2. getAttribute는 객체를 반환하고, getParameter는 문자열을 반환합니다.

3. getAttribute()는 항상 setAttribute()로 설정한 후에만 getAttribute()를 통해 얻을 수 있습니다. 전달되는 것은 객체 유형 데이터입니다. 그리고 동일한 요청 개체에서 사용해야 유효합니다. , getParameter()는 양식의 get 또는 post로 제출된 매개변수를 수신하는 것입니다

(동영상 튜토리얼 추천:

java 과정

)

4 jsp 정적 포함과 동적 포함의 차이점

1. %@include file ="xxx.jsp"%>는 jsp에서 서블릿으로 변환하는 동안 해당 파일이 포함되는 명령이며 jsp 명령의 작업이며, 해당 파일은 컴파일 중에 발생합니다. 즉, Java 파일이 클래스 파일로 컴파일되는 기간입니다

2. 정적 포함을 사용하면 클래스 파일이 하나만 생성됩니다. 여러 클래스 파일 생성


3. 정적 포함을 사용하는 경우 포함된 페이지와 포함된 페이지의 요청 개체는 동일한 개체입니다. 왜냐하면 정적 포함은 포함된 페이지의 콘텐츠만 포함하는 반면 동적 포함은 포함된 페이지에 복사하기 때문입니다. 동일한 개체가 아닌 페이지와 포함된 페이지의 경우 포함된 페이지의 요청 개체에서 얻을 수 있는 매개변수의 범위가 상대적으로 큽니다. 5. MVC 각 부분을 구현하는데 어떤 기술이 사용되나요?


MVC는 Model-View-Controller의 약자입니다. 모델은 애플리케이션의 비즈니스 로직(JavaBeans 및 EJB 구성 요소를 통해 구현됨)을 나타내고, 보기는 애플리케이션의 표현 표면(JSP 페이지에서 생성됨)을 나타내며, 컨트롤러는 이 디자인 모델을 통해 애플리케이션(일반적으로 서블릿)의 프로세스 제어를 제공합니다. 애플리케이션 논리, 처리 및 표시 논리를 다양한 구성 요소 구현으로 나눕니다. 이러한 구성 요소는 상호 작용하고 재사용할 수 있습니다.

6. JSP의 내장 개체는 무엇입니까?

JSP에는 다음과 같은 9개의 내장 개체가 있습니다.

1. 이 요청에는 GET/POST 요청의 매개변수가 포함됩니다.

2. 응답 웹페이지는 클라이언트의 응답을 반환합니다

3. pageContext 웹페이지의 속성은 여기에서 관리됩니다

4. session 요청과 관련된 세션 기간

5.

6.out을 사용하여 응답 출력 전송

8.page JSP 웹 페이지 자체

9. 오류 웹 페이지에서 발견되지 않은 예외

7. HTTP에서 get과 post 메소드의 차이점

1, Get은 서버에 데이터를 요청하는 것이고 Post는 데이터를 서버에 제출하라는 요청입니다

2. Get은 정보를 얻는 것이지 정보를 수정하는 것이 아닌 데이터베이스 쿼리 기능과 유사합니다. not be수정

3. Get 요청의 매개변수는 URL 뒤에 전달되며, 요청된 데이터는 URL에 추가되어 URL을 분할하고 ?로 데이터를 전송합니다. %XX에 있는 기호는 시스템에서 표현하는 ASCII입니다. 데이터가 영문/숫자일 경우에는 그대로 전송합니다. 공백일 경우에는 직접 +로 변환합니다. BASE64로 문자열을 암호화합니다.

4. Get에서 전송하는 데이터에는 크기 제한이 있습니다. GET에서 제출할 수 있는 데이터의 양은 URL 길이에 따라 다릅니다. URL의 길이입니다.

5. GET에서 요청한 데이터는 브라우저에 의해 캐시되며 사용자 이름과 비밀번호는 URL에 일반 텍스트로 표시됩니다. 다른 사람이 검색 기록을 확인할 수 있으며 데이터는 안전하지 않습니다.

서버 측에서는 Request.QueryString을 사용하여 Get 메서드로 제출된 데이터를 가져옵니다.

게시물 요청은 http 메시지의 실제 내용으로 웹 서버로 전송됩니다. 데이터는 HTML 헤더에 배치되며 제출되는 데이터는 제한되지 않습니다. Post는 Get보다 안전합니다. 데이터가 중국어이거나 민감하지 않은 데이터인 경우 get을 사용하세요. get을 사용하면 매개변수가 주소에 표시되기 때문입니다. 한자가 아닌 데이터의 경우 post를 사용하세요.

6. POST는 서버의 리소스를 수정할 수 있는 요청을 나타냅니다. 서버 측에서 Post 메서드로 제출된 데이터는 Request.Form을 통해서만 얻을 수 있습니다.

8. 쿠키란 무엇인가요? 세션과 쿠키의 차이점은 무엇입니까?

쿠키는 사용자 정보를 브라우저에 저장하는 객체인 세션 기술입니다.

(관련 권장사항:

Java 시작하기

)

차이:

1. 쿠키 데이터는 고객의 브라우저인 세션에 저장됩니다. 데이터를 서버에 올려두세요

2. 쿠키는 그다지 안전하지 않습니다. 다른 사람이 로컬에 저장된 쿠키를 분석하여 속일 수 있습니다. 보안이 가장 중요하다면 세션을 사용해야 합니다.

3. 일정 기간 동안. 액세스가 증가하면 서버 성능을 더 많이 차지하게 됩니다. 서버 성능을 낮추는 것이 주된 고려사항이라면 COOKIE

4를 사용해야 합니다. 클라이언트의 단일 쿠키 제한은 3K입니다. 클라이언트에 3K COOKIE를 저장합니다.

결론:

로그인 정보 등 중요한 정보를 SESSION으로 저장하세요. 다른 정보를 유지해야 하는 경우 COOKIE에 저장할 수 있습니다.

9. JSP와 서블릿의 차이점, 공통점, 적용 범위는 무엇인가요?

JSP는 본질적으로 Servlet의 간단한 방식인 Servlet 기술의 확장입니다. JSP가 컴파일된 후에는 "서블릿과 유사"합니다.

서블릿과 JSP의 주요 차이점은 서블릿의 애플리케이션 로직이 Java 파일에 있고 프리젠테이션 계층에서 HTML과 완전히 분리되어 있다는 것입니다. JSP의 경우 Java와 HTML을 .jsp 확장자를 가진 파일로 결합할 수 있습니다.

JSP는 뷰에 중점을 두고 있으며 서블릿은 주로 제어 로직에 사용됩니다. Struts 프레임워크에서 JSP는 MVC 디자인 패턴의 뷰 레이어에 있고, Servlet은 컨트롤 레이어에 있습니다.

10. Tomcat 컨테이너는 어떻게 서블릿 클래스 인스턴스를 생성합니까? 어떤 원리가 사용됩니까?

컨테이너가 시작되면 webapps 디렉터리에 있는 모든 웹 애플리케이션의 web.xml 파일을 읽은 다음 xml 파일을 구문 분석하고 서블릿 등록 정보를 읽습니다. 그런 다음 각 애플리케이션에 등록된 서블릿 클래스를 로드하고 리플렉션을 통해 인스턴스화합니다. (첫 번째 요청에서도 인스턴스화되는 경우가 있습니다.)

서블릿 등록 시 1을 추가하세요. 양수이면 처음에 인스턴스화됩니다. . 작성되지 않았거나 음수인 경우 처음으로 인스턴스화가 요청됩니다.

위 내용은 자바 고주파 기본 면접 질문——(4)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제