大家好,关于ssm课程网站系统源码分享非mavn很多朋友都还不太明白,今天小编就来为大家分享关于ssm项目实战源码的知识,希望对各位有所帮助!
前言
ssm指的是Spring框架+SpringMVC框架+MyBatis框架的整合开发,也是目前JavaWeb开发比较火的框架整合开发技术。在此简单记录下其环境的搭建过程。
开发环境
所用IDE为IntelliJIDEA,项目管理Maven,服务器为Tomcat,本例使用Maven管理项目,项目所需的包依赖只需在pom.xml配置文件中添加相应的包的依赖坐标即可,Maven会自动帮我们把相关的包添加到项目中,也可以手动添加到开发环境中,此处只讲解Maven包管理的方式。
思路
整合思路大概是,先搭建好spring的环境,再通过spring框架去整合SpringMVC框架与MyBatis框架,现在开始配置相应的环境。
1.搭建Spring的开发环境
1.1、打开IDEA,新建一个Maven的webapp模板工程ssm,模板要选择maven-archetype-webapp选项,输入相应的项目名等创建好项目之后,在pom.xml配置文件中输入下面SSM整合所需的依赖坐标,maven会自动给我们项目添加相应的jar包。
1.2、在pom.xml文件的properties标签内加入如下依赖坐标的版本限定代码,方便管理依赖的版本号
<spring.version>5.0.16.RELEASE</spring.version>\n<slf4j.version>1.6.6</slf4j.version>\n<log4j.version>1.2.17</log4j.version>\n<mysql.version>5.1.6</mysql.version>\n<mybatis.version>3.4.5</mybatis.version>\n<aspectj.version>1.6.8</aspectj.version>\n<junit.version>4.12</junit.version>\n
1.3、添加完版本限定后,在dependencies标签中添加依赖坐标。坐标可以参考下面坐标代码
<dependency>\n<!–Spring相关依赖坐标开始–>\n<!–spring容器–>\n<groupId>org.springframework</groupId>\n<artifactId>spring-context</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<!–springaop–>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-aop</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<dependency>\n<groupId>org.aspectj</groupId>\n<artifactId>aspectjweaver</artifactId>\n<version>${aspectj.version}</version>\n</dependency>\n\n<!–springmvc–>\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-webmvc</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<!–测试支持–>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-test</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<!–springjdbc模板技术–>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-jdbc</artifactId>\n<version>${spring.version}</version>\n</dependency>\n\n<!–事务–>\n<dependency>\n<groupId>org.springframework</groupId>\n<artifactId>spring-tx</artifactId>\n<version>${spring.version}</version>\n</dependency>\n<!–Spring依赖坐标结束–>\n\n<!–servlet–>\n<dependency>\n<groupId>javax.servlet</groupId>\n<artifactId>servlet-api</artifactId>\n<version>2.5</version>\n<scope>provided</scope>\n</dependency>\n\n<!–jsp–>\n<dependency>\n<groupId>javax.servlet.jsp</groupId>\n<artifactId>jsp-api</artifactId>\n<version>2.0</version>\n<scope>provided</scope>\n</dependency>\n\n<!–jsp页面提供el表达式支持–>\n<dependency>\n<groupId>jstl</groupId>\n<artifactId>jstl</artifactId>\n<version>1.2</version>\n</dependency>\n\n<!–mybatis框架–>\n<dependency>\n<groupId>org.mybatis</groupId>\n<artifactId>mybatis</artifactId>\n<version>${mybatis.version}</version>\n</dependency>\n\n<!–用于spring整合mybatis–>\n<dependency>\n<groupId>org.mybatis</groupId>\n<artifactId>mybatis-spring</artifactId>\n<version>1.3.0</version>\n</dependency>\n\n<!–mysql驱动–>\n<dependency>\n<groupId>mysql</groupId>\n<artifactId>mysql-connector-java</artifactId>\n<version>${mysql.version}</version>\n</dependency>\n\n<!–连接池c3p0–>\n<dependency>\n<groupId>c3p0</groupId>\n<artifactId>c3p0</artifactId>\n<version>0.9.1.2</version>\n<type>jar</type>\n<scope>compile</scope>\n</dependency>\n\n<!–单元测试–>\n<dependency>\n<groupId>junit</groupId>\n<artifactId>junit</artifactId>\n<version>${junit.version}</version>\n<scope>compile</scope>\n</dependency>\n
1.4、创建实体类Users、Users的dao接口UsersDao、UsersDao的dao接口的实现类UsersDaoImpl、业务接口UsersService、业务接口UsersService的实现类UsersServiceImpl。本实例使用Spring的注解+xml方式配置。如果业务接口实现类中使用spring的注解注入UsersDao的对象到UsersServiceImpl实现类中,并且可以通过注入的对象访问到UsersDao接口中的方法,则表明Spring环境搭建成功1.4.1、Users.java类的主要实现代码
/**\n*账号实体类\n*/\npublicclassUsersimplementsSerializable{\nprivateStringuserName;//用户名\nprivateStringpassword;//密码\npublicStringgetUserName(){\nreturnuserName;\n}\npublicvoidsetUserName(StringuserName){\nthis.userName=userName;\n}\npublicStringgetPassword(){\nreturnpassword;\n}\npublicvoidsetPassword(Stringpassword){\nthis.password=password;\n}\n@Override\npublicStringtoString(){\nreturn&34;+\n&39;&39;\\&39;+\n&39;&39;\\&39;+\n&39;;\n}\n
1.4.2、UsersDao.java的主要实现代码
/**\n*用户的dao接口\n*使用mybatis框架,dao接口可以不用实现例\n*/\npublicinterfaceUsersDao{\n/**\n*查询所有用户\n*@return\n*/\npublicList<Users>findAll();\n/**\n*添加用户\n*@paramusers\n*/\npublicvoidsaveUser(Usersusers);\n}\n
1.4.3、UsersDaoImpl.java的主要实现代码
/**\n*UserDao接口的实现类\n*/\n@Repository\npublicclassUsersDaoImplimplementsUsersDao{\n/**\n*查询所有用户\n*\n*@return\n*/\n@Override\npublicList<Users>findAll(){\nSystem.out.println(&34;);\nreturnnull;\n}\n/**\n*添加用户\n*\n*@paramusers\n*/\n@Override\npublicvoidsaveUser(Usersusers){\nSystem.out.println(&34;);\n}\n}\n
1.4.4、业务接口UsersService.java的主要实现代码
/**\n*用户的业务接口\n*/\npublicinterfaceUsersService{\n/**\n*查询所有用户\n*@return\n*/\npublicList<Users>findAll();\n/**\n*添加用户\n*@paramusers\n*/\npublicvoidsaveUser(Usersusers);\n}\n
1.4.5、业务接口的实现类UsersServiceImpl.java的主要实现代码
/**\n*用户业务接口的实现类\n*/\n@Service(&34;)\npublicclassUsersServiceImplimplementsUsersService{\n@Autowired\nprivateUsersDaousersDao;\n/**\n*查询所有用户\n*\n*@return\n*/\n@Override\npublicList<Users>findAll(){\nusersDao.findAll();\nSystem.out.println(&34;);\nreturnnull;\n}\n/**\n*添加用户\n*\n*@paramusers\n*/\n@Override\npublicvoidsaveUser(Usersusers){\nusersDao.saveUser(users);\nSystem.out.println(&34;);\n}\n}\n\n
1.4.6、spring配置文件applicationContext.xml代码
<?xmlversion=&34;encoding=&34;?>\n<beansxmlns=&34;\nxmlns:context=&34;\nxmlns:xsi=&34;\nxsi:schemaLocation=&34;>\n\n<!–配置spring加载包扫描–>\n<context:component-scanbase-package=&34;>\n<!–配置不加载的注解Controller–>\n<context:exclude-filtertype=&34;expression=&34;/>\n</context:component-scan>\n\n
1.4.7、Spring的测试类TestSpring代码如下
@Test\npublicvoidtestSpring(){\n//加载spring配置文件\nApplicationContextapplicationContext=newClassPathXmlApplicationContext(&34;);\n//获取UserService对象\nUsersServiceusersService=applicationContext.getBean(&34;,UsersService.class);\nusersService.findAll();\nUsersusers=newUsers();\nusersService.saveUser(users);\n}\n
运行测试类控制台输入如下内容,表明Spring环境搭建成功
UsersDaoImpl类的findAlll方法执行了…\nUserServiceImpl类的findAll方法执行了。。。\nUsersDaoImpl类的saveUser方法执行了…\nUserServiceImpl类的saveUser方法执行了。。。.\n
2、SpringMVC环境搭建
2.1、在ssm项目上创建SpringMVC配置文件,控制器类UsersController、testSpringmvc.jsp测试页面,如果通过测试页面的请求连接,能访问到控制器类中的方法表示SpringMVC环境搭建成功。
2.2、SpringMVC配置文件springmvc.xml主要配置包扫描、视图解析器等,具体配置如下
<?xmlversion=&34;encoding=&34;?>\n<beansxmlns=&34;\nxmlns:context=&34;\nxmlns:mvc=&34;\nxmlns:xsi=&34;\nxsi:schemaLocation=&34;>\n<!–配置包扫描,只扫描controller–>\n<context:component-scanbase-package=&34;>\n<context:include-filtertype=&34;expression=&34;/>\n</context:component-scan>\n\n<!–配置视图解析器–>\n<beanid=&34;class=&34;>\n<propertyname=&34;value=&34;/>\n<propertyname=&34;value=&34;/>\n</bean>\n<!–开启springmvc注解支持–>\n<mvc:annotation-driven/>\n
2.3、在web.xml配置文件中配置前端控制器、处理中文乱码的过滤器,具体配置如下
<!–处理post请求中文乱码–>\n<filter>\n<filter-name>characterEncodingFilter</filter-name>\n<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>\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>characterEncodingFilter</filter-name>\n<url-pattern>/*</url-pattern>\n</filter-mapping>\n\n<!–配置前端控制器–>\n<servlet>\n<servlet-name>dispatcherServlet</servlet-name>\n<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\n<!–加载springmvc配置文件–>\n<init-param>\n<param-name>contextConfigLocation</param-name>\n<param-value>classpath:springmvc.xml</param-value>\n</init-param>\n<load-on-startup>1</load-on-startup>\n</servlet>\n<servlet-mapping>\n<servlet-name>dispatcherServlet</servlet-name>\n<url-pattern>/</url-pattern>\n</servlet-mapping>\n
2.4、控制器类UsersController.java主要实现代码如下
/**\n*Users控制器类\n*/\n@Controller\n@RequestMapping(&34;)\npublicclassUsersController{\n@RequestMapping(&34;)\npublicStringtestSpringmvc(){\nSystem.out.println(&34;);\n//返回success经视图解析器解析将跳转到/WEB-INF/pages/目录下的success.jsp页面\nreturn&34;;\n}\n}\n
2.5、测试页面testSpringmvc.jsp的主要代码实现如下
<h1>测试SpringMVC环境</h1>\n<hr/>\n<ahref=&34;>测试SpringMVC环境</a>\n
2.6、配置好Tomcat服务器把项目部署到服务并访问testSpringmvc.jsp页面中的超链接即可成功跳线到success.jsp页面,表明SpringMVC环境搭建成功。
3、Spring整合SpringMVC框架
3.1、Spring整合SpringMVC框架也就是要实现表现层的springmvc框架可以访问到业务层的方法,由于服务器启动不会主动加载spring的配置文件,所以控制器类实现不了UsersService对象的注入,因此Spring要整合SpringMVC就要实现项目启动时就要加载spring的配置文件,可以用配置ContextLoaderListener监听器实现。3.2、web.xml文件的监听器配置代码如下
<!–配置spring监听器–>\n<listener>\n<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n</listener>\n<!–配置监听器加载指定的路径,默认只加载目录WEB-INF目录下的applicationContext.xml配置文件–>\n<context-param>\n<param-name>contextConfigLocation</param-name>\n<param-value>classpath:applicationContext.xml</param-value>\n</context-param>\n\n
3.3、控制器类UsersController编辑UsersService对象注入与及testfindAll方法验证通过页面请求使用入注入的对象访问业务层的方法。3.3.1、UsersController.java主要代码实现
@Autowired\nprivateUsersServiceusersService;\n/**\n*测试springmvc环境\n*@return\n*/\n@RequestMapping(&34;)\npublicStringtestSpringmvc(){\nSystem.out.println(&34;);\n//返回success经视图解析器解析将跳转到/WEB-INF/pages/目录下的success.jsp页面\nreturn&34;;\n}\n/**\n*\n*@return\n*/\n@RequestMapping(&34;)\npublicStringtestfindAll(){\nSystem.out.println(&34;);\nusersService.findAll();\nreturn&34;;\n}\n
3.4、如果通过testspringmvc.jsp页面的链接请求控制器的testfindAll方法执行,如果成功跳转到list.jsp页面,并且控制台输出业务层方法打印的方法中执行输出的日志表明整合成功。3.4.1、testspringmvc.jsp主要代码如下
<h1>测试SpringMVC环境</h1>\n<hr/>\n<ahref=&34;>测试SpringMVC环境</a>\n<hr/>\n<ahref=&34;>测试Spring整合SpringMVC环境</a>\n
3.4.2、测试成功控制台输出的信息
UsersController类的testfindAll方法执行了\nUsersDaoImpl类的findAlll方法执行了…\nUserServiceImpl类的findAll方法执行了。。。\n
至此Spring整合SpringMVC已经完成,下面继续MyBatis框架的相关环境搭建。
4、MyBatis环境搭建
4.1、创建ssm数据库与users表的命令如下
CREATEDATABASEssm;\nCREATETABLEusers(idINT(11)PRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(20),passwordVARCHAR(30));\nINSERTINTOusersVALUES(null,&34;,&34;);\n
4.2、创建mybatis.xml配置文件,配置mysql的环境,具体配置如下
<?xmlversion=&34;encoding=&34;?>\n<!DOCTYPEconfiguration\nPUBLIC&34;\n&34;>\n<configuration>\n<!–配置环境–>\n<environmentsdefault=&34;>\n<environmentid=&34;>\n<!–事务类型–>\n<transactionManagertype=&34;/>\n<!–数据源–>\n<dataSourcetype=&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</dataSource>\n</environment>\n</environments>\n\n<!–引入映射文件–>\n<mappers>\n<!–由于使用注解,所以引入注解包目录–>\n<packagename=&34;/>\n</mappers>\n</configuration>\n
4.2.1、给UsersDao类中方法加载mybatis的相应注解,使用MyBatis框架Dao接口可以不需要实现类,因此删除UserDao的实现类文件UsersDaoImpl.java。4.2.2、dao接口类UsersDao.java的主要代码实现如下
/**\n*用户的dao接口\n*使用mybatis框架,dao接口可以不用实现例\n*/\npublicinterfaceUsersDao{\n/**\n*查询所有用户\n*@return\n*/\n@Select(&34;)\npublicList<Users>findAll();\n\n/**\n*添加用户\n*@paramusers\n*/\n@Insert(&{userName},34;)\npublicvoidsaveUser(Usersusers);\n}\n
4.3.1、创建TestMyBatis.java测试类测试MyBatis的配置环境,如果能成功操作mysql数据库,表明MyBatis环境搭建成功4.3.2、TestMyBatis.java的主要实现代码如下代码主要实现查询数据库的所有数据和向数据库新增一条数据
publicclassTestMyBatis{\n@Test\npublicvoidtestMyBatis()throwsIOException{\n//加载配置文件\nInputStreaminputStream=Resources.getResourceAsStream(&34;);\n//创建SqlSessionFactory对象\nSqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);\n//获取SqlSession对象\nSqlSessionsession=sqlSessionFactory.openSession();\n//获取代理对象\nUsersDaousersDao=session.getMapper(UsersDao.class);\n//执行查询方法\nList<Users>list=usersDao.findAll();\nfor(Usersusers:list){\nSystem.out.println(users);\n}\nUsersusers=newUsers();\nusers.setUserName(&34;);\nusers.setPassword(&34;);\n//执行新增用户方法\nusersDao.saveUser(users);\n//提交事务\nsession.commit();\n//关闭资源\nsession.close();\ninputStream.close();\n\n}\n}\n
4.3.3、测试类执行成功控制台将输出如下信息,这条记录是创建数据库时添加的,所以可以查询到。
Users{userName=&39;,password=&39;}\n
4.3.4、查看数据库可以看到成功插入了一条username为test1的记录。
mysql>select*fromusers;\n+—-+———-+————+\n|id|username|password|\n+—-+———-+————+\n|1|pankx|123456|\n|2|test1|test123456|\n+—-+———-+————+\n
4.3.5、因此到这里MyBatis的开发环境搭建成功,接下来就是用Spring整合MyBatis。
5、Spring整合MyBatis
5.1、Spring要整合MyBatis只需Spring的配置文件中完成MyBatis的相关配置,配置数据库连接池、SqSessionFactory工厂Bean,使用MapperScannerConfigurer来配置Dao接口所在的包。具体配置如下
<?xmlversion=&34;encoding=&34;?>\n<beansxmlns=&34;\nxmlns:context=&34;\nxmlns:xsi=&34;\nxsi:schemaLocation=&34;>\n\n<!–配置spring加载包扫描–>\n<context:component-scanbase-package=&34;>\n<!–配置不加载的注解Controller–>\n<context:exclude-filtertype=&34;expression=&34;/>\n</context:component-scan>\n\n<!–spring整合MyBatis–>\n<!–配置连接池,此例使用c3p0连接池技术–>\n<beanid=&34;class=&34;>\n<propertyname=&34;value=&34;/>\n<propertyname=&34;value=&34;/>\n<propertyname=&34;value=&34;/>\n<propertyname=&34;value=&34;/>\n</bean>\n<!–配置SqlSessionFactory工厂bean–>\n<beanid=&34;class=&34;>\n<!–传入数据源–>\n<propertyname=&34;ref=&34;/>\n</bean>\n\n<!–配置dao接口的包路径–>\n<beanid=&34;class=&34;>\n<propertyname=&34;value=&34;/>\n</bean>\n\n</beans>\n
5.2、配置好MyBatis后要把之前单独搭建时创建的mybatis.xml配置文件删除了,避免重复配置报错。5.3、创建testmybatis.jsp页面与userslist.jsp页面,通过请求方式测试MyBatis的整合环境,此处主要测试数据库的查询,如果环境搭建成功,则可以在userslist.jsp页面显示查询到的用户数据。5.3.1、testmybatis.jsp页面的主要代码实现如下
<h1>测试Spring整合MyBatis</h1>\n<hr/>\n<ahref=&34;>测试Spring整合MyBatis</a>\n
5.3.2、userslist.jsp页面的主要代码实现如下
<c:forEachitems=&34;var=&34;>\n${user}<br/>\n</c:forEach>\n
5.3.3、本实例经过测试可以正常显示查询到的数据,具体可以查看项目源码。5.4、给项目加入声明式事务管理,具体在spring的配置文件中加入下面代码即可
<!–配置事务管理–>\n<!–配置事务管理器–>\n<beanid=&34;class=&34;>\n<propertyname=&34;ref=&34;/>\n</bean>\n<!–配置通知–>\n<tx:adviceid=&34;transaction-manager=&34;>\n<tx:attributes>\n<tx:methodname=&34;read-only=&34;/>\n<tx:methodname=&34;/>\n</tx:attributes>\n</tx:advice>\n<!–配置aop增强–>\n<aop:config>\n<aop:advisoradvice-ref=&34;pointcut=&34;/>\n</aop:config>\n<!–配置dao接口的包路径–>\n<beanid=&34;class=&34;>\n<propertyname=&34;value=&34;/>\n</bean>\n
5.5、到此ssm整合开发环境搭建完成,具体可以参考项目源代码:https://github.com/pkx0128/ssm
关注我的公众号
ssm课程网站系统源码分享非mavn的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于ssm项目实战源码、ssm课程网站系统源码分享非mavn的信息别忘了在本站进行查找哦。
