Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
SSM¿ò¼Ü¡ª¡ªÏêϸÕûºÏ½Ì³Ì£¨Spring+SpringMVC+MyBatis£©
 
  31585  次浏览      27
 2019-4-19  
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcnblogs,ÎÄÕÂÖÐÖ÷Òª½éÉÜÁË»ù±¾µÄ¸ÅÄÕûºÏ»·¾³ÅäÖ㬲âÊԵȽéÉܽÏΪÏêϸ£¬ÏêÇéÇë¿´ÏÂÎÄ¡£

 

1¡¢»ù±¾¸ÅÄî

1.1¡¢Spring

SpringÊÇÒ»¸ö¿ªÔ´¿ò¼Ü£¬SpringÊÇÓÚ2003 ÄêÐËÆðµÄÒ»¸öÇáÁ¿¼¶µÄJava ¿ª·¢¿ò¼Ü£¬ÓÉRod Johnson ÔÚÆäÖø×÷Expert One-On-One J2EE Development and DesignÖвûÊöµÄ²¿·ÖÀíÄîºÍÔ­ÐÍÑÜÉú¶øÀ´¡£ËüÊÇΪÁ˽â¾öÆóÒµÓ¦Óÿª·¢µÄ¸´ÔÓÐÔ¶ø´´½¨µÄ¡£SpringʹÓûù±¾µÄJavaBeanÀ´Íê³ÉÒÔǰֻ¿ÉÄÜÓÉEJBÍê³ÉµÄÊÂÇ顣Ȼ¶ø£¬SpringµÄÓÃ;²»½öÏÞÓÚ·þÎñÆ÷¶ËµÄ¿ª·¢¡£´Ó¼òµ¥ÐÔ¡¢¿É²âÊÔÐÔºÍËÉñîºÏµÄ½Ç¶È¶øÑÔ£¬ÈκÎJavaÓ¦Óö¼¿ÉÒÔ´ÓSpringÖÐÊÜÒæ¡£ ¼òµ¥À´Ëµ£¬SpringÊÇÒ»¸öÇáÁ¿¼¶µÄ¿ØÖÆ·´×ª£¨IoC£©ºÍÃæÏòÇÐÃæ£¨AOP£©µÄÈÝÆ÷¿ò¼Ü¡£

1.2¡¢SpringMVC

Spring MVCÊôÓÚSpringFrameWorkµÄºóÐø²úÆ·£¬ÒѾ­ÈÚºÏÔÚSpring Web FlowÀïÃæ¡£Spring MVC ·ÖÀëÁË¿ØÖÆÆ÷¡¢Ä£ÐͶÔÏó¡¢·ÖÅÉÆ÷ÒÔ¼°´¦Àí³ÌÐò¶ÔÏóµÄ½ÇÉ«£¬ÕâÖÖ·ÖÀëÈÃËüÃǸüÈÝÒ×½øÐж¨ÖÆ¡£

1.3¡¢MyBatis

MyBatis ±¾ÊÇapacheµÄÒ»¸ö¿ªÔ´ÏîÄ¿iBatis, 2010ÄêÕâ¸öÏîÄ¿ÓÉapache software foundation Ç¨ÒÆµ½ÁËgoogle code£¬²¢ÇÒ¸ÄÃûΪMyBatis ¡£MyBatisÊÇÒ»¸ö»ùÓÚJavaµÄ³Ö¾Ã²ã¿ò¼Ü¡£iBATISÌṩµÄ³Ö¾Ã²ã¿ò¼Ü°üÀ¨SQL MapsºÍData Access Objects£¨DAO£©MyBatis Ïû³ýÁ˼¸ºõËùÓеÄJDBC´úÂëºÍ²ÎÊýµÄÊÖ¹¤ÉèÖÃÒÔ¼°½á¹û¼¯µÄ¼ìË÷¡£MyBatis ʹÓüòµ¥µÄ XML»ò×¢½âÓÃÓÚÅäÖúÍԭʼӳÉ䣬½«½Ó¿ÚºÍ Java µÄPOJOs£¨Plain Old Java Objects£¬ÆÕͨµÄ Java¶ÔÏó£©Ó³Éä³ÉÊý¾Ý¿âÖеļǼ¡£

2¡¢¿ª·¢»·¾³´î½¨ÒÔ¼°´´½¨Maven WebÏîÄ¿

3¡¢SSMÕûºÏ

ÏÂÃæÖ÷Òª½éÉÜÈý´ó¿ò¼ÜµÄÕûºÏ£¬ÖÁÓÚ»·¾³µÄ´î½¨ÒÔ¼°ÏîÄ¿µÄ´´½¨£¬²Î¿´ÉÏÃæµÄ²©ÎÄ¡£Õâ´ÎÕûºÏÎÒ·ÖÁË2¸öÅäÖÃÎļþ£¬·Ö±ðÊÇspring-mybatis.xml£¬°üº¬springºÍmybatisµÄÅäÖÃÎļþ£¬»¹ÓиöÊÇspring-mvcµÄÅäÖÃÎļþ£¬´ËÍâÓÐ2¸ö×ÊÔ´Îļþ£ºjdbc.propertisºÍlog4j.properties¡£ÍêÕûĿ¼½á¹¹ÈçÏ£¨×îºó¸½ÉÏÔ´ÂëÏÂÔØµØÖ·£©£º

ʹÓÿò¼ÜµÄ°æ±¾£º

Spring 4.0.2 RELEASE

Spring MVC 4.0.2 RELEASE

MyBatis 3.2.6

3.1¡¢MavenÒýÈëÐèÒªµÄJAR°ü

ÔÚpom.xmlÖÐÒýÈëjar°ü

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javen.maven01</groupId>
<artifactId>maven01</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maven01 Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
<!-- spring°æ±¾ºÅ -->
<spring.version>4.0.2.RELEASE</spring.version>
<!-- mybatis°æ±¾ºÅ -->
<mybatis.version>3.2.6</mybatis.version>
<!-- log4jÈÕÖ¾Îļþ¹ÜÀí°ü°æ±¾ -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- ±íʾ¿ª·¢µÄʱºòÒýÈ룬·¢²¼µÄʱºò²»»á¼ÓÔØ´Ë°ü -->
<scope>test</scope>
</dependency>
<!-- <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency> -->

<!-- springºËÐİü -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatisºËÐİü -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring°ü -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>

<!-- µ¼Èëjava ee jar °ü -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>

<!-- µ¼ÈëMysqlÊý¾Ý¿âÁ´½Ójar°ü -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<!-- µ¼ÈëdbcpµÄjar°ü£¬ÓÃÀ´ÔÚapplicationContext.xmlÖÐÅäÖÃÊý¾Ý¿â -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>

<!-- JSTL±êÇ©Àà -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- ÈÕÖ¾Îļþ¹ÜÀí°ü -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>


<!-- ¸ñʽ»¯¶ÔÏ󣬷½±ãÊä³öÈÕÖ¾ -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>


<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- Ó³ÈëJSON -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- ÉÏ´«×é¼þ°ü -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>

</dependencies>

<build>
<finalName>maven01</finalName>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.8.v20150217</version>
<configuration>
<httpConnector>
<port>80</port>
</httpConnector>
<stopKey>shutdown</stopKey>
<stopPort>9966</stopPort>
</configuration>
</plugin>
</plugins>
</build>

</project>

3.2¡¢ÕûºÏSpringMVC

3.2.1¡¢ÅäÖÃspring-mvc.xml

ÅäÖÃÀïÃæµÄ×¢ÊÍÒ²ºÜÏêϸ£¬Ö÷ÒªÊÇ×Ô¶¯É¨Ãè¿ØÖÆÆ÷£¬ÊÓͼģʽ£¬×¢½âµÄÆô¶¯ÕâÈý¸ö¡£

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns= "http://www.springframework.org/ schema/beans"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema -instance" xmlns:p= "http://www.springframework.org/ schema/p"
xmlns:context= "http://www.springframework.org/ schema/context"
xmlns:mvc= "http://www.springframework.org/ schema/mvc"
xsi:schemaLocation= "http://www.springframework.org /schema/beans
http://www.springframework.org /schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/ schema/context
http://www.springframework.org/ schema/context/spring-context-3.1.xsd
http://www.springframework.org/ schema/mvc
http://www.springframework.org/ schema/mvc/spring-mvc -4.0.xsd">
<!-- ×Ô¶¯É¨Ãè¸Ã°ü£¬Ê¹SpringMVCÈÏΪ°üÏÂÓÃÁË@controller×¢½âµÄÀàÊÇ¿ØÖÆÆ÷ -->
<context:component-scan base-package="com.javen.controller" />
<!-- À©³äÁË×¢½âÇý¶¯£¬¿ÉÒÔ½«ÇëÇó²ÎÊý°ó¶¨µ½¿ØÖÆÆ÷²ÎÊý -->
<mvc:annotation-driven/>
<!-- ¾²Ì¬×ÊÔ´´¦Àí css js imgs -->
<mvc:resources location= "/resources/**" mapping="/resources"/>

<!--±ÜÃâIEÖ´ÐÐAJAXʱ£¬·µ»ØJSON³öÏÖÏÂÔØÎļþ -->
<bean id= "mappingJacksonHttpMessageConverter"
class= "org.springframework.http .converter.json.MappingJackson HttpMessageConverter">
<property name= "supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
</list>
</property>
</bean>
<!-- Æô¶¯SpringMVCµÄ×¢½â¹¦ÄÜ£¬Íê³ÉÇëÇóºÍ×¢½âPOJOµÄÓ³Éä -->
<bean
class="org.springframework .web.servlet.mvc.annotation .AnnotationMethodHandlerAdapter">
<property name= "messageConverters">
<list>
<ref bean= "mappingJacksonHttpMessageConverter" /> <!-- JSONת»»Æ÷ -->
</list>
</property>
</bean>

<!-- ÅäÖÃÎļþÉÏ´«£¬Èç¹ûûÓÐʹÓÃÎļþÉÏ´«¿ÉÒÔ²»ÓÃÅäÖ㬵±È»Èç¹û²»Å䣬ÄÇôÅäÖÃÎļþÖÐÒ²²»±ØÒýÈëÉÏ´«×é¼þ°ü -->
<bean id= "multipartResolver"
class="org.springframework .web.multipart.commons .CommonsMultipartResolver">
<!-- ĬÈϱàÂë -->
<property name ="defaultEncoding" value="utf-8" />
<!-- Îļþ´óС×î´óÖµ -->
<property name ="maxUploadSize" value="10485760000" />
<!-- ÄÚ´æÖеÄ×î´óÖµ -->
<property name="maxInMemorySize" value="40960" />
<!-- ÆôÓÃÊÇΪÁËÍÆ³ÙÎļþ½âÎö£¬ÒԱ㲶»ñÎļþ´óСÒì³£ -->
<property name="resolveLazily" value="true"/>
</bean>

<!-- ÅäÖÃViewResolver ¡£¿ÉÓöà¸öViewResolver ¡£Ê¹ÓÃorderÊôÐÔÅÅÐò¡£ InternalResourceViewResolver ·ÅÔÚ×îºó-->
<bean class="org.springframework.web .servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"></property>
<property name="mediaTypes">
<map>
<!-- ¸æËßÊÓͼ½âÎöÆ÷£¬·µ»ØµÄÀàÐÍΪjson¸ñʽ -->
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="htm" value="text/htm" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- ModelAndViewÀïµÄÊý¾Ý±ä³ÉJSON -->
<bean class="org.springframework.web .servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true"></property>
</bean>

<!-- ¶¨ÒåÌø×ªµÄÎļþµÄǰºó׺ £¬ÊÓͼģʽÅäÖÃ-->
<bean class= "org.springframework.web .servlet.view.InternalResourceViewResolver">
<!-- ÕâÀïµÄÅäÖÃÎÒµÄÀí½âÊÇ×Ô¶¯¸øºóÃæactionµÄ·½·¨returnµÄ×Ö·û´®¼ÓÉÏǰ׺ºÍºó׺£¬±ä³ÉÒ»¸ö ¿ÉÓõÄurlµØÖ· -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

 

3.2.2¡¢ÅäÖÃweb.xmlÎļþ

ÅäÖõÄspring-mvcµÄServlet¾ÍÊÇΪÁËÍê³ÉSpringMVC+MAVENµÄÕûºÏ¡£

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 /web-app_3_0.xsd"
version="3.0">
<display-name>Archetype Created Web Application</display-name>
<!-- SpringºÍmybatisµÄÅäÖÃÎļþ -->
<!-- <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param> -->
<!-- ±àÂë¹ýÂËÆ÷ -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework .web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring¼àÌýÆ÷ -->
<!-- <listener>
<listener-class>org.springframework.web .context.ContextLoaderListener</listener-class>
</listener> -->
<!-- ·ÀÖ¹SpringÄÚ´æÒç³ö¼àÌýÆ÷ -->
<!-- <listener>
<listener-class> org.springframework .web.util.IntrospectorCleanupListener </listener-class>
</listener> -->

<!-- Spring MVC servlet -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class > org.springframework .web.servlet.DispatcherServlet </servlet-class>
<init-param>
<param-name> contextConfigLocation</param-name>
<param-value> classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- ´Ë´¦¿ÉÒÔ¿ÉÒÔÅäÖóÉ*.do£¬¶ÔÓ¦strutsµÄºó׺ϰ¹ß -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>

</web-app>

3.2.3¡¢Log4jµÄÅäÖÃ

ΪÁË·½±ãµ÷ÊÔ£¬Ò»°ã¶¼»áʹÓÃÈÕÖ¾À´Êä³öÐÅÏ¢£¬Log4jÊÇApacheµÄÒ»¸ö¿ª·ÅÔ´´úÂëÏîÄ¿£¬Í¨¹ýʹÓÃLog4j£¬ÎÒÃÇ¿ÉÒÔ¿ØÖÆÈÕÖ¾ÐÅÏ¢ÊäË͵ÄÄ¿µÄµØÊÇ¿ØÖÆÌ¨¡¢Îļþ¡¢GUI×é¼þ£¬ÉõÖÁÊÇÌ×½Ó¿Ú·þÎñÆ÷¡¢NTµÄʼþ¼Ç¼Æ÷¡¢UNIX SyslogÊØ»¤½ø³ÌµÈ£»ÎÒÃÇÒ²¿ÉÒÔ¿ØÖÆÃ¿Ò»ÌõÈÕÖ¾µÄÊä³ö¸ñʽ£»Í¨¹ý¶¨ÒåÿһÌõÈÕÖ¾ÐÅÏ¢µÄ¼¶±ð£¬ÎÒÃÇÄܹ»¸ü¼ÓϸÖµؿØÖÆÈÕÖ¾µÄÉú³É¹ý³Ì¡£

Log4jµÄÅäÖúܼòµ¥£¬¶øÇÒÒ²ÊÇͨÓõģ¬ÏÂÃæ¸ø³öÒ»¸ö»ù±¾µÄÅäÖ㬻»µ½ÆäËûÏîÄ¿ÖÐÒ²ÎÞÐè×ö¶à´óµÄµ÷Õû£¬Èç¹ûÏë×öµ÷Õû»òÕßÏëÁ˽âLog4jµÄ¸÷ÖÖÅäÖ㬲ο´ÎÒ×ªÔØµÄһƪ²©ÎÄ£¬ºÜÏêϸ£ºhttp://blog.csdn.net/zhshulin/article/details/37937365

ÏÂÃæ¸ø³öÅäÖÃÎļþĿ¼£º

log4j.properties

log4j.rootLogger=INFO,Console,File
#¶¨ÒåÈÕÖ¾Êä³öÄ¿µÄµØÎª¿ØÖÆÌ¨
log4j.appender.Console= org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target =System.out
#¿ÉÒÔÁé»îµØÖ¸¶¨ÈÕÖ¾Êä³ö¸ñʽ£¬ÏÂÃæÒ»ÐÐÊÇÖ¸¶¨¾ßÌåµÄ¸ñʽ
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

#Îļþ´óСµ½´ïÖ¸¶¨³ß´çµÄʱºò²úÉúÒ»¸öеÄÎļþ
log4j.appender.File = org.apache.log4j.RollingFileAppender
#Ö¸¶¨Êä³öĿ¼
log4j.appender.File.File = logs/ssm.log
#¶¨ÒåÎļþ×î´ó´óС
log4j.appender.File.MaxFileSize = 10MB
# Êä³öËùÒÔÈÕÖ¾£¬Èç¹û»»³ÉDEBUG±íʾÊä³öDEBUGÒÔÉϼ¶±ðÈÕÖ¾
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

 

3.2.4¡¢Ê¹ÓÃJetty²âÊÔ

package com.javen.model;

public class User {
private Integer id;

private String userName;

private String password;

private Integer age;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUserName() {
return userName;
}

public void setUserName (String userName) {
this.userName = userName == null ? null : userName.trim();
}

public String getPassword() {
return password;
}

public void setPassword (String password) {
this.password = password == null ? null : password.trim();
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", password="
+ password + ", age=" + age + "]";
}


}

 

package com.javen.controller;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind .annotation.RequestMapping;
import org.springframework.web.bind .annotation.RequestMethod;
import com.javen.model.User;


@Controller
@RequestMapping("/user")
// /user/**
public class UserController {
private static Logger log= LoggerFactory.getLogger (UserController.class);


// /user/test?id=1
@RequestMapping (value="/test", method=RequestMethod.GET)
public String test (HttpServletRequest request, Model model){
int userId = Integer.parseInt (request.getParameter ("id"));
System.out.println ("userId:"+userId);
User user=null;
if (userId==1) {
user = new User();
user.setAge(11);
user.setId(1);
user.setPassword ("123");
user.setUserName ("javen");
}

log.debug(user.toString());
model.addAttribute ("user", user);
return "index";
}
}

ÔÚä¯ÀÀÆ÷ÖÐÊäÈ룺http://localhost/user/test?id=1

µ½´Ë SpringMVC+Maven ÕûºÏÍê±Ï

3.3 SpringÓëMyBatisµÄÕûºÏ

È¡Ïû3.2.2 web.xmlÖÐ×¢Ê͵ĴúÂë

3.3.1¡¢½¨Á¢JDBCÊôÐÔÎļþ

jdbc.properties£¨Îļþ±àÂëÐÞ¸ÄΪutf-8£©

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/maven
username=root
password=root
#¶¨Òå³õʼÁ¬½ÓÊý
initialSize=0
#¶¨Òå×î´óÁ¬½ÓÊý
maxActive=20
#¶¨Òå×î´ó¿ÕÏÐ
maxIdle=20
#¶¨Òå×îС¿ÕÏÐ
minIdle=1
#¶¨Òå×µÈ´ýʱ¼ä
maxWait=60000

 

´ËʱµÄĿ¼½á¹¹Îª

3.3.2¡¢½¨Á¢spring-mybatis.xmlÅäÖÃÎļþ

Õâ¸öÎļþ¾ÍÊÇÓÃÀ´Íê³ÉspringºÍmybatisµÄÕûºÏµÄ¡£ÕâÀïÃæÒ²Ã»¶àÉÙÐÐÅäÖã¬Ö÷ÒªµÄ¾ÍÊÇ×Ô¶¯É¨Ã裬×Ô¶¯×¢È룬ÅäÖÃÊý¾Ý¿â¡£×¢ÊÍÒ²ºÜÏêϸ£¬´ó¼Ò¿´¿´¾ÍÃ÷°×ÁË¡£

spring-mybatis.xml

<?xml version= "1.0" encoding= "UTF-8"?>
<beans xmlns= "http://www.springframework.org /schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema -instance" xmlns:p=" http://www.springframework.org/ schema/p"
xmlns:context= "http://www.springframework.org/schema/ context"
xmlns:mvc=" http://www.springframework.org/schema/ mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/ beans
http://www.springframework.org/schema/beans/ spring-beans-3.1.xsd
http://www.springframework.org /schema/context
http://www.springframework.org /schema/context/spring-context-3.1.xsd
http://www.springframework.org /schema/mvc
http://www.springframework.org /schema/mvc/spring-mvc-4.0.xsd">
<!-- ×Ô¶¯É¨Ãè -->
<context:component-scan base-package="com.javen" />

<!-- ÒýÈëÅäÖÃÎļþ -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory .config.PropertyPlaceholderConfigurer">
<property name="location" value ="classpath:jdbc.properties" />
</bean>

<bean id="dataSource" class= "org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name= "driverClassName" value="${driver}" />
<property name= "url" value="${url}" />
<property name= "username" value="${username}" />
<property name= "password" value="${password}" />
<!-- ³õʼ»¯Á¬½Ó´óС -->
<property name="initialSize" value="${initialSize}"></property>
<!-- Á¬½Ó³Ø×î´óÊýÁ¿ -->
<property name="maxActive" value="${maxActive}"></property>
<!-- Á¬½Ó³Ø×î´ó¿ÕÏÐ -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- Á¬½Ó³Ø×îС¿ÕÏÐ -->
<property name="minIdle" value="${minIdle}"></property>
<!-- »ñÈ¡Á¬½Ó×î´óµÈ´ýʱ¼ä -->
<property name="maxWait" value="${maxWait}"></property>
</bean>

<!-- springºÍMyBatisÍêÃÀÕûºÏ£¬²»ÐèÒªmybatisµÄÅäÖÃÓ³ÉäÎļþ -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- ×Ô¶¯É¨Ãèmapping.xmlÎļþ -->
<property name="mapperLocations" value="classpath:com/javen/mapping/*.xml" ></property>
</bean>

<!-- DAO½Ó¿ÚËùÔÚ°üÃû£¬Spring»á×Ô¶¯²éÕÒÆäϵÄÀà -->
<bean class= "org.mybatis.spring.mapper .MapperScannerConfigurer">
<property name= "basePackage" value="com.javen.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" ></property>
</bean>

<!-- (ÊÂÎñ¹ÜÀí)transaction manager, use JtaTransactionManager for global tx -->
<bean id=" transactionManager"
class="org.springframework .jdbc.datasource .DataSourceTransactionManager">
<property name= "dataSource" ref="dataSource" />
</bean>

</beans>

3.4¡¢JUnit²âÊÔ

¾­¹ýÒÔÉϲ½Ö裬ÎÒÃÇÒѾ­Íê³ÉÁËSpringºÍmybatisµÄÕûºÏ£¬ÕâÑùÎÒÃǾͿÉÒÔ±àдһ¶Î²âÊÔ´úÂëÀ´ÊÔÊÔÊÇ·ñ³É¹¦ÁË¡£

3.4.1¡¢´´½¨²âÊÔÓñí

¼ÈÈ»ÎÒÃÇÐèÒª²âÊÔ£¬ÄÇôÎÒÃǾÍÐèÒª½¨Á¢ÔÚÊý¾Ý¿âÖн¨Á¢Ò»¸ö²âÊÔ±í£¬Õâ¸ö±í½¨µÄºÜ¼òµ¥£¬SQLÓï¾äΪ£º

-- ----------------------------
-- Table structure for `user_t`
-- ----------------------------
DROP TABLE IF EXISTS `user_t`;
CREATE TABLE `user_t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(40) NOT NULL,
`password` varchar(255) NOT NULL,
`age` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT =3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user_t
-- ----------------------------
INSERT INTO `user_t` VALUES ('1', '²âÊÔ', '345', '24');
INSERT INTO `user_t` VALUES ('2', 'javen', '123', '10');

 

3.4.2¡¢ÀûÓÃMyBatis Generator×Ô¶¯´´½¨´úÂë

Õâ¸ö¿É¸ù¾Ý±í×Ô¶¯´´½¨ÊµÌåÀà¡¢MyBatisÓ³ÉäÎļþÒÔ¼°DAO½Ó¿Ú£¬µ±È»£¬ÎÒϰ¹ß½«Éú³ÉµÄ½Ó¿ÚÃû¸ÄΪIUserDao£¬¶ø²»ÊÇÖ±½ÓÓÃËüÉú³ÉµÄUserMapper¡£Èç¹û²»ÏëÂé·³¾Í¿ÉÒÔ²»¸Ä¡£Íê³Éºó½«Îļþ¸´ÖƵ½¹¤³ÌÖС£Èçͼ£º

3.4.3¡¢½¨Á¢Service½Ó¿ÚºÍʵÏÖÀà

ÏÂÃæ¸ø³ö¾ßÌåµÄÄÚÈÝ£º

IUserService.jave

package com.javen.service;

import com.javen.model.User;


public interface IUserService {
public User getUserById(int userId);
}

 

UserServiceImpl.java

package com.javen.service.impl;
import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import com.javen.dao.IUserDao;
import com.javen.model.User;
import com.javen.service.IUserService;


@Service("userService")
public class UserServiceImpl implements IUserService {
@Resource
private IUserDao userDao;

public User getUserById(int userId) {
// TODO Auto-generated method stub
return this.userDao.selectByPrimaryKey(userId);
}

}

 

3.4.4¡¢½¨Á¢²âÊÔÀà

²âÊÔÀàÔÚsrc/test/javaÖн¨Á¢£¬ÏÂÃæ²âÊÔÀàÖÐ×¢Ê͵ôµÄ²¿·ÖÊDz»Ê¹ÓÃSpringʱ£¬Ò»°ãÇé¿öϵÄÒ»ÖÖ²âÊÔ·½·¨£»Èç¹ûʹÓÃÁËSpringÄÇô¾Í¿ÉÒÔʹÓÃ×¢½âµÄ·½Ê½À´ÒýÈëÅäÖÃÎļþºÍÀ࣬ȻºóÔÙ½«service½Ó¿Ú¶ÔÏó×¢È룬¾Í¿ÉÒÔ½øÐвâÊÔÁË¡£

Èç¹û²âÊԳɹ¦£¬±íʾSpringºÍMybatisÒѾ­ÕûºÏ³É¹¦ÁË¡£Êä³öÐÅϢʹÓõÄÊÇLog4j´òÓ¡µ½¿ØÖÆÌ¨¡£

package com.javen.testmybatis;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test .context.ContextConfiguration;
import org.springframework.test .context.junit4.SpringJUnit4ClassRunner;
import com.alibaba.fastjson.JSON;
import com.javen.model.User;
import com.javen.service.IUserService;

@RunWith(SpringJUnit4ClassRunner.class) //±íʾ¼Ì³ÐÁËSpringJUnit4ClassRunnerÀà
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})

public class TestMyBatis {
private static Logger logger = Logger.getLogger(TestMyBatis.class);
// private ApplicationContext ac = null;
@Resource
private IUserService userService = null;

// @Before
// public void before() {
// ac = new ClassPathXmlApplicationContext ("applicationContext.xml");
// userService = (IUserService) ac.getBean ("userService");
// }

@Test
public void test1() {
User user = userService.getUserById(1);
// System.out.println (user.getUserName());
// logger.info ("Öµ£º"+user.getUserName());
logger.info(JSON.toJSONString(user));
}
}

 

²âÊÔ½á¹û

3.4.5¡¢½¨Á¢UserControllerÀà

UserController.java ¿ØÖÆÆ÷

package com.javen.controller;
import java.io.File;
import java.io.IOException;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework. web.bind.annotation.PathVariable;
import org.springframework. web.bind.annotation.RequestMapping;
import org.springframework .web.bind.annotation.RequestMethod;
import org.springframework .web.bind.annotation.RequestParam;
import org.springframework .web.bind.annotation.ResponseBody;
import org.springframework .web.multipart.MultipartFile;

import com.javen.model.User;
import com.javen.service.IUserService;


@Controller
@RequestMapping("/user")
// /user/**
public class UserController {
private static Logger log= LoggerFactory.getLogger (UserController.class);
@Resource
private IUserService userService;

// /user/test?id=1
@RequestMapping (value="/test", method=RequestMethod.GET)
public String test (HttpServletRequest request, Model model){
int userId = Integer.parseInt (request.getParameter ("id"));
System.out.println ("userId:"+userId);
User user=null;
if (userId==1) {
user = new User();
user.setAge(11);
user.setId(1);
user.setPassword ("123");
user.setUserName ("javen");
}

log.debug(user.toString());
model.addAttribute ("user", user);
return "index";
}


// /user/showUser?id=1
@RequestMapping (value="/showUser",method =RequestMethod.GET)
public String toIndex (HttpServletRequest request, Model model){
int userId = Integer.parseInt (request.getParameter ("id"));
System.out.println ("userId:"+userId);
User user = this.userService.getUserById(userId);
log.debug(user.toString());
model.addAttribute ("user", user);
return "showUser";
}

// /user/showUser2?id=1
@RequestMapping (value="/showUser2", method=RequestMethod.GET)
public String toIndex2 (@RequestParam("id") String id,Model model){
int userId = Integer.parseInt(id);
System.out.println ("userId:"+userId);
User user = this.userService.getUserById(userId);
log.debug (user.toString());
model.addAttribute ("user", user);
return "showUser";
}


// /user/showUser3/{id}
@RequestMapping (value="/showUser3/{id}", method=RequestMethod.GET)
public String toIndex3 (@PathVariable("id")String id, Map<String, Object> model){
int userId = Integer.parseInt(id);
System.out.println ("userId:"+userId);
User user = this.userService.getUserById(userId);
log.debug(user.toString());
model.put("user", user);
return "showUser";
}

// /user/{id}
@RequestMapping (value="/{id}",method =RequestMethod.GET)
public @ResponseBody User getUserInJson(@PathVariable String id,Map<String, Object> model){
int userId = Integer.parseInt(id);
System.out.println ("userId:"+userId);
User user = this.userService.getUserById(userId);
log.info(user.toString());
return user;
}

// /user/{id}
@RequestMapping (value="/jsontype/ {id}",method=RequestMethod.GET)
public ResponseEntity< User> getUserInJson2(@PathVariable String id,Map<String, Object> model){
int userId = Integer.parseInt(id);
System.out.println ("userId:"+userId);
User user = this.userService.getUserById(userId);
log.info(user.toString());
return new ResponseEntity< User>(user,HttpStatus.OK);
}

//ÎļþÉÏ´«¡¢
@RequestMapping (value="/upload")
public String showUploadPage(){
return " user_admin/file";
}

@RequestMapping (value="/doUpload", method=RequestMethod.POST)
public String doUploadFile (@RequestParam("file") MultipartFile file) throws IOException{
if (!file.isEmpty()) {
log.info("Process file:{}", file.getOriginalFilename());
}
FileUtils.copyInputStreamToFile (file.getInputStream(), new File("E:\\", System.currentTimeMillis() +file.getOriginalFilename()));
return "succes";
}
}

3.4.6¡¢Ð½¨jspÒ³Ãæ

file.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>
<h1>ÉÏ´«Îļþ</h1>
<form method="post" action="/user/doUpload" enctype=" multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="ÉÏ´«Îļþ"/>

</form>
</body>
</html>

 

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

 

showUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>²âÊÔ</title>
</head>

<body>
${user.userName}
</body>
</html>

 

ÖÁ´Ë£¬Íê³ÉSpring+SpingMVC+mybatisÕâÈý´ó¿ò¼ÜÕûºÏÍê³É¡£

3.4.7¡¢²¿ÊðÏîÄ¿

ÊäÈëµØÖ·£ºhttp://localhost/user/jsontype/2

ÏîÄ¿ÏÂÔØ

   
31585 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö