spring mvc学习(60):ssm项目整合
SSM整合
?
建立springmvc項目,先跑起來,再整合spring和mybatis
一.SpringMVC建立
1.新建maven工程,安裝tomcat
2.導(dǎo)入pom
<!-- springmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.1.3.RELEASE</version></dependency>3.webapp下建立如下文件
web-xml的內(nèi)容如下
<?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/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"><display-name>spring_maven</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 配置DispatcherServlet --><servlet><servlet-name>ssm1</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 自定義servlet.xml配置文件的位置和名稱,默認(rèn)為WEB-INF目錄下,名稱為[<servlet-name>]-servlet.xml,此處不定義,則為ssm1.xml--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ssm1</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>4.main/resources下建立,如下三個xml文件
分別為mybatis的配置文件,spring的配置文件,springmvc的配置文件,此處暫時只寫springmvc-servlet的內(nèi)容,剩下兩個等說到的時候再填充。springmvc-servlet的內(nèi)容為:
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"><!-- 讓掃描spring掃描這個包下所有的類,讓標(biāo)注spring注解的類生效 --><context:component-scan base-package="com.bd"/><!-- 開啟注解 --><mvc:annotation-driven /><!-- 配置視圖解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前綴 --><property name="prefix" value="/views/"></property><!-- 后綴 --><property name="suffix" value=".jsp"></property></bean><!--釋放靜態(tài)資源 --><mvc:default-servlet-handler/></beans>到此為止,springmvc已經(jīng)完成,此時可以跑一下springmvc,看是否出現(xiàn)問題
springmvc的測試
1.在main/java下建立以下四個包
并在controller包中建立一個UserController類,用于測試springmvc
pojo:實體類(用于映射數(shù)據(jù)庫中的字段)
dao:數(shù)據(jù)訪問層(規(guī)定接口,用于定義訪問數(shù)據(jù)庫中的方法)
service:操作數(shù)據(jù)訪問層,返回處理后的數(shù)據(jù)給controller層
controller:控制器(功能類似于servlet,位于web層和service層之間)
?
UserController.java:
package com.bd.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class UserController {@RequestMapping("/test")public ModelAndView test1() {System.out.println("this is userTest");return null;}}?
2. webapp/index.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><a href="test">To test</a></body></html>3.測試結(jié)果如下
二.集成spring
1.導(dǎo)入pom文件
由于maven會自動導(dǎo)入相關(guān)聯(lián)的包,在導(dǎo)入spring-mvc的jar包的時候,spring的基本包都已經(jīng)集成上去,故此處不需要導(dǎo)入
2.擴(kuò)充web.xml中的內(nèi)容,將spring繼承進(jìn)web.xml中
? <!-- 加載spring核心文件 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 指定Spring Bean的配置文件所在目錄。默認(rèn)配置在WEB-INF目錄下 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-context.xml</param-value></context-param><!--中文亂碼 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>?
3.在spring-context.xml中開啟注解,spring-context.xml內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--開啟注解自動生成bean --><context:component-scan base-package="com.bd"/></beans>spring的集成暫時完成,等下需要將mybatis集成進(jìn)spring中時,再進(jìn)一步進(jìn)行配置
測試spring
1.在main/java下建立UserService.java
package com.bd.service;import org.springframework.stereotype.Service;@Servicepublic class UserService {public void test() {System.out.println("this is UserService");}}將UserController中的內(nèi)容更改為
package com.bd.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.bd.service.UserService;@Controllerpublic class UserController {@AutowiredUserService userService;@RequestMapping("/test")public ModelAndView test1() {System.out.println("this is userTest");userService.test();return null;}}測試結(jié)果:
? ??
此時spring已經(jīng)成功集成,現(xiàn)在只剩下最后的mybatis
三.MyBatis的集成
1.導(dǎo)入pom.xml文件
<!-- spring-mybatis整合包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><!-- mybatis相關(guān)包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.1.3.RELEASE</version></dependency><!-- 導(dǎo)入mysql連接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.9</version></dependency>2.在spring中整合mybatis,即在spring-context.xml添加如下內(nèi)容
<!--加載外界文件 --><context:property-placeholder location="classpath:jdbc.properties"/><bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.user}"/><property name="password" value="${jdbc.password}"/></bean><!-- 讀取mybatis文件 --><!-- 配置SqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--mybatis和數(shù)據(jù)庫連接 注入數(shù)據(jù)源 --><property name="dataSource" ref="dataSource" /><!--讀取mybatis的總配置 --><property name="configLocation" value="classpath:mybatis-config.xml"></property><!-- 類型別名掃描包 --><property name="typeAliasesPackage" value="com.bd.pojo"></property><!--配置文件和接口分離 --><property name="mapperLocations" value="classpath:*/*.xml"></property></bean><!--mapper.xml --><!-- 配置接口--><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.bd.dao.UserDao" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>2.1 在dao包和pojo包下分別建立UserDao.java接口和User.java類(注意,一個是接口,一個是類)
UserDao.java
package com.bd.dao;import com.bd.pojo.User;public interface UserDao {User getUser(String username);}User.java
package com.bd.pojo;public class User {int id;String username;String password;@Overridepublic String toString() {return "User [id=" + id + ", username=" + username + ", password=" + password + "]";}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}2.2 新建一個mapper文件夾,在里面配置UserDao的實現(xiàn):UserDao.xml,并在main/resources下新建jdbc.properties文件
UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.bd.dao.UserDao"><select id="getUser" resultType="User">select * from user where username=#{username}</select></mapper>jdbc.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8jdbc.user=rootjdbc.password=1234563.配置mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration></configuration>此時編譯一下,啟動servlet,看是否有問題,若問題,此時最基本的ssm框架已經(jīng)搭建成功,簡單調(diào)試一下即可
Mabatis測試
1.建立test數(shù)據(jù)庫,并添加一張user表,如下:
2.修改UserService中的代碼
package com.bd.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.bd.dao.UserDao;import com.bd.pojo.User;@Servicepublic class UserService {@AutowiredUserDao userDao;public void test() {User user=userDao.getUser("aaa");System.out.println(user);}}3.測試結(jié)果如下:
?
四.其他
1.mybatis.config實現(xiàn)分頁,開啟二級緩存,開啟駝峰法
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><!-- 駝峰法 只能是數(shù)據(jù)庫是帶下劃線的時候可以匹配pojo不帶下劃線的字段 --><setting name="mapUnderscoreToCamelCase" value="true"/><!-- 開啟二級緩存 --><setting name="cacheEnabled" value="true"/></settings><plugins><!-- com.github.pagehelper為PageHelper類所在包名 --><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins></configuration>2.log4j.properties
log4j.rootLogger=DEBUG,A1log4j.logger.org.mybatis=DEBUGlog4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern =%-d{yyyy-MM-dd HH:mm:ss,SSS} %m%n3.添加事務(wù)(spring-context.xml添加下列代碼)
<!-- 數(shù)據(jù)源事務(wù)管理平臺 可以管理不同的數(shù)據(jù)庫 --><bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入相應(yīng)的數(shù)據(jù)源 --><property name="dataSource" ref="dataSource"/></bean><!-- 開啟事務(wù)注解標(biāo)簽 --><tx:annotation-driven/>并在service層中需要加強(qiáng)的函數(shù)上,添加
@Transactional4.pom文件
<dependencies><!--jstl、servlet-api、--><!-- jstl --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- jsp-api --><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><!-- Jackson Json處理工具包 springmvc 處理json數(shù)據(jù)的 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.7.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.7.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.7.2</version></dependency><!-- 日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 日志包依賴 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- 單元測試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope><version>3.8.2</version></dependency><!-- 分頁插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.4</version></dependency></dependencies><build><plugins><!-- 配置Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin </artifactId><configuration><!-- 項目運行后使用的端口號 --><port>80</port><!-- 項目訪問路徑 --><path>/</path><uriEncoding>UTF-8</uriEncoding></configuration></plugin></plugins></build>?
總結(jié)
以上是生活随笔為你收集整理的spring mvc学习(60):ssm项目整合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J2EE6 servlet sessio
- 下一篇: shiro学习(13):springMV