Struts 외에도 주류 웹 MVC 프레임 워크에는 현재 Spring MVC가 있습니다. 이는 주로 Spring MVC가 구성하기가 비교적 간단하고 사용하기가 매우 명확하기 때문입니다. 매우 유연하고 스프링과 잘 통합되며 스트럿보다 편안한 API를 더 잘 지원합니다.
Mybatis는 업그레이드 된 Ibatis 버전입니다. 최대 절전 모드의 오래된 라이벌로서 SQL, 저장 프로 시저 및 고급 매핑을 사용자 정의 할 수있는 지속적인 레이어 프레임 워크입니다.
최대 절전 모드와의 주요 차이점은 Mybatis가 반자동 화 된 반면 최대 절전 모드는 완전히 자동이므로 응용 프로그램 요구 사항이 점점 더 복잡해지면 자동화 된 SQL이 더 서투른 것으로 보입니다.
얼마 전에 프로젝트를 시작했기 때문에 SpringMVC를 사용하여 수행하고 싶었 기 때문에 프레임 워크를 연습 태도와 통합하는 게임을 시작했습니다. 프레임을 자주 구축하는 사람들은 프레임 빌딩의 핵심이 구성 파일이라는 것을 알아야합니다. 따라서 주로 몇 가지 구성 파일 코드를 게시합니다. 구성 파일을 작성한 후에도 마찬가지입니다. 오류를 실행하고 항아리를 추가했습니다. 다음은 내가 사용하는 항아리 패키지입니다 (가장 적은 것).
참고 : 위의 그림에는 추가 항아리가 있습니다. 예를 들어, 내가 사용하는 데이터베이스 연결 풀은 Alibaba의 드루이드 및 로그 프레임 기반 로그백이므로 관련 항아리가 소개됩니다. 이 두 프레임 워크의 사용 및 구성은 매우 간단하므로 여기에서 자세히 설명하지 않습니다.
1. SpringMVC 통합
SpringMyBatis-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 : context = "http://www.springframework.org/schema/context"xmlns : mvc = "http://www.springframework.org/schema/mvc"xsi : skemalocation = "http://www.spremframframwork.org/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.sprampramework.org/schema/context/spring-conxt.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-enabl mvc spring anotational ren> <! 이름, 주석이 달린 컨트롤러와 같은 구성 요소의 자동 감지-> <context : component-scan base-package = "com.alibaba.controller" /> <context : com.alibaba.service " /> <!-view 파일의 전망을 정의합니다. name = "prefix"value = "/web-inf/jsp/"/> <property name = "접미어"value = ". jsp"/> <!-확장자를 기반으로 뷰 해석 클래스의 논리를 구현하는 데 편리 할 수 있습니다-> </bean> <!-interceptor, 다중 인터셉터, 순차적으로 실행-> <mvc> interceptor> <mvc> <mvc> <mvc : <mvc> 경로-> <mvc : 매핑 경로 = "/user/**"/> <mvc : 매핑 경로 = "/test/**"/> <ean bean> </bean> </mvc : interceptor> <!-여러 인터셉터를 설정할 때 먼저 순서에서 사전 핸드 방법을 호출 한 다음 후체 및 후체 수용 방법을 호출하십시오. </beans>
2. mybatis 통합
Spring-dao.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 : mybatis = "http://mybatis.org/schema/mybatis-spring"xmlns : context = "http://www.springframework.org/schema/context"xsi : skemalocation = "http://www.spramframwork.org/schema http://www.springframework.org/schema/beans/spring-beans.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring http://wwww.spramfram.org/contett http://www.springframework.org/schema/context/spring-context.xsd "> <!-이 패키지의 클래스는 주석을 지원하며, {@code mybatis mapper}로 처리 될 것임을 나타냅니다. BASE-PACKAGE = "COM.ALIBABA.DAO"/> <!-속성 파일 소개-> <Context : Context : Property-Placeholder 위치 = "ClassPath : Configuration.Properties"/> <!-데이터베이스 연결-> <Bean id = "DataSource"init-method = "init"avent "destrove-method ="close "} vals"url "$ el"jdbc. 이름 = "username"value = "$ {jdbc.username}"/> <property name = "production name ="password "value ="$ {jdbc.password} "/> <!-초기화 크기, 최소, 최대-> <속성 이름 ="value> </value> <속성> <value> 5 </value> </value "> 이름 = "minidle"> <value> 1 </value> </property> <!-연결 시간을 대기 할 시간을 구성합니다-> <속성 이름 = "maxwait"> <value "> value> 60000 </value> </property> <!-통계 인터셉트를위한 필터를 구성합니다-> <propertion name ="filters "> value> </propertion> </value> </value> </value> 밀리 초로 닫아야하는 유휴 연결을 감지합니다 .-> <속성 이름 = "TimeBetweenevictionRunsmillis"> <value> 60000 </value> </property> <!-밀리 초에서 생존하기위한 최소 시간을 milliseconds-> <propertable name = "minevictabledletimemillis"> 300000> </300000> </300000> </300000> </value> </value> </value> </value>. 이름 = "validationQuery"> <alue> 선택 'X'</value> </value> </property> <속성 이름 = "testwhileIdle"> <value> </value> </property> <property name = "testonborring"> value> false> </property> <property name = "rectonreturn"> <value> false> </property> <속성 이름 = "poolpreparedStatements"> <alue> true </value> </value> </value> <property name = "maxopenpreparedStatements"> <value> 20 </value> </property>-> </bean> <!-myBatis 구성-> <bean id = "sqlsessionCactory "> <property name ="rep = "rep ="</bean> "> 3.web.xml은 SpringMVC 및 MyBatis를 통합합니다
<? 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" xmlns : web = "http://java.sun.com/xml/ns/javaee"xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version = "3.0"> <!-서브 렛은 Tomcat 등의 컨테이너에 제공됩니다. / 정적 / 디렉토리. 예를 들어, http : //localhost/foo.css를 방문했을 때, 이제 http : //localhost/static/foo.css-> <!-정적 파일을 가로 채지 마십시오-> <servlet-mapping> <servlet-name> default </servlet-name> <url-pattern>/js/*</url-pattern> <Url-pattern>/css/*</url-pattern> <url-pattern>/images/*</url-pattern> <url-pattern>/fonts/*</url-pattern> </servlet-mapping> <!-문자 구성-> <filter> <filter> <filter-name> Encodingfilter </filter-name> <filter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <init-param> incoding </param-name> <param-value> utf-8 </param-value> <init-param> init-param> <param-name> force-name> <Param-value> true </param- value> </init-param> </filter> <filter-mapping> <filter-name> encodingfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-파견자를 초기화 할 때 [servlet-name]라는 파일을 찾습니다. Web-INF 디렉토리 및 관련 콩을 정의하고 전 세계적으로 정의 된 콩을 무시하고-> <Servlet> <Servlet-name> SpringMyBatis </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-startup> 1 </load-servletup> 1 </servletup>. <Servlet-name> SpringMyBatis </servlet-name> <!-모든 요청은 dispatcherservlet-> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name> contextConfiglocation </param-name>/web-inf/sprigg/spring-*. </context-param> <layer> <layer-class> org.springframework.web.context.contextloaderListener </Leater-Class> </Learter> <!-Druid 웹 모니터링-> <servlet> <servlet-name> druidstatview </servlet-name> <Servlet-class> com.alibaba.druid.support.http.statviewservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> druidstatview </servlet-name> <url-pattern>/druid/*</url-pattern> </erver-mapping> <Orror-Pode> 404 <위치>/error/404.jsp </location> </error-page> <Error-Page> <Error-Code> 500 </error-code> <위치> /error/500.jsp </location> </error-page> </web-app>
4.Logback.xml 로그 구성
<? xml version = "1.0"encoding = "utf-8"?> <configuration> <applender name = "stdout"> <encoder> <pattern> %d {hh : mm : ss.sss} [ %스레드] %-5level %logger {36}- %msg %n </encoder> </applender> </applender> 레벨 = "TRACE" /> <logger name = "com.alibaba.controller.testController"level = "trace" /<logger name = "org.sprameframework.web.servlet.dispatcherServlet"level = "debug" /> <logger name = "druid.sql"level = "infor"! Spring-Config, SQL 로그가 표시되지 않습니다. 로그백은 단지 slf4j-> <root level = "debug"> <appender-ref ref = "stdout"/> </root> </configuration입니다. 5. 구성 .properties 구성
jdbc.url = jdbc/: mysql/: // localhost/: 3306/druid? useunicode/= true & charac
6. 건설이 성공했는지 여부를 테스트하십시오. 배경 코드
먼저 로그인하고 암호화를 사용하면 제거 할 수 있습니다
패키지 com.alibaba.controller; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; import org.apache.commons.codec.digest.digestutils; import org.slf4j.logger; org.slf4j.loggerfactory; org.springframework.stereotyp.controller import; org.springframework.web.bind.annotation.requestmapping; org.springframework.web.bind.annotation.requestmethod; org.springframework.web.bind.annotation.requestparam; com.alibaba.model.user import; import com.alibaba.service.userservice; import com.alibaba.util.requestutil; / ** * @author tfj * 2014-7-26 */ @Controller public class SystemController {private final logger log = loggerfactory.getLogger (SystemController.class); @Resource private userervice userervice; @requestmapping (value = "/", method = requestmethod.get) public String home () {log.info ( "홈페이지로 돌아 가기!"); "색인"을 반환합니다. } @requestMapping (value = "/test/hello", method = requestMethod.get) public String testHello () {log.info ( "testHello 메소드 실행!"); "testhello"를 반환합니다. } @requestmapping (value = "/login", method = requestmethod.post) public String testLogin (httpservletRequest request, @requestParam String username, @requestparam string password) {log.info ( "testLogin metchetme 실행!"); user user = userervice.finduserByName (사용자 이름); if (user! = null) {if (user.getPassword (). equals (digestutils.md5Hex (password)) {request.getSession (). setAttribute ( "userId", user.getId ()); request.getSession (). setAttribute ( "사용자", 사용자 이름); "returecrect :" + requestUtil.retrievesavedRequest (); // 액세스 페이지로 건너 뛰기} else {log.info ( "Password Error"); request.getSession (). setAttribute ( "메시지", "사용자 이름 및 비밀번호가 올바르지 않아 다시 로그인하십시오"); "로그인"을 반환합니다. }} else {log.info ( "사용자 이름이 존재하지 않음"); request.getSession (). setAttribute ( "message", "사용자 이름이 존재하지 않고 다시 로그인하십시오"); "로그인"을 반환합니다. }}} 나는 서비스와 모델에 대해 쓰지 않을 것입니다. 나는 Mybatis의 Mapper 클래스 맵에 대해 쓸 것입니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper Namespace ="com.alibaba.dao.dao.dao.dao.dao.dao. id = "findUserByName"resultType = "com.alibaba.model.user"> SELECT ID, 사용자 이름, SYSUSER에서 username = #{username} </select> </mapper> 7. 프론트 데스크 JSP는 주로 로그인과 로그인이 성공한 페이지이므로 쓰지 않아도됩니다.
스크린 샷 게시 :
이 시점에서 SpringMVC+MyBatis의 통합이 성공적이었습니다. 이후 복잡한 기능을 추가 할 수 있습니다
주목해야 할 것
1. 프레임 워크에서 드루이드 및 로그백의 구성은 공식 웹 사이트에서 복사되므로 모두 가장 기본적입니다. 독자는이를 무시하거나 C3P0 및 LOG4J와 같이 독자가 익숙한 데이터베이스 구성 요소 및 로그 프레임 워크로 대체 할 수 있습니다.
2. 코드에는 권한 관리가 추가되었습니다. 즉, 액세스하기 전에 로그인 한 다음 로그인 한 후에 액세스 할 페이지로 이동해야합니다. SpringMVC의 권한 관리는 http://www.vevb.com/article/99569.htm을 참조하십시오.
3.이 기사는 테스트 코드에서 벗어난 가장 단순하고 가장 기본적인 코드입니다. 제거되지 않은 일부 지역을 용서 해주세요.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.