SSM框架——Spring+SpringMVC+Mybatis的搭建教程

一:概述

SSM框架在項目開發中經常使用到,相比於SSH框架,它在僅幾年的開發中運用的更加廣泛。

Spring作爲一個輕量級的框架,有很多的拓展功能,最主要的我們一般項目使用的就是IOC和AOP。

SpringMVC是Spring實現的一個Web層,相當於Struts的框架,但是比Struts更加靈活和強大!

Mybatis是 一個持久層的框架,在使用上相比Hibernate更加靈活,可以控制sql的編寫,使用 XML或註解進行相關的配置!

根據上面的描述,學習SSM框架就非常的重要了!

二:搭建一個SSM的過程

使用Maven管理項目

使用Maven在Eclipse中創建一個webapp的項目 ,具體的創建過程不做演示,如有不會創建的[創建項目]

也可以使用Maven命令進行創建,在Dos窗口進入指定的目錄,執行下面命令:

mvnarchetype:create -DgroupId=org.ssm.dufy -DartifactId=ssm-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

使用命令要注意,系統安裝了Maven,並配置好了環境變量![Maven的安裝和環境變量配置]

導入項目(命名創建),添加依賴

導入項目是IDE中,或者直接在IDE創建,一般默認有【src/main/java】,手動創建【src/test/resources】、【src/test/java】文件夾。

如下項目結構:

然後直接配置 pom.xml文件中的包依賴!

4.0.0org.dufyssmwar0.0.1-SNAPSHOTssmDemohttp://maven.apache.org4.0.5.RELEASE3.2.11.6.61.2.125.1.35org.springframeworkspring-core${spring.version}org.springframeworkspring-webmvc${spring.version}org.springframeworkspring-context${spring.version}org.springframeworkspring-context-support${spring.version}org.springframeworkspring-aop${spring.version}org.springframeworkspring-aspects${spring.version}org.springframeworkspring-tx${spring.version}org.springframeworkspring-jdbc${spring.version}org.springframeworkspring-web${spring.version}org.springframeworkspring-test${spring.version}testorg.springframeworkspring-webmvc${spring.version}org.springframeworkspring-web${spring.version}mysqlmysql-connector-java${mysql.version}com.alibabadruid0.2.23com.alibabafastjson1.1.41log4jlog4j${log4j.version}org.slf4jslf4j-api${slf4j.version}ch.qos.logbacklogback-classic1.1.2ch.qos.logbacklogback-core1.1.2org.logback-extensionslogback-ext-spring0.1.1org.mybatismybatis${mybatis.version}org.mybatismybatis-spring1.2.0javax.servletjavax.servlet-api3.0.1javax.servlet.jspjavax.servlet.jsp-api2.3.2-b01javax.servletjstl1.2junitjunit3.8.1testssmDemo

創建數據庫和表,生成代碼

創建數據庫我參考別人的博客數據庫設計,這塊沒有自己去書寫,直接添上代碼

DROPTABLEIFEXISTSuser_t;CREATETABLEuser_t(idint(11)NOTNULLAUTO_INCREMENT,user_namevarchar(40)NOTNULL,passwordvarchar(255)NOTNULL,ageint(4)NOTNULL, PRIMARYKEY(id) )ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;/Data for the table user_t /insertintouser_t(id,user_name,password,age)values(1,'測試','sfasgfaf',24)

生成代碼請查看:

[Mybatis自動生成代碼]

生成的代碼導入圖片解釋:

Spring 和 mybatis整合,連接數據庫,進行Junit測試

將生成的代碼拷貝到項目中,然後進行Spring和Mybatis的整合,添加配置文件!

主要有

applicationContent.xml :Spring的相關配置!

Spring-mhbatis.xml : Spring和Mybatis集成配置!

jdbc.properties : 數據庫信息配置!

logback.xml : 日誌輸出信息配置!(不做介紹,詳細信息查看源碼)

主要介紹applicationContext.xml、Spring-mhbatis.xml、jdbc.properties。主要內容如下:

jdbc.properties

jdbc_driverClassName=com.mysql.jdbc.Driverjdbc_url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8jdbc_username=rootjdbc_password=root

applicationContext.xml

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

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.springframework.org/schema/tx/spring-tx-3.0.xsd

"> 可以不在配置 -->

spring-mybatis.xml

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

測試代碼,兩種方式:

測試1:

package org.ssm.dufy.service;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4Cla***unner;importorg.ssm.dufy.entity.User;/**

  • 配置spring和junit整合,junit啓動時加載springIOC容器 spring-test,junit

*/@RunWith(SpringJUnit4Cla***unner.class)// 告訴junit spring配置文件@ContextConfiguration({"classpath:applicationContext.xml"})publicclassIUserServiceTest{ @AutowiredpublicIUserServiceuserService; @Testpublicvoid getUserByIdTest(){Useruser = userService.getUserById(1);System.out.println(user.getUserName()); } }

測試2:

package org.ssm.dufy.service;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importorg.ssm.dufy.entity.User;publicclassIUserServiceTest2{publicstaticvoid main(String[] args) {ApplicationContextapplication = newClassPathXmlApplicationContext("applicationContext.xml");IUserServiceuService = (IUserService) application.getBean("userService");Useruser = uService.getUserById(1);System.out.println(user.getUserName()); }}

5:整合SpringMVC,添加配置,創建jsp

SpringMVC需要的依賴在pom.xml中已經加上了,現在需在Web項目中的web.xml中添加啓動SpringMVC啓動配置和Spring整合SpringMVC的配置了。

新增如下兩個文件:

spring-mvc.xml

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.2.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> application/json -->json=application/json xml=application/xml html=text/html/ 映射時,能映射靜態資源 -->

web.xml

SSM-DEMOcontextConfigLocationclasspath:applicationContext.xml

webAppRootKey

springmvc.root

-->SpringEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtrueSpringEncodingFilter/*logbackConfigLocationclasspath:logback.xmlch.qos.logback.ext.spring.web.LogbackConfigListenerorg.springframework.web.context.ContextLoaderListenerdispatcherServletorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring-mvc.xml1dispatcherServlet/index.jsp

新增index.jsp文件

<%@pagecontentType="text/html; charset=utf-8"%>

Hello World!

6.啓動web服務,測試

將上面的項目添加到Tomcat中,啓動,控制檯沒有報錯,並在地址欄訪問,http://localhost:8080/ssm。頁面顯示Hello World! 項目配置ok!

7:編寫Controller,和對應得業務界面

新增UserController,通過參數傳遞uid獲取用戶,若用戶存在,跳轉到showName.jsp ,若用戶不存在,則跳轉到error.jsp,並返回提示信息!

package org.ssm.dufy.web;importjavax.servlet.http.HttpServletRequest;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.servlet.ModelAndView;importorg.ssm.dufy.entity.User;importorg.ssm.dufy.service.IUserService;@ControllerpublicclassUserController{ @AutowiredprivateIUserServiceuserService; @RequestMapping(value="/showname",method=RequestMethod.GET)publicStringshowUserName(@RequestParam("uid") int uid,HttpServletRequestrequest,Modelmodel){System.out.println("showname");Useruser = userService.getUserById(uid);if(user != null){ request.setAttribute("name", user.getUserName()); model.addAttribute("mame", user.getUserName());return"showName"; } request.setAttribute("error","沒有找到該用戶!");return"error"; }}

Jsp內容如下:

showName.jsp

<%@pagecontentType="text/html; charset=utf-8"%>show name

三:遇到的問題

1:找不到UserService,報錯

可能是包掃描路徑的問題,檢查一下Service是否在掃描的範圍內

2:jsp接收不到request.setAttribute("","");內容

查資料說是因爲 JSP的版本問題,可以在Jsp 上面添加 <%@ page isELIgnored="false" %>

或者修改web.xml ,添加version版本!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章