Struts 외에도 주류 웹 MVC 프레임 워크의 주요 힘은 Spring MVC에서 2 위입니다. 따라서 이것은 또한 프로그래머가 마스터 해야하는 주류 프레임 워크이기도합니다. 더 많은 프레임 워크를 통해 변화하는 요구와 비즈니스를 다룰 때 자연스럽게 구현할 수있는 솔루션이 있습니다. 그러나 대부분의 웹 개발을 처리하기 위해 Spring MVC를 유연하게 사용하려면 구성과 원칙을 마스터해야합니다.
1. Spring MVC 환경 구성 : (봄 2.5.6 + hibernate 3.2.0)
1. JAR 패키지 소개
Spring 2.5.6 : Spring.jar, Spring-webmvc.jar, Commons-Logging.jar, cglib-nodep-2.1_3.jar
Hibernate 3.6.8 : hibernate3.jar, Hibernate-JPA-2.0-API-1.0.1.final.jar, antlr-2.7.6.jar, commons-collection-3.1, dom4j-1.6.1.jar, javassist-3.12.0.ga.jar, jta-1.1.jar, slf4J-1.6.1. SLF4J-NOP-1.6.4.jar, 해당 데이터베이스를위한 드라이버 JAR 패키지
SpringMVC는 DispatcherServlet을 기반으로 한 MVC 프레임 워크입니다. 각 요청에 액세스하는 첫 번째 것은 Dispatcherservlet입니다. DispatcherServlet은 각 요청 요청을 해당 핸들러에 전달할 책임이 있습니다. 핸들러가 처리 한 후에는 해당 뷰 (보기) 및 모델 (모델)을 반환합니다. 반환 된보기와 모델은 지정할 수 없습니다. 즉, 모델을 반환하거나보기 만 반환 할 수 있습니다.
Dispatcherservlet은 httpservlet에서 상속됩니다. SpringMVC는 DispatcherServlet을 기반으로하므로 먼저 DispatcherServlet을 구성하여 관리하려는 컨텐츠를 관리 할 수 있도록하겠습니다. httpservlet은 web.xml 파일에 선언됩니다.
<! -Spring MVC 구성-> <!-========================================================================================================================================================================================================================================================================= <Servlet-Class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <!-servlet.xml 구성 파일의 위치와 이름을 사용자 정의 할 수 있습니다. 기본값은 Web-INF 디렉토리에 있으며 이름은 [<servlet-name>]-servlet.xml, 예 : spring-servlet.xml <init-param> <param-name> contextConfigLocation </param-value>/web-inf/spring-servlet.xml </param-value> </init-param>-> </init-param>-> </waram> </init-param>-> <sparam- value> </waram- </load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> spring </servlet-name> <Url-pattern>*. do </url-pattern> </servlet-mapping> <!-Spring->-============================================================= -> <layer> <layerclass> org.springframework.web.context.contextloaderListener </laiseer-class> </laiseer> <!-Spring Bean의 구성 파일이있는 디렉토리를 지정합니다. 기본 구성은 Web-INF 디렉토리에 있습니다-> <CERTXT-PARAM> <Param-Name> ContextConfigLocation </param-name> <param-value> classPath : config/applicationcontext.xml </param- value> </context-param>
Spring-Servlet.xml 구성
Spring-Servlet이라는 이름은 위의 web.xml에서 <servlet-name> 태그와 일치하는 값이 Spring (<servlet-name> spring </servlet-name>)이고 Spring-Servlet의 파일 이름이기 때문입니다. SpringMVC로 변경되면 해당 파일 이름은 SpringMVC-Servlet.xml입니다.
<? 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 : p = "http://www.springframework.org/schema/p"xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springfrfringext.org/schema/schema/schema/schema/schema/schema http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.spramework.org/schema/tx/sprring-3.0.xsd http://www.springframework.org/schema/context <a href = "http://www.springframework.org/schema/context/spring-context-3.0.xsd"> http://www.springframework.org/schema/context/spring-context-3.0.xsd </a> <!-Enly Spring mvc annotation ~ <Context : Annotation-Config /> <!-주석을 사용하는 클래스가 위치한 곳에서 JAR 패키지를 설정합니다 .-> <Context : Component-Scan Base-Package = "Controller"> < /context : Component-Scan> <!-요청 및 주석 맵핑을 완료하십시오-> <Bean /> <!-회전 페이지의 경로 분해능. 접두사 : 접두사, 접미사 : 접미사 -> <bean p : prefix = "/jsp/"p : 접미사 = ". jsp"/> </beans>
DispatcherServlet은 일부 특수 콩을 사용하여 요청 요청을 처리하고 해당 뷰 반환을 생성합니다.
뷰의 반환과 관련하여 컨트롤러는 값을 되돌려 놓은 다음 반환되는 뷰를 전달하는 책임이 있습니다. View Parser에 의해 제어됩니다. JSP에서 일반적으로 사용되는 View Parser는 InternalResourceViewResovler이며 접두사와 접미사가 필요합니다.
위의 View Parser에서 컨트롤러가 블로그/색인을 반환하면 View Parser를 통해 구문 분석 된보기는 /jsp/blog/index.jsp입니다.
주로 컨트롤러에 대해 이야기합니다.
마킹에 @Controller를 사용하는 클래스는 컨트롤러입니다.
패키지 컨트롤러; import javax.servlet.http.httpservletrequest; import org.spramframework.stereotype.controller; import org.springframework.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmapping; // ActionPublic Class TestController Struts의 액션 맵핑 {@requestmapping ( "test/login.do") // 요청 URL 주소 매핑 요청과 유사합니다. struts의 액션 매핑 public String testLogin (@requestParam ( "username") 문자열 사용자 이름, 문자열 암호, HTTPSPERRAMESTERS에 대한 htTPSPERAMETORS가 꼭 봐 요청 URL 주소 맵에 포함 된 속성 = 거짓 = 거짓) // @RequestParam은 다음과 같이 축약 할 수 없다 : @RequestParam ( "username") if (! "admin".Equals (username) ||! "admin".Equals (password)) {return "loginError"; // Spring-Servlet 구성 파일에 구성된 접두사 및 접미사를 포함 할 필요가없는 페이지 경로 (기본값이 전달됩니다)를 점프합니다.} "loginsuccess"리턴; } @requestmapping ( "/test/login2.do") public modelandview testLogin2 (문자열 사용자 이름, 문자열 암호, int age) {// 요청 및 응답이 메소드에 나타날 필요가 없습니다. 사용할 수없는 경우 제거 할 수 있습니다. // 매개 변수 이름은 페이지 제어의 이름과 일치하며 매개 변수 유형이 자동으로 변환됩니다. (! "admin".Equals (userName) ||! "admin".Equals (password) || age <5) {return new ModelAndView ( "loginError"); // 수동으로 ModelANDVIEW (앞으로)를 작성하려면 (앞으로), 효과는 문자열을 반환하는 위의 메소드와 동일합니다} 새 ModelAndView (새 redirectView ( "../ index.jsp")); // 리디렉션을 통해 페이지 리디렉션 // 리디렉션을 쓰는 간단한 방법도 있습니다. // 새 ModelAndView ( "리디렉션 : ../ index.jsp"); } @requestmapping ( "/test/login3.do") public modelandview testLogin3 (사용자 사용자) {// 매개 변수는 Struts의 ActionForm과 유사한 양식 개체로도 지원됩니다. 사용자는 구성이 필요하지 않으며 String username = user.getusername ()을 쓸 수 있습니다. 문자열 암호 = user.getPassword (); int age = user.getage (); if (! "admin".equals (username) ||! "admin".equals (password) || age <5) {return new ModelAndView ( "loginError"); } 새 ModelAndView를 반환합니다 ( "loginsuccess"); } @Resource (name = "loginservice") // loginservice 인 applicationcontext.xml에서 bean의 ID를 가져 와서 private loginservice loginservice를 주입합니다. // 기존의 스프링 주입 방법과 동일하게 작성하고 설정 방법을 작성합니다. 이 혜택은 간결하고 깔끔하며 불필요한 코드 @requestmapping ( "/test/login4.do") public String testLogin4 (사용자) {if (loginservice.login (user) == false) {return "loginError"; } "loginsuccess"를 반환합니다. }}위의 네 가지 메소드 예제는 다른 요청 URL을 포함하는 컨트롤러입니다. URL 액세스를 사용하여 URL 매개 변수를 통해 다른 액세스 방법을 구별 할 수도 있습니다. 코드는 다음과 같습니다.
패키지 컨트롤러; import org.springframework.stereotyp.controller; import org.springframework.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod;@controller@requestmapping ( "/test2/login.do") // 지정된 *. class testController2 {@requestmapping public String testLogin (문자열 사용자 이름, 문자열 암호, int age) {// 매개 변수가 추가되지 않으면 /test2/login.do if ( "admin".Equals (username) ||! "admin". } "loginsuccess"를 반환합니다. } @requestmapping (params = "method = 1", method = requestmethod.post) public String testLogin2 (문자열 사용자 이름, 문자열 비밀번호) {// 다른 호출 메소드는 PARAMER 매개 변수 메소드의 값을 기준으로 구별됩니다. // 페이지 요청 유형을 지정할 수 있습니다. "loginerror"; } "loginsuccess"를 반환합니다. } @RequestMapping (params = "method = 2") public String testLogin3 (문자열 사용자 이름, 문자열 암호, int Age) {if (! "admin".Equals (username) || ""admin ".equals (password) <5) {return"loginerRor "; } "loginsuccess"를 반환합니다. }}실제로, 요청 맵핑은 클래스에서 상위 요청 요청 URL로 간주 될 수 있으며, 요청 맵핑은 메소드의 자식 요청 요청 URL로 간주 될 수 있습니다. 부모와 자식 요청 URL은 결국 페이지 요청 URL과 일치하기 위해 함께 연결됩니다. 따라서 요청 맵핑도 다음과 같이 쓸 수도 있습니다.
패키지 컨트롤러; import org.springframework.stereotyp.controller; import org.springframework.web.bind.annotation.requestmapping;@controller@requestmapping ( "/test3/") // 상위 요청 요청 urlpublic class testController3 {@requestmapping ( "login.do") // /test3/login.do public String testLogin (문자열 사용자 이름, 문자열 암호, int age) {if (! "admin".Equals (username) ||! "admin".Equals (password) <5) {return "loginError"; } "loginsuccess"를 반환합니다. }}SpringMVC의 일반적인 주석에는 @PathVariable, @requestParam, @PathVariable 태그가 메소드 매개 변수에 태그가 포함됩니다. 그것을 사용하여 표시된 매개 변수는 요청 경로를 사용하여 전달 될 수 있습니다. 다음 예를 참조하십시오
@requestmapping (value = "/comment/{blogid}", method = requestmethod.post) public void 댓글 (댓글 주석,@pathvariable int blogid, httpsession session, httpservletresponse 응답) ioexception {}이 예에서는 BlogID가 @PathVariable에 의해 요청 경로 변수로 표시됩니다. 요청이 /blog/comment/1.do 인 경우 BlogID의 값이 1임을 의미합니다. 마찬가지로 @requestparam도 값을 매개 변수로 전달하는 데 사용되지만 요청 매개 변수에서 값을 가져옵니다.
컨트롤러 메소드에서 웹 요소 httpservletrequest, httpservletResponse 및 httpsession이 필요하면 해당 매개 변수 만 제공하면 SpringMVC가 액세스하는 동안 자동으로 값을 전달하면됩니다. 그러나 시스템에 처음 액세스 할 때 세션이 호출되면 세션이 생성되지 않았기 때문에 오류 가보고됩니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.