이 기사는 SpringMVC 워크플로(코드 포함)에 대한 자세한 소개를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 될 수 있습니다.
SpringMVC 워크플로:
상세 사진:
SpringMVC 워크플로 설명
1. 사용자가 서버에 요청을 보내면 request는 첫 번째 단계
2의 세부 그림과 같이 Spring 프런트엔드 컨트롤러 DispatcherServlet이 이를 획득합니다. DispatcherServlet은 요청 URL을 구문 분석합니다(예를 들어 다음 URL
http://localhost로 요청을 보냅니다). :8080/SpringMVC/hello.action), 그러면 요청 리소스 식별자(URI, 위의 hello.action과 동일)를 얻게 됩니다. 그런 다음 URI에 따라 핸들러 매퍼(HandlerMapping)를 호출하여 Handler가 구성한 모든 관련 객체(Handler 객체 및 Handler 객체에 해당하는 인터셉터 포함)를 획득하고 최종적으로 HandlerExecutionChain 객체 형태로 반환됩니다.
3.DispatcherServlet은 위에서 반환된 Handler를 가져오고 적합한 HandlerAdapter를 선택합니다. (참고: HandlerAdapter를 성공적으로 획득하면 이때 인터셉터의 preHandler(...) 메서드가 실행되기 시작합니다.)
4. 적절한 HandlerAdapter를 선택한 후 Handler가 실행되기 시작합니다. 핸들러의 매개변수를 채우는 과정 중에 Spring은 구성에 따라 몇 가지 추가 작업을 수행합니다(우리는 이를 처리할 필요가 없습니다).
EG:
HttpMessageConveter: 요청 메시지를 변환합니다(예: Json, xml 및 기타 데이터)를 객체로 변환하고 객체를 지정된 응답 정보로 변환합니다.
데이터 변환: 요청 메시지에 대한 데이터 변환을 수행합니다. 예를 들어 String은 Integer, Double 등으로 변환됩니다.
데이터 급격화: 요청 메시지의 데이터 형식을 지정합니다. 문자열을 형식화된 숫자나 형식화된 날짜 등으로 변환합니다.
데이터 검증: 데이터(길이, 형식 등)의 유효성을 검증하고 검증 결과를 Handler 실행 후 BindingResult 또는 Error에 저장합니다
5. 완료되면 DispatcherServlet에 보고합니다. ModelAndView 객체(뷰 이름 또는 뷰 이름 및 모델 포함)를 반환합니다.
6. 반환된 ModelAndView 객체를 기반으로 적절한 ViewResolver를 선택하고 이를 DispatcherServlet에 반환합니다.
7. 그리고 View를 렌더링하여
8. 마지막으로 뷰 렌더링 결과가 클라이언트로 반환됩니다
Component 명사 설명:
1.DispatcherServlet: 프런트 엔드 컨트롤러
는 이전 컨트롤러와 동일합니다. 전체 프로세스의 중심이며 다른 구성요소 호출을 담당합니다
2.HandlerMapping: 처리 매퍼
는 요청에 따라 핸들러(프로세서)를 찾는 역할을 담당합니다. springMVC에서는 매퍼에 따라 서로 다른 매핑을 구현할 수 있습니다. xml 구성 방식, 주석 방식, 인터페이스 방식 등
3. 핸들러: 백엔드 컨트롤러
특정 사용자 요청은 프런트엔드 컨트롤러의 제어 하에 처리되므로 일반적으로 개발자는 이에 따라 개발해야 합니다. 필요합니다.
4.HandlerAdapter: 프로세서 어댑터
Handler 처리는 여러 유형의 프로세서에서 실행될 수 있습니다. 이는 어댑터 패턴을 적용한 것입니다.
5.ViewResolver: 뷰 리졸버
는 처리 결과로부터 뷰 뷰를 생성하는 역할을 담당한다. 개발자는 필요에 따라 뷰를 개발할 수 있다.
프로그램 시작하기(상세 단계): springMVC의 워크플로우를 이해한 후, 다음을 따라해보자. 프로세스 단계는 다음과 같습니다:
1. 스프링 프레임워크 패키지를 가져옵니다(일반적으로 공식 웹사이트에서 다운로드하며 4.2 버전이 더 일반적으로 사용됨)
2. - web.xml의 제어 종료
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <!-- 让servlet随服务启动 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
다음은 차단 방법입니다.
1. 고정 접미사가 있는 URL 차단: *.action, *.do
2. 하지만 이 방법을 사용하면 정적 파일(css, js.jpg)을 가로채서 정상적으로 표시할 수 없으므로 특별한 처리가 필요합니다
참고: 모든 가로채기를 /*로 설정할 수는 없습니다. 이 방법은 잘못된 경우입니다. 액션이 jsp로 점프할 때 액션이 요청되었습니다. 다시 가로채어 예외가 발생했습니다. jsp 경로
3.에 따라 매핑 주소를 찾을 수 없습니다. springmvc
구성 파일을 설정하세요.<servlet> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/springmvc.xml</param-value> </init-param> </servlet>
4.개발 프로세서
public class Hello implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { List list = new ArrayList<>(); list.add("one"); list.add("two"); ModelAndView mv = new ModelAndView(); mv.addObject("list",list); return mv; } }
5.在springmvc.xml中配置、
<!-- 配置适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 处理器映射器 --> <!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 配置处理器 --> <bean name="/hello.action" class="com.mt.controller.Hello"></bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
6.视图开发 ,jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> asdfadfadfa ${list } </body> </html>
测试结果: 开启服务器后, 发送 http://localhost:8080/SpringMVC/hello.action的请求
页面显示:
对应理解springMVC 的流程即可。
위 내용은 SpringMVC 워크플로에 대한 자세한 소개(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!