SpringMVC 뷰와 REST 스타일의 상세 분석(코드 포함)
이 기사는 SpringMVC 뷰와 REST 스타일(코드 포함)에 대한 자세한 분석을 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.
뷰 리졸버란 무엇인가요?
view를 처리하기 위해 springMVC에서 사용하는 가장 중요한 두 가지 인터페이스는 ViewResolver와 View입니다.
ViewResolver의 주요 기능은 논리적 뷰 이름을 실제 뷰로 확인하는 것입니다. View 개체는 View 개체를 클라이언트에 표시하는 데 사용됩니다. .
View 인터페이스의 주요 기능은 뷰를 처리하여 클라이언트에 반환하는 것입니다.
뷰 파서의 실행 프로세스:
요청 메소드가 실행된 후 결국 ModelAndView 객체가 반환됩니다. String, View, ModelMap 등을 반환하는 유형의 경우 SpingMVC는 결국 이를 조합합니다. 모델 객체의 논리적 이름과 뷰를 포함하는 ModelAndView 객체로 내부적으로. StringMVC는 뷰 파서를 사용하여 최종 뷰 객체를 얻습니다. 최종 뷰는 JSP 또는 기타 파일 형식 뷰일 수 있습니다. 렌더링 프로세서는 최종적으로 어떤 방식을 채택할지 신경쓰지 않고 모델 데이터를 생성하는 작업에만 집중하며 항상 MVC의 완전한 디커플링을 달성해 왔습니다.
View:
뷰의 역할은 모델 데이터를 렌더링하고 모델의 데이터를 어떤 형식으로 사용자에게 제공하는 것입니다. 뷰 모델과 특정 구현 기술의 분리를 달성하기 위해 Sping은 뷰 인터페이스를 정의합니다. 뷰 개체는 뷰 확인자에 의해 인스턴스화되며 뷰는 상태 비저장이므로 스레드 안전 문제가 없습니다.
일반적으로 사용되는 뷰 구현 클래스:
InternalResourceView: JSP 리소스를 뷰로 캡슐화하며 기본적으로 springmvc에서 사용하는 뷰 파서입니다.
JstlView: jstl 패키지 springmvc를 JSP 프로젝트에 도입하면 자동으로 이 파서를 사용합니다.
MapingJackJsonView: Jackson 오픈 소스 프레임워크의 ObjectMapper를 통해 Json 모드에서 모델을 출력합니다.
AbstractExcelView: POI를 기반으로 엑셀 문서를 구성하는 엑셀 문서 뷰의 추상 클래스
AbstractPdfVIew: iText를 기반으로 PDF 문서를 구성하는 PDF 문서 뷰의 추상 클래스
BeanNameViewResolver: 논리 뷰 이름을 Bean으로 해석 , Bean ID는 논리적 뷰 이름과 동일합니다.
뷰 리졸버의 역할은 비교적 간단합니다. 모든 뷰 리졸버는 ViewResolver 인터페이스를 구현해야 합니다.
JSP는 가장 일반적으로 사용되는 뷰 기술입니다. InternalResourceView를 뷰 파서로 사용할 수 있습니다.
JSTL 태그가 프로젝트에 도입되는 한 springmvc는 자동으로 InternalResourceView 뷰를 JstlView로 변환합니다. , JstlView는 해당 하위 클래스입니다.
모든 뷰 파서는 Ordered 인터페이스를 구현하고 파서의 우선 순위를 설정할 수 있는 순서 속성을 개발합니다. 봄 MVC는 구문 분석이 성공하고 뷰 객체가 반환될 때까지 뷰 파서 순서의 우선 순위에 따라 논리적 뷰 이름을 구문 분석합니다. 그렇지 않으면 ServletException이 발생합니다
사용자 정의 뷰:
@Component public class MyView implements View { @Override public String getContentType() { return "text/html"; } @Override public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.getWriter().println("<h1>Spring MVC Custom view</h1>"); } }
이 사용자 정의 뷰 뷰를 구현해야 합니다. 그런 다음 인터페이스는 인터페이스의 두 가지 메서드를 재정의합니다. 그런 다음 이 클래스를 Bean으로 선언하고 관리를 위해 스프링에 넘겨줍니다. 여기서는 beanName 확인자를 구성합니다.
<!-- 配置BeanName解析器 --> <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="1"/> </bean>
그런 다음 요청을 작성하세요. 이 요청은 기본적으로 첫 번째 문자가 소문자이며 카멜 케이스로 표시됩니다.
@RequestMapping("myView") public String myView(){ System.out.println("myView load ..."); return "myView"; }
이로 사용자 정의 보기가 완성됩니다.
닫기 및 리디렉션:
반환 문자열에 "redirect:" 또는 "forward:"이 포함되어 있으면 SpringMvc가 특수 처리를 수행합니다.
뷰에 직접 액세스해야 하는 경우 다음과 같이 구성할 수 있습니다
<!– 直接配置对应的视图访问路径 --> <mvc:view-controller path="/hello" view-name="hello.jsp" /> <!-- 如果配置了mvc-controller会导致其它页面没法正常访问,还需要添加一个标签 --> <mvc:annotation-driven />
REST Chapter
REST(Representational State Transfer): 즉, (리소스) 프레젠테이션 계층 상태 이전.
리소스: 네트워크의 개체 또는 네트워크의 정보입니다. 텍스트, 노래, 사진 등이 될 수 있습니다. URL을 사용하여 이를 가리킬 수 있습니다. 각 리소스에는 특정 고유 URL이 있습니다. 이 리소스에 액세스하려면 URI에 직접 액세스하면 됩니다.
표현 레이어: 리소스가 표시되는 형식입니다.
상태 전송: 요청이 발행될 때마다 클라이언트와 서버 간의 상호 작용을 나타냅니다. HTTP 프로토콜은 상태 비저장 프로토콜입니다. 즉, 모든 상태가 서버 측에 저장됩니다. 클라이언트가 서버를 작동하려면 어떤 수단을 사용하여 서버가 상태 변환을 거쳐야 하며 이 변환은 프리젠테이션 계층을 기반으로 하므로 프리젠테이션 계층 상태 변환입니다.
在我们的SpringMVC之中支持HTTP四种请求状态,REST规定的HTTP协议中四种表示操作方式的动词
GET请求:获取资源
POST请求:新建资源
PUT:更新资源
DELETE:删除资源
我们需要在WEB.xml中配置实现PUT,DELETE请求方式,大家都知道在我们传统的HTML中只有GET,POST两种请求方式。
<!-- 配置HiddenHttpMethodFilter过滤器实现PUT,DELETE请求 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class> org.springframework.web.filter.HiddenHttpMethodFilter </filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
GET请求
GET请求: <a href="rest/testRest/10">test RestGet请求</a><br><br> @RequestMapping(value="/testRest/{id}",method=RequestMethod.GET) public String testRestGet(@PathVariable Integer id){ System.out.println("GET请求,获取id为:" + id + "的对象!"); return SUCCESS; }
Post请求
POST请求: <form action="rest/testRest" method="post"> <input type="submit" value="post请求" /> </form> @RequestMapping(value="/testRest",method=RequestMethod.POST) public String testRestPost(){ System.out.println("POST请求,添加新的对象!"); return SUCCESS; }
PUT和DELETE请求想要使用必须添加上面的过滤器,并且在Post请求中加上隐藏域name="_method",value="PUT/DELETE"。
PUT,请求其实是由POST请求转换而来的。
PUT请求: <form action="rest/testRest" method="post"> <!-- 添加隐藏域,名称为_method,value为请求方式 --> <input type="hidden" name="_method" value="PUT" /> <input type="submit" value="put请求" /> </form> @RequestMapping(value="/testRest",method=RequestMethod.PUT) public String testRestPut(){ System.out.println("PUT请求,更新操作!"); return SUCCESS; }
DELETE请求
DELETE请求: <form action="rest/testRest/10000" method="post"> <!-- 添加隐藏域,名称为_method,value为请求方式 --> <input type="hidden" name="_method" value="DELETE" /> <input type="submit" value="delete请求" /> </form> @RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE) public String testRestDelete(@PathVariable Integer id){ System.out.println("DELETE请求,删除操作!" + id); return SUCCESS; }
重复一次第一章的内容在我们springmvc拦截所有请求会导致css,js,图片等不能引入我们可以这样解决:
<!--将非mapping配置下的请求交给默认的Servlet来处理--> <mvc:default-servlet-handler/> <!--如果添加了默认servlet,mvc请求将无效,需要添加annotation-driven--> <mvc:annotation-driven></mvc:annotation-driven>
위 내용은 SpringMVC 뷰와 REST 스타일의 상세 분석(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

SpringBoot와 SpringMVC의 차이점은 무엇입니까? SpringBoot와 SpringMVC는 웹 애플리케이션 구축을 위한 매우 인기 있는 두 가지 Java 개발 프레임워크입니다. 별도로 사용되는 경우가 많지만 차이점은 분명합니다. 우선, SpringBoot는 Spring 프레임워크의 확장 또는 향상된 버전으로 간주될 수 있습니다. 개발자를 돕기 위해 Spring 애플리케이션의 초기화 및 구성 프로세스를 단순화하도록 설계되었습니다.

SpringBoot와 SpringMVC는 Java 개발에 일반적으로 사용되는 두 가지 프레임워크입니다. 둘 다 Spring 프레임워크에서 제공되지만 기능과 사용법에 약간의 차이가 있습니다. 이번 글에서는 SpringBoot와 SpringMVC의 특징과 차이점을 각각 소개하겠습니다. 1. SpringBoot의 특징: 단순화된 구성: SpringBoot는 구성보다 관례의 원칙을 통해 프로젝트 구성 프로세스를 크게 단순화합니다. 프로젝트와 개발자가 요구하는 매개변수를 자동으로 구성할 수 있습니다.

spring과 springmvc의 차이점: 1. 위치 지정 및 기능 2. 핵심 기능 4. 확장성 세부 소개: 1. 포지셔닝 및 기능 Spring은 종속성 주입, 관점 지향 프로그래밍, 트랜잭션 관리 및 기타 기능을 제공하는 포괄적인 애플리케이션 개발 프레임워크이며, Spring MVC는 엔터프라이즈 수준 애플리케이션의 개발을 단순화하도록 설계되었습니다. Spring 프레임워크는 웹 애플리케이션 개발에 사용되며 MVC 패턴을 구현합니다. 2. 핵심 기능 등.

springboot와 springmvc의 차이점은 다음과 같습니다. 1. 다양한 구성 3. 다양한 개발 시간 5. 다양한 JAR 패키징 기능 구현 여부 제공되는 기능 8. 다양한 기능 9. 다양한 커뮤니티 및 문서 지원 10. 배포 설명이 필요한지 여부

인터셉터의 역할 SpringMVC의 인터셉터는 프로세서를 전처리하고 후처리하는 데 사용되는 서블릿 개발의 필터와 유사합니다. 인터셉터들은 일정한 순서로 체인으로 연결되는데, 이 체인을 인터셉터 체인(InterceptorChain)이라고 합니다. 인터셉트된 메서드나 필드에 액세스하면 인터셉터 체인의 인터셉터가 이전에 정의된 순서대로 호출됩니다. 인터셉터는 AOP 아이디어의 구체적인 구현이기도 합니다. 인터셉터와 필터의 차이점: 필터(Filter) 인터셉터(Intercepter)의 사용 범위는 서블릿 사양의 일부이며 모든 JavaWeb 프로젝트에서 사용할 수 있습니다.

인터넷의 발달로 웹 서비스가 점점 더 보편화되고 있습니다. 애플리케이션 프로그래밍 인터페이스인 JavaAPI는 다양한 애플리케이션 시나리오에 적응하기 위해 지속적으로 새 버전을 출시하고 있습니다. 널리 사용되는 오픈 소스 프레임워크인 SpringMVC는 웹 애플리케이션을 쉽게 구축하는 데 도움을 줍니다. 이 기사에서는 SpringMVC 구성, 컨트롤러 작성 및 사용을 포함하여 JavaAPI 개발에서 웹 서비스 처리에 SpringMVC를 사용하는 방법을 자세히 설명합니다.

SpringBoot와 SpringMVC의 유사점과 차이점 분석 SpringBoot와 SpringMVC는 Java 분야에서 매우 중요한 개발 프레임워크입니다. 둘 다 Spring 프레임워크의 일부이지만 사용법과 기능에는 몇 가지 명백한 차이점이 있습니다. 이 기사에서는 SpringBoot와 SpringMVC를 비교하고 이들 간의 유사점과 차이점을 분석합니다. 먼저 SpringBoot에 대해 알아봅시다. 스프링보
