>  기사  >  Java  >  서블릿 요청 디스패처

서블릿 요청 디스패처

WBOY
WBOY원래의
2024-08-30 15:16:09921검색

RequestDispatcher 인터페이스를 사용하면 요청을 HTML, 서블릿 또는 JSP 등 다른 리소스로 라우팅할 수 있습니다. 이 인터페이스는 추가 리소스의 콘텐츠를 통합하는 데에도 활용될 수 있습니다. 서블릿 협력 방법 중 하나입니다. RequestDispatcher 인터페이스는 java.lang의 일부입니다. 서블릿 패키지. 이 인터페이스를 사용하면 서블릿은 요청을 받은 후 객체를 반환합니다.

서블릿 요청 디스패처

광고 이 카테고리에서 인기 있는 강좌 JAVA SERVLET - 전문 분야 | 18개 코스 시리즈 | 6가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

서블릿 RequestDispatcher 개요

서블릿 RequestDispatcher는 사용자 인터페이스를 사용하여 한 소스 링크를 다른 소스 링크로 요청합니다. requestdispatcher는 양식 데이터를 유효성 검사 서블릿 페이지로 보냅니다. 서블릿 페이지가 정보의 유효성을 검사하면 요청 디스패처는 경로나 문자열 이름을 사용하여 링크를 다른 서블릿이나 JSP 페이지로 전달합니다. 웹페이지가 정보의 유효성을 검사하지 않으면 요청 디스패처 개체에 HTML 또는 JSP 페이지가 포함되고 오류 메시지가 표시됩니다.

서블릿 RequestDispatcher를 만드는 방법은 무엇입니까?

RequestDispatcher 객체는 리소스에 요청을 보내거나 응답에 포함할 수 있습니다. 리소스는 정적이거나 동적일 수 있습니다. 서블릿 페이지에서 서블릿 요청 디스패처를 생성하는 세 가지 방법이 있습니다. 먼저 경로의 문자열 이름이나 페이지의 경로를 사용해야 합니다.

방법 1

다음 구문은 경로를 사용하여 요청 디스패처 개체를 생성하는 방법을 보여줍니다.

구문:

RequestDispatcher requestdispatcherObject = ServletContext.getRequestDispatcher(" String file_path");

설명:

  • 서블릿이 서블릿 컨테이너와 통신하기 위해 ServletContext를 활용하는 공용 인터페이스입니다.
  • 경로는 리소스의 경로 이름을 지정하는 문자열입니다.
  • 리소스 파일 형식은 서블릿, HTML 또는 JSP여야 합니다.

방법 2

다음 구문은 요청 디스패처 개체를 생성하는 방법을 보여줍니다.

구문:

RequestDispatcher requestdispatcherObject = ServletContext.getNamedDispatcher(" String name");

설명:

  • 공용 인터페이스 ServletContext는 서블릿이 컨테이너와 통신하는 데 사용하는 메소드 컬렉션을 정의합니다.
  • "이름"은 래핑할 서블릿을 지정하는 문자열입니다.

방법 3

다음 구문은 요청 인터페이스를 사용하여 요청 디스패처의 개체를 생성하는 방법을 보여줍니다.

구문:

RequestDispatcher requestdispatcherObject = request.getRequestDispatcher(" String file_path");

설명:

  • "요청"은 HttpServletRequest 유형의 개체입니다.
  • file_Path는 리소스의 경로 이름을 지정하는 문자열입니다. 현재 서블릿을 기준으로 해야 합니다.

서블릿 RequestDispatcher의 방법

requestdispatcher에는 서블릿 페이지와 Html 페이지에 대한 두 가지 방법이 있습니다. 이 방법은 파일 소스를 다음 소스로 전달하거나 포함합니다.

  • 전달 방법
  • 포함 방법

1. 전달 방법

정보가 확인되고 웹페이지가 다음 서블릿 페이지로 전달되면 전달 방법을 사용하세요.

구문:

다음 구문은 전달 방법을 사용하는 방법을 보여줍니다.

void forward(ServletRequest req, ServletResponse resp) throws ServletException, IOException

설명:

  • 수정자/유형: void.
  • 이 기술은 서블릿의 요청을 다른 서버 리소스로 리디렉션합니다.
  • 응답이 클라이언트에 전송되기 전에 메소드가 호출됩니다.
  • 응답이 이미 전송된 경우 프로시저는 IllegalStateException을 발생시킵니다.
  • 요청(req)과 응답(resp)은 서블릿의 서비스 메소드에 제공되는 동일한 객체입니다.
  • 이 함수는 요청의 디스패처 유형을 "DispatcherType.FORWARD"로 설정합니다.

예:

코드:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}

2. 포함 방법

정보가 확인되지 않으면 페이지에 오류 메시지와 함께 동일한 페이지가 포함됩니다.

구문:

다음 구문은 include 메소드를 사용하는 방법을 보여줍니다.

void include(ServletRequest req, ServletResponse resp) throws ServletException, IOException

설명:

  • 수정자/유형: void
  • 요청(req)과 응답(resp)은 서블릿의 서비스 메소드에 제공되는 동일한 객체입니다.
  • 이 기술은 현재 서블릿 응답에 리소스의 응답을 포함하는 데 사용됩니다.
  • 이 함수는 요청의 디스패처 유형을 "DispatcherType.INCLUDE"로 설정합니다.

예:

코드:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}

Servlet RequestDispatcher Interface

The servlet requestdispatcher requires the following four files:

  • Index.html: Insert the information in the form.
  • Register.java: Use the servlet requestdispatcher interface with the method.
  • FinalServlet.java: Use the servlet page for the final output.
  • Web.xml: A deployment descriptor file that contains the information about the servlet. A deployment descriptor file that contains the information about the servlet.

index.html: create the required form

Code:

<!DOCTYPE html>
<html>
<head>
<title> Basic form </title>
</head>
<body>
<form action = "first_servlet" method = "post">
<label for = "fn"> User Id: </label>
<input type = "text" id = "fn" name = "fn"><br><br>
<label for = "ln"> First name: </label>
<input type = "text" id = "ln" name = "ln"><br>
<input type = "submit" value = "Submit">
</form>
</body>
</html>

Register.java: create the first servlet with a request dispatcher interface

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Register extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String first_id = req.getParameter("fn");
String first_name = req.getParameter("ln");
if(first_id.equals("servlet"){
RequestDispatcher rdispatcher = req.getRequestDispatcher("sec_servlet");
rdispatcher.forward(req, resp);
}
else{
printout.print("Sorry!! Wrong UserId!");
RequestDispatcher rdispatcher = req.getRequestDispatcher("/index.html");
rdispatcher.include(req, resp);
}
}
}

FinalServlet.java: create a second servlet page for the required output

Code:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FinalServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printout = resp.getWriter();
String name = req.getParameter("ln");
printout.print("Welcome "+name);
}
}

Web.xml: create servlet parameters with its page

Code:

<web-app>
<servlet>
<servlet-name> Register </servlet-name>
<servlet-class> Register </servlet-class>
</servlet>
<servlet>
<servlet-name> FinalServlet </servlet-name>
<servlet-class> FinalServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> Register </servlet-name>
<url-pattern> /first_servlet </url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> FinalServlet </servlet-name>
<url-pattern> /sec_servlet </url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file> index.html </welcome-file>
</welcome-file-list>
</web-app>

Output 1: form page

서블릿 요청 디스패처

Output 2: servlet page output with an error message

서블릿 요청 디스패처

Output 2: servlet page final output

서블릿 요청 디스패처

Conclusion

The servlet requestdispatcher interface moves users from one source to another web application source. It is forward and includes the file path per requirement and source output.

위 내용은 서블릿 요청 디스패처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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