老铁们,大家好,相信还有很多朋友对于ssm个人博客网站源码分享和个人博客cms的相关问题不太懂,没关系,今天就由我来为大家分享分享ssm个人博客网站源码分享以及个人博客cms的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
最近在学习Spring+SpringMVC+MyBatis的整合。以下是参考网上的资料自己实践操作的详细步骤。
1、基本概念
1.1、Spring
Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
1.2、SpringMVC
SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
1.3、MyBatis
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQLMaps和DataAccessObjects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。
2、开发环境搭建以及创建MavenWeb项目
3、SSM整合
下面主要介绍三大框架的整合,至于环境的搭建以及项目的创建,参看上面的博文。这次整合我分了2个配置文件,分别是spring-mybatis.xml,包含spring和mybatis的配置文件,还有个是spring-mvc的配置文件,此外有2个资源文件:jdbc.propertis和log4j.properties。完整目录结构如下(最后附上源码下载地址):
使用框架的版本:
Spring4.0.2RELEASE
SpringMVC4.0.2RELEASE
MyBatis3.2.6
3.1、Maven引入需要的JAR包
在pom.xml中引入jar包
<projectxmlns=&34;xmlns:xsi=&34;\nxsi:schemaLocation=&34;>\n<modelVersion>4.0.0</modelVersion>\n<groupId>com.javen.maven01</groupId>\n<artifactId>maven01</artifactId>\n<packaging>war</packaging>\n<version>0.0.1-SNAPSHOT</version>\n<name>maven01MavenWebapp</name>\n<url>http://maven.apache.org</url>\n\n<properties>\n<!–spring版本号–>\n<spring.version>4.0.2.RELEASE</spring.version>\n<!–mybatis版本号–>\n<mybatis.version>3.2.6</mybatis.version>\n<!–log4j日志文件管理包版本–>\n<slf4j.version>1.7.7</slf4j.version>\n<log4j.version>1.2.17</log4j.version>\n</properties>\n\n<dependencies>\n<dependency>\n<groupId>junit</groupId>\n<artifactId>junit</artifactId>\n<version>3.8.1</version>\n<!–表示开发的时候引入,发布的时候不会加载此包–>\n<scope>test</scope>\n</dependency>\n<!–<dependency>\n<groupId>javax.servlet</groupId>\n<artifactId>javax.servlet-api</artifactId>\n<version>3.1.0</version>\n</dependency>–>\n\n<!–spring核心包–>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-core</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-web</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-oxm</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-tx</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-jdbc</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-webmvc</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-aop</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-context-support</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-test</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<!–mybatis核心包–>\n<dependency>\n<groupId>org.mybatis</groupId>\n<artifactId>mybatis</artifactId>\n<version>${mybatis.version}</version>\n</dependency>\n<!–mybatis/spring包–>\n<dependency>\n<groupId>org.mybatis</groupId>\n<artifactId>mybatis-spring</artifactId>\n<version>1.2.2</version>\n</dependency>\n\n<!–导入javaeejar包–>\n<dependency>\n<groupId>javax</groupId>\n<artifactId>javaee-api</artifactId>\n<version>7.0</version>\n</dependency>\n\n<!–导入Mysql数据库链接jar包–>\n<dependency>\n<groupId>mysql</groupId>\n<artifactId>mysql-connector-java</artifactId>\n<version>5.1.36</version>\n</dependency>\n<!–导入dbcp的jar包,用来在applicationContext.xml中配置数据库–>\n<dependency>\n<groupId>commons-dbcp</groupId>\n<artifactId>commons-dbcp</artifactId>\n<version>1.2.2</version>\n</dependency>\n\n<!–JSTL标签类–>\n<dependency>\n<groupId>jstl</groupId>\n<artifactId>jstl</artifactId>\n<version>1.2</version>\n</dependency>\n<!–日志文件管理包–>\n<!–logstart–>\n<dependency>\n<groupId>log4j</groupId>\n<artifactId>log4j</artifactId>\n<version>${log4j.version}</version>\n</dependency>\n\n\n<!–格式化对象,方便输出日志–>\n<dependency>\n<groupId>com.alibaba</groupId>\n<artifactId>fastjson</artifactId>\n<version>1.1.41</version>\n</dependency>\n\n\n<dependency>\n<groupId>org.slf4j</groupId>\n<artifactId>slf4j-api</artifactId>\n<version>${slf4j.version}</version>\n</dependency>\n\n<dependency>\n<groupId>org.slf4j</groupId>\n<artifactId>slf4j-log4j12</artifactId>\n<version>${slf4j.version}</version>\n</dependency>\n<!–logend–>\n<!–映入JSON–>\n<dependency>\n<groupId>org.codehaus.jackson</groupId>\n<artifactId>jackson-mapper-asl</artifactId>\n<version>1.9.13</version>\n</dependency>\n<!–上传组件包–>\n<dependency>\n<groupId>commons-fileupload</groupId>\n<artifactId>commons-fileupload</artifactId>\n<version>1.3.1</version>\n</dependency>\n<dependency>\n<groupId>commons-io</groupId>\n<artifactId>commons-io</artifactId>\n<version>2.4</version>\n</dependency>\n<dependency>\n<groupId>commons-codec</groupId>\n<artifactId>commons-codec</artifactId>\n<version>1.9</version>\n</dependency>\n\n</dependencies>\n\n<build>\n<finalName>maven01</finalName>\n<plugins>\n<plugin>\n<groupId>org.eclipse.jetty</groupId>\n<artifactId>jetty-maven-plugin</artifactId>\n<version>9.2.8.v20150217</version>\n<configuration>\n<httpConnector>\n<port>80</port>\n</httpConnector>\n<stopKey>shutdown</stopKey>\n<stopPort>9966</stopPort>\n</configuration>\n</plugin>\n</plugins>\n</build>\n\n</project>
3.2、整合SpringMVC
3.2.1、配置spring-mvc.xml
配置里面的注释也很详细,主要是自动扫描控制器,视图模式,注解的启动这三个。
<?xmlversion=&34;encoding=&34;?>\n<beansxmlns=&34;\nxmlns:xsi=&34;xmlns:p=&34;\nxmlns:context=&34;\nxmlns:mvc=&34;\nxsi:schemaLocation=&34;>\n<!–自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器–>\n<context:component-scanbase-package=&34;/>\n<!–扩充了注解驱动,可以将请求参数绑定到控制器参数–>\n<mvc:annotation-driven/>\n<!–静态资源处理cssjsimgs–>\n<mvc:resourceslocation=&34;mapping=&34;/>\n\n<!–避免IE执行AJAX时,返回JSON出现下载文件–>\n<beanid=&34;\nclass=&34;>\n<propertyname=&34;>\n<list>\n<value>text/html;charset=UTF-8</value>\n</list>\n</property>\n</bean>\n<!–启动SpringMVC的注解功能,完成请求和注解POJO的映射–>\n<bean\nclass=&34;>\n<propertyname=&34;>\n<list>\n<refbean=&34;/><!–JSON转换器–>\n</list>\n</property>\n</bean>\n\n<!–配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包–>\n<beanid=&34;\nclass=&34;>\n<!–默认编码–>\n<propertyname=&34;value=&34;/>\n<!–文件大小最大值–>\n<propertyname=&34;value=&34;/>\n<!–内存中的最大值–>\n<propertyname=&34;value=&34;/>\n<!–启用是为了推迟文件解析,以便捕获文件大小异常–>\n<propertyname=&34;value=&34;/>\n</bean>\n\n<!–配置ViewResolver。可用多个ViewResolver。使用order属性排序。InternalResourceViewResolver放在最后–>\n<beanclass=&34;>\n<propertyname=&34;value=&34;></property>\n<propertyname=&34;>\n<map>\n<!–告诉视图解析器,返回的类型为json格式–>\n<entrykey=&34;value=&34;/>\n<entrykey=&34;value=&34;/>\n<entrykey=&34;value=&34;/>\n</map>\n</property>\n<propertyname=&34;>\n<list>\n<!–ModelAndView里的数据变成JSON–>\n<beanclass=&34;/>\n</list>\n</property>\n<propertyname=&34;value=&34;></property>\n</bean>\n\n<!–定义跳转的文件的前后缀,视图模式配置–>\n<beanclass=&34;>\n<!–这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个可用的url地址–>\n<propertyname=&34;value=&34;/>\n<propertyname=&34;value=&34;/>\n</bean>\n</beans>
3.2.2、配置web.xml文件
配置的spring-mvc的Servlet就是为了完成SpringMVC+MAVEN的整合。
web.xml
<?xmlversion=&34;encoding=&34;?>\n<web-appxmlns:xsi=&34;\nxmlns=&34;\nxsi:schemaLocation=&34;\nversion=&34;>\n<display-name>ArchetypeCreatedWebApplication</display-name>\n<!–Spring和mybatis的配置文件–>\n<!–<context-param>\n<param-name>contextConfigLocation</param-name>\n<param-value>classpath:spring-mybatis.xml</param-value>\n</context-param>–>\n<!–编码过滤器–>\n<filter>\n<filter-name>encodingFilter</filter-name>\n<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\n<async-supported>true</async-supported>\n<init-param>\n<param-name>encoding</param-name>\n<param-value>UTF-8</param-value>\n</init-param>\n</filter>\n<filter-mapping>\n<filter-name>encodingFilter</filter-name>\n<url-pattern>/*</url-pattern>\n</filter-mapping>\n<!–Spring监听器–>\n<!–<listener>\n<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n</listener>–>\n<!–防止Spring内存溢出监听器–>\n<!–<listener>\n<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>\n</listener>–>\n\n<!–SpringMVCservlet–>\n<servlet>\n<servlet-name>SpringMVC</servlet-name>\n<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n<init-param>\n<param-name>contextConfigLocation</param-name>\n<param-value>classpath:spring-mvc.xml</param-value>\n</init-param>\n<load-on-startup>1</load-on-startup>\n<async-supported>true</async-supported>\n</servlet>\n<servlet-mapping>\n<servlet-name>SpringMVC</servlet-name>\n<!–此处可以可以配置成*.do,对应struts的后缀习惯–>\n<url-pattern>/</url-pattern>\n</servlet-mapping>\n<welcome-file-list>\n<welcome-file>/index.jsp</welcome-file>\n</welcome-file-list>\n\n</web-app>
3.2.3、Log4j的配置
为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j的配置很简单,而且也是通用的,下面给出一个基本的配置,换到其他项目中也无需做多大的调整,如果想做调整或者想了解Log4j的各种配置,参看我转载的一篇博文,很详细:http://blog.csdn.net/zhshulin/article/details/37937365
下面给出配置文件目录:
log4j.properties
log4j.rootLogger=INFO,Console,File\n可以灵活地指定日志输出格式,下面一行是指定具体的格式\nlog4j.appender.Console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.Console.layout.ConversionPattern=[%c]-%m%n\n\n指定输出目录\nlog4j.appender.File.File=logs/ssm.log\n输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志\nlog4j.appender.File.Threshold=ALL\nlog4j.appender.File.layout=org.apache.log4j.PatternLayout\nlog4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-ddHH\\:mm\\:ss}][%c]%m%n
3.2.4、使用Jetty测试
packagecom.javen.model;\n\npublicclassUser{\nprivateIntegerid;\n\nprivateStringuserName;\n\nprivateStringpassword;\n\nprivateIntegerage;\n\npublicIntegergetId(){\nreturnid;\n}\n\npublicvoidsetId(Integerid){\nthis.id=id;\n}\n\npublicStringgetUserName(){\nreturnuserName;\n}\n\npublicvoidsetUserName(StringuserName){\nthis.userName=userName==null?null:userName.trim();\n}\n\npublicStringgetPassword(){\nreturnpassword;\n}\n\npublicvoidsetPassword(Stringpassword){\nthis.password=password==null?null:password.trim();\n}\n\npublicIntegergetAge(){\nreturnage;\n}\n\npublicvoidsetAge(Integerage){\nthis.age=age;\n}\n\n@Override\npublicStringtoString(){\nreturn&34;+id+&34;+userName+&34;\n+password+&34;+age+&34;;\n}\n\n\n}
packagecom.javen.controller;\nimportjavax.servlet.http.HttpServletRequest;\n\nimportorg.slf4j.Logger;\nimportorg.slf4j.LoggerFactory;\nimportorg.springframework.stereotype.Controller;\nimportorg.springframework.ui.Model;\nimportorg.springframework.web.bind.annotation.RequestMapping;\nimportorg.springframework.web.bind.annotation.RequestMethod;\nimportcom.javen.model.User;\n\n\n@Controller\n@RequestMapping(&34;)\n///user/**\npublicclassUserController{\nprivatestaticLoggerlog=LoggerFactory.getLogger(UserController.class);\n\n\n///user/test?id=1\n@RequestMapping(value=&34;,method=RequestMethod.GET)\npublicStringtest(HttpServletRequestrequest,Modelmodel){\nintuserId=Integer.parseInt(request.getParameter(&34;));\nSystem.out.println(&34;+userId);\nUseruser=null;\nif(userId==1){\nuser=newUser();\nuser.setAge(11);\nuser.setId(1);\nuser.setPassword(&34;);\nuser.setUserName(&34;);\n}\n\nlog.debug(user.toString());\nmodel.addAttribute(&34;,user);\nreturn&34;;\n}\n}
在浏览器中输入:http://localhost/user/test?id=1
到此SpringMVC+Maven整合完毕
3.3Spring与MyBatis的整合
取消3.2.2web.xml中注释的代码
3.3.1、建立JDBC属性文件
jdbc.properties(文件编码修改为utf-8)
driver=com.mysql.jdbc.Driver\nurl=jdbc:mysql://localhost:3306/maven\nusername=root\npassword=root\n定义最大连接数\nmaxActive=20\n定义最小空闲\nminIdle=1\n34;1.0&34;UTF-8&34;http://www.springframework.org/schema/beans&34;http://www.w3.org/2001/XMLSchema-instance&34;http://www.springframework.org/schema/p&34;http://www.springframework.org/schema/context&34;http://www.springframework.org/schema/mvc&34;http://www.springframework.org/schema/beans\nhttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd\nhttp://www.springframework.org/schema/context\nhttp://www.springframework.org/schema/context/spring-context-3.1.xsd\nhttp://www.springframework.org/schema/mvc\nhttp://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd&34;com.javen&34;propertyConfigurer&34;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&34;location&34;classpath:jdbc.properties&34;dataSource&34;org.apache.commons.dbcp.BasicDataSource&34;close&34;driverClassName&34;${driver}&34;url&34;${url}&34;username&34;${username}&34;password&34;${password}&34;initialSize&34;${initialSize}&34;maxActive&34;${maxActive}&34;maxIdle&34;${maxIdle}&34;minIdle&34;${minIdle}&34;maxWait&34;${maxWait}&34;sqlSessionFactory&34;org.mybatis.spring.SqlSessionFactoryBean&34;dataSource&34;dataSource&34;mapperLocations&34;classpath:com/javen/mapping/*.xml&34;org.mybatis.spring.mapper.MapperScannerConfigurer&34;basePackage&34;com.javen.dao&34;sqlSessionFactoryBeanName&34;sqlSessionFactory&34;transactionManager&34;org.springframework.jdbc.datasource.DataSourceTransactionManager&34;dataSource&34;dataSource&39;1&39;测试&39;345&39;24&39;2&39;javen&39;123&39;10&34;userService&34;classpath:spring-mybatis.xml&34;applicationContext.xml&34;userService&34;值:&34;/user&34;/test&34;id&34;userId:&34;123&34;javen&34;user&34;index&34;/showUser&34;id&34;userId:&34;user&34;showUser&34;/showUser2&34;id&34;userId:&34;user&34;showUser&34;/showUser3/{id}&34;id&34;userId:&34;user&34;showUser&34;/{id}&34;userId:&34;/jsontype/{id}&34;userId:&34;/upload&34;user_admin/file&34;/doUpload&34;file&34;Processfile:{}&34;E:\\\\&34;succes&34;java&34;text/html;charset=utf-8&34;utf-8&34;-//W3C//DTDHTML4.01Transitional//EN&34;http://www.w3.org/TR/html4/loose.dtd&34;Content-Type&34;text/html;charset=utf-8&34;post&34;/user/doUpload&34;multipart/form-data&34;file&34;file&34;submit&34;上传文件&34;java&34;java.util.*&34;utf-8&34;-//W3C//DTDHTML4.01Transitional//EN”>\n<html>\n<head>\n<title>测试</title>\n</head>\n\n<body>\n${user.userName}\n</body>\n</html>
至此,完成Spring+SpingMVC+mybatis这三大框架整合完成。
3.4.7、部署项目
输入地址:http://localhost/user/jsontype/2
项目下载地址:https://github.com/Javen205/SSM
关于ssm个人博客网站源码分享,个人博客cms的介绍到此结束,希望对大家有所帮助。
