1 소개
MVC 프레임 워크 란 무엇입니까?
MVC의 전체 이름은 Model-View-Controller의 약어 인 Model View Controller입니다. 소프트웨어 디자인 모델입니다. 비즈니스 로직, 데이터 및 인터페이스 디스플레이의 분리 메소드를 사용하여 코드를 구성하고 비즈니스 로직을 구성 요소로 수집합니다. 인터페이스 및 사용자 상호 작용을 개선하고 개인화하는 동안 비즈니스 로직을 다시 작성할 필요는 없습니다. MVC는 논리적 그래픽 사용자 인터페이스 구조에서 전통적인 입력, 처리 및 출력 기능을 매핑하기 위해 고유하게 개발되었습니다.
MVC (Model-View-Controller)는 디자인 인터페이스 응용 프로그램을 기반으로 한 잘 알려진 설계 패턴입니다. 응용 프로그램에서 모델, 뷰 및 컨트롤러의 역할을 분리하여 주로 인터페이스에서 비즈니스 로직을 분리합니다. 일반적 으로이 모델은 뷰 계층에서 응용 프로그램 데이터를 캡슐화 할 책임이 있습니다. 보기에는이 데이터 만 표시되며 비즈니스 로직이 포함되어 있지 않습니다. 컨트롤러는 비즈니스 로직을 처리하기 위해 사용자로부터 요청을 받고 백그라운드 서비스 (관리자 또는 DAO)를 호출 할 책임이 있습니다. 처리 후 배경 비즈니스 계층은 뷰 계층에 표시 될 일부 데이터를 반환 할 수 있습니다. 컨트롤러는이 데이터를 수집하고 뷰 레이어에 표시되도록 모델을 준비합니다. MVC 모델의 핵심 아이디어는 비즈니스 로직을 인터페이스와 분리하여 서로 영향을 미치지 않고 개별적으로 변경할 수 있도록하는 것입니다.
SpringMVC 응용 프로그램에서, 모델은 일반적으로 비즈니스 계층에서 처리되고 지속성 계층에서 지속 된 Pojo 객체로 구성됩니다. 보기는 일반적으로 JSP 표준 태그 라이브러리 (JSTL)로 작성된 JSP 템플릿입니다. 컨트롤러 부분은 Dispatcherservlet에서 관리 하며이 자습서에서 자세히 알아 보겠습니다.
일부 개발자는 비즈니스 계층 및 DAO 계층 클래스가 MVC 모델 구성 요소의 일부라고 생각합니다. 나는 이것에 대해 다른 의견을 가지고 있습니다. 비즈니스 계층과 DAO 계층 클래스가 MVC 프레임 워크의 일부라고 생각하지 않습니다. 일반적으로 웹 응용 프로그램은 3 층 아키텍처, 즉 데이터 서비스 표현입니다. MVC는 실제로 프레젠테이션 계층의 일부입니다.
디스패처 서블릿 (스프링 컨트롤러)
가장 간단한 Spring MVC 응용 프로그램에서 컨트롤러는 Java Web Deployment Description 파일 (예 : web.xml 파일)에서 구성 해야하는 유일한 서블릿입니다. 스프링 MVC 컨트롤러 - 일반적으로 디스패처 서플렛으로 알려진 프론트 엔드 컨트롤러 설계 패턴을 구현합니다. 또한 각 웹 요청은 전체 요청 수명주기를 관리 할 수 있도록이를 통과해야합니다.
웹 요청이 Spring MVC 응용 프로그램으로 전송되면 Dispatcher Servlet은 먼저 요청을받습니다. 그런 다음 스프링 웹 응용 프로그램 컨텍스트 (예 : 실제 요청 처리 컨트롤러 및 뷰 레졸버)에서 구성된 구성 요소를 구성하거나 주석 구성을 사용하여 요청 처리가 필요합니다.
스프링 3.0에서 컨트롤러 클래스를 정의하며 @Controller 주석으로 표시되어야합니다. @Controller 주석이있는 컨트롤러가 요청을 받으면 요청을 처리하는 적절한 처리기 방법을 찾습니다. 이를 위해서는 컨트롤러가 하나 이상의 핸들러 매핑을 통해 각 요청을 핸들러 메소드에 매핑해야합니다. 이를 위해서는 컨트롤러 클래스의 메소드를 @requestmapping 주석으로 장식하여 처리 방법을 만들어야합니다.
핸들러 방법이 요청을 처리 한 후에는 핸들러 메소드의 리턴 값과 동일한보기 이름을 가진 컨트롤을 컨트롤로 위임합니다. 유연한 방법을 제공하기 위해, 핸들러 메소드의 반환 값은보기의 구현이 아니라 논리적보기, 즉 파일 확장자가 없습니다. 이러한 논리적 뷰를 올바른 구현에 매핑하고 이러한 구현을 컨텍스트 파일에 작성하여 핸들러 클래스를 요청하는 코드를 수정하지 않고도 뷰 레이어 코드를 쉽게 변경할 수 있습니다.
논리적 이름의 올바른 파일과 일치하는 것은 View Resolver의 책임입니다. 컨트롤러 클래스가보기 구현에 뷰 이름을 구문 분석 한 후. 보기에 의해 구현 된 설계에 따라 해당 객체를 렌더링합니다.
2 개의 JAR 패키지를 가져옵니다
적어도 이것들이 있어야합니다.
3 구성 파일
3.1 web.xml
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://java.sun.com/xml/ns/javaee" xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_3_0.xsd"3. ""webapp_ "" " <display-name> springmvc_helloworld </display-name> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> index.htm </welcome-file> <welcome-file> index.jsp </웰컴-파일> <welcome-file> default.html </welcome-file> default.htm.ht.ht.ht.ht.ht.ht.ht.ht.ht.ht.ht.ht <welcome-file> default.jsp </welcome-file> </welcome-file-list> <!-스프링 MVC 용 서블리-> <!-초기화 후 Dispatcherservlet은/web-inf/에서 springmvc-servlet.xml 파일을 직접 찾습니다. Servlet-Name 태그의 매개 변수 정의는 XML 파일에 해당해야합니다-> <Servlet> <Servlet-name> SpringMvc </servlet-mvc </servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <load-on-startup> 1 </servlet> <servlet-mapping> <Servlet-name> springmvc </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name> contextConfiglocation </param-name> <param-value> classPath : ApplicationContext.xml </param-value> </context-param> <Leater-class> org.springframework.web.context.contextloaderListener </laiseer-class> </liareer> </web-app>
3.2 SpringMVC-Servlet.xml
이 파일의 이름은 web.xml에 구성된 Dispatcherservlet의 <servlet-name> </servlet-name>에 의해 결정됩니다. 경로는 컨텍스트/Web-Inf/이며 주로 논리적보기 이름과 컨트롤러가 반환 한 물리적보기 간의 해당 관계를 구성합니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : aop = "http://www.springframework.org/schema/aop"xmlns : tx = "http://www.springframework.org/schema/tx"xmlns : context = "http://www.springframwork.org/schema/comext" xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <! <!-자동 스캔 패키지-> <context : component-scan base-package ="com.lin.helloorld.contoller. id = "viewResolver"> <속성 이름 = "viewClass"value = "org.springframework.web.servlet.view.jstlview" /> <!-컨트롤러는 Prich-suffix를 처리 한 후 논리적보기 이름을 반환합니다. </bean> </beans>
4 도메인 클래스를 작성하십시오
일부 제출 데이터를 캡슐화하는 데 사용됩니다
packing com.lin.helloworld.domain; public class helloworld {private String data; public helloworld () {super ();} public helloworld (string data) {super (); this.data = data;} public string getData () {return data;} public void setdata (string data) {data;}}@everdure public void setdata (return data) "helloorld [data =" + data + "]";}} 5 쓰기 컨트롤러
이것은 MVC의 컨트롤러입니다. struts2와 다른 점은 그것이 메소드 수준의 절편이고 struts2는 클래스 수준의 절편이라는 것입니다.
package com.lin.helloworld.controller; import org.spramepramework.stereotyp.controller; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.annotation.requestmapping; lemport org.springview.web.werverflework.web com.lin.helloworld.domain.hellowld; @controllerPublic 클래스 HelloWorldController {// here/hello는 struts2 // view @requestmapping ( "/hello")에 문자열을 반환하는 것과 동일합니다. @requestmapping ( "/hello") public model view sayhello () {// 결과적으로 구성된 첫 번째 매개 변수의 첫 번째 매개 변수. namemodelandView modelView = new ModelAndView ( "helloWorld", "msg", "helloWorld !!!"); return modelAndView;} // 객체를 view //@modelattribute ( "obj")로 반환합니다. struts2 : // struts2는 양식 제출을 처리합니다 : <input name = "obj.data"// 제출 된 데이터는 OBJ 객체의 데이터에 캡슐화됩니다. // springmvc는 다음과 같습니다. ModelAndView SaysHelloWorld (@ModelAttribute ( "obj") helloworld obj) {System.out.println (obj.toString ()); ModelAndView ModelView = New ModelAndView ( "HelloWorld", "OBJ", Return ModelAndView;}}}}}6 조회
<%@ page language = "java"import = "java.util.*"pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.get.gteRverport () <! "-// w3c // dtd html 4.01 전환 // en"> <html> <head> <base href = "<%= basepath%>"rel = "외부 nofollow"> <title> 나의 jsp 'helloworld.jsp'시작 페이지 </title> <meta http-equiv = "no-cache" "no-cache" "no-cache" http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"rel = "external nofollow"> -> </head> <body> helloworld! 이것은 스프링 MVC 프레임 워크 예입니다. <br> $ {msg} <hr/> <form action = "helloObj"method = "post"> <!- 여기에서 양식 제출은 struts2와 다릅니다. 이름 = "data"는 객체의 출원에 자동으로 해당합니다 -> <input type = "text"name = "data"size = "30"/> <br/> <입력 유형 = "제출"value = "제출"/> </form> <hr/> $ {obj.data} </body> </html>7 디렉토리 구조
요약
위의 내용은이 기사의 SpringMVC 항목 예제에 관한 것이므로 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
SpringMVC 간단한 로그인 예제의 Java 프로그래밍 구현
SpringMVC 프로그래밍 컨트롤러 인터페이스를 사용하여 컨트롤러 인스턴스 코드를 구현합니다.
SpringMVC 인터셉터가 모니터링 세션이 만료되는지 여부에 대한 자세한 설명
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다.