>  기사  >  Java  >  JavaWeb 인터뷰 질문 (1)

JavaWeb 인터뷰 질문 (1)

(*-*)浩
(*-*)浩원래의
2019-12-05 15:08:483220검색

JavaWeb 인터뷰 질문 (1)

서블릿의 수명주기에 대해 이야기해 보세요.

서블릿에는 로드 및 인스턴스화, 초기화, 요청 처리 및 서비스 종료를 포함하여 수명주기에 대한 좋은 정의가 있습니다. 이 수명은 javax.servlet.Servlet 인터페이스의 init(), service() 및 destroy 메소드로 표현됩니다. (추천 연구: java 인터뷰 질문)

서블릿이 서버에 의해 인스턴스화 된 후 컨테이너는 init 메소드를 실행하고 요청이 도착하면 서비스 메소드를 실행하며 서비스 메소드는 자동으로 doXXX 메소드를 전달합니다 (doGet, doPost ) 실행 요청 등에 따라 서버가 인스턴스를 삭제하기로 결정하면 해당 소멸 메서드가 호출됩니다.

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

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

1. 주소 표시줄에서

forward는 서버가 리소스를 요청하는 경우 서버가 대상 주소의 URL에 직접 액세스하여 해당 URL의 응답 내용을 읽은 다음 해당 내용을 서버로 보냅니다. 브라우저는 서버에서 보낸 콘텐츠가 어디에서 왔는지 모르므로 주소 표시줄은 여전히 ​​원래 주소입니다.

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

2. 데이터 공유 측면에서

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

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

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

forward 메소드는 동일한 웹 애플리케이션 내의 리소스 간에만 전달될 수 있습니다.

리디렉션은 서버가 클라이언트에 알리고 클라이언트가 요청을 다시 시작할 수 있도록 허용하는 것입니다.

따라서 리디렉션이 간접적인 요청이라고 말할 수는 있지만 "요청은 다음과 같습니다."라고 말할 수는 없습니다. 포워딩인가요 리다이렉트인가요 "

3. 애플리케이션 측면에서

forward : 일반적으로 사용자 로그인 시 사용되며, 역할에 따라 해당 모듈로 포워딩됩니다.

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

4. 효율성 측면에서

forward: high.

redirect: low.

request.getAttribute()와 request의 차이점은 무엇인가요? .getParameter()

1, request.getParameter()는 post, get 등의 메소드를 통해 전달된 데이터를 얻기 위해 컨테이너 구현을 통해 얻습니다.

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

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

3. getAttribute()는 항상 setAttribute()로 설정한 후에만 getAttribute(를 통해 얻을 수 있습니다. ) 전달하는 것은 객체 유형 데이터입니다. 그리고 동일한 요청 개체에서 사용해야 유효합니다.

그리고 getParameter()는 양식의 get 또는 post로 제출된 매개변수를 수신하는 것입니다

jsp

1의 정적 포함과 동적 포함의 차이점은 다음과 같습니다. <%@include file="xxx.jsp"% >는 jsp입니다. jsp의 컴파일 명령으로, 해당 파일은 jsp를 서블릿으로 변환하는 동안 발생하며, 파일은 컴파일 기간, 즉 Java 파일이 클래스 파일로 컴파일되는 기간

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

3. , 포함 페이지와 포함 페이지 요청 개체는 동일한 개체입니다. 왜냐하면 정적 포함은 포함된 페이지의 콘텐츠만 포함된 페이지에 복사하기 때문입니다.

동적 포함과 포함된 페이지는 동일한 페이지가 아니며 요청 개체입니다. 포함된 페이지에서 얻을 수 있는 매개변수의 범위는 상대적으로 커야 합니다. 포함된 페이지로 전달된 매개변수를 얻을 수 있을 뿐만 아니라 포함된 페이지에서 전달된 매개변수도 각 부분을 구현하는 데 사용되는 기술입니다. MVC는 어떻게 구현하나요?

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

jsp의 내장 객체는 무엇인가요?

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

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

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

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

4, 세션은 다음과 관련됩니다. 요청 세션 기간

5, 애플리케이션 서블릿에 의해 실행되는 콘텐츠

6, out은 응답 출력을 전송하는 데 사용됩니다.

7, 구성 서블릿의 아키텍처 구성 요소

8, 페이지 JSP 웹 페이지 자체

9, 오류 페이지 예외, Uncaught 예외

Http에서는 get과 post 방법의 차이점

1. Get은 서버에 데이터를 요청하는 반면 Post는 서버에 데이터를 제출하라는 요청입니다

2. Get은 정보를 수정하는 대신 가져오는 것입니다. 데이터베이스 쿼리 기능과 유사하게 데이터가 수정되지 않습니다.

3. Get 요청의 매개변수는 URL 뒤에 전달되고 요청된 데이터는 뒤에 첨부됩니다. URL을 분할하여 전송할 데이터와 매개변수는 &로 연결됩니다. %XX의 XX는 16진수 표기법으로 표현된 ASCII이므로 공백인 경우 그대로 전송합니다. +로 변환합니다. 중국어/기타 문자인 경우 BASE64로 직접 암호화합니다.

4. Get에서 전송하는 데이터에는 크기 제한이 있습니다. GET에서 제출할 수 있는 데이터의 양은 URL의 길이와 직접적인 관련이 있습니다. URL의 길이입니다.

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

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

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

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

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

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

차이:

(1) 쿠키 데이터는 고객의 브라우저에 저장되며, 세션 데이터는 서버에 저장됩니다

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

(3) 세션은 일정 기간 동안 서버에 저장됩니다. . 방문수가 증가하면 서버 성능을 더 많이 차지하게 됩니다. 서버 성능 저하를 주로 고려한다면 COOKIE

(4) 클라이언트의 단일 쿠키 제한은 3K이므로 사이트에서 저장할 수 없습니다. 클라이언트의 3K 쿠키.

결론:

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

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

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

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

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

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

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

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

위 내용은 JavaWeb 인터뷰 질문 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.