整合ssm

步骤:1.导入包    2.配置web.xml    3.spring配置文件    4.spring mvc配置文件 5.mybatis配置文件(也可以不设置,和spring整合在一起)


web.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
 <display-name>springandmybatis</display-name>
  <!-- spring begin -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application.xml</param-value><!--spring 配置文件名称application.xml-->
  </context-param>
 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 <!-- spring end -->
 <!-- spring mvc begin -->
  <servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- spring mvc end -->

说明:Spring提供ServletContentListener的一个实现类ContextLoaderListener监听器,该类可以作为Listener使用,在启动Tomcat容器的时候,该类的作用就是自动装载ApplicationContext(为上文中的application)的配置信息

spring配置文件(这里使用命名application.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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!-- read properties -->
    <bean   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    	<property name="location"   value="classpath:jdbc.properties"/>
    </bean>
    <!-- read properties end -->
    <!-- dataSource setting -->
	<bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName"  value="${jdbc.driverClassName}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>
	<!--dataSource setting end  -->
	<!-- factory setting -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation"  value="classpath:mybatis-config.xml"/>
	</bean>
	<!-- factory setting end -->
	<!-- 配置声明事务begin -->
		<!-- 事务管理器tmange -->
	<bean id="tManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
		
	<tx:advice id="tadivice" transaction-manager="tManager">
		<tx:attributes>
			<tx:method name="save" propagation="REQUIRED"/>
			<tx:method name="get"  read-only="true"/>		
		</tx:attributes>
	</tx:advice>
	<!-- 配置声明事务end -->
	<aop:config >
		<aop:pointcut  expression="execution(* com.czy.serviceimp.*.*(..))"  id="pointcut"/>
		<aop:advisor advice-ref="tadivice"  pointcut-ref="pointcut"/>				
	</aop:config>
	<context:component-scan base-package="com.czy"/><!--扫描注解-->
	<!-- settings  end -->
</beans>

spring mvc配置文件(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.xsd 
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd 
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- json begin -->
	<bean id="stringConverter"  
        class="org.springframework.http.converter.StringHttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>text/plain;charset=UTF-8</value>  
            </list>  
        </property>  
    </bean>  
    <bean id="jsonConverter"  
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>  
   
    <bean  
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <ref bean="stringConverter" />  
                <ref bean="jsonConverter" />  
            </list>  
        </property>  
    </bean>  
    <!-- json end -->
    
	<!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->	
	<context:component-scan base-package="com.czy.controller"/>
	<!-- interceptor begin -->


</beans>

mybatis配置文件(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
	<typeAliases>
		<package name="com.czy.bean"/>
	</typeAliases>
	<mappers>
		<mapper resource="com/czy/mappers/StudentMapper.xml"/>
		<!-- <package name="com.czy.bean"/>-->	
	</mappers>
</configuration>

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czy.mappers.StudentMapper">
	<select id="list" resultType="Student">
		select *from student
	</select>
	
</mapper>

spring mvc中的controller类:

package com.czy.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import com.czy.bean.Student;
import com.czy.service.BaseService;
import com.czy.serviceimp.UserServiceImp;
import com.sun.org.apache.bcel.internal.generic.NEW;


@Controller("firstController")
@Scope("prototype")
public class FirstController {
    @Autowired
    private UserServiceImp userService;
    @RequestMapping("/show.do")
    public String showinfo(ModelMap mm){
       System.out.println("i am pre");
     
       List<Student> list=userService.list();
       System.out.println(list.size()+"size");
        mm.addAttribute("list",list);
        return "index.jsp";
    }
    public UserServiceImp getUserService() {
        return userService;
    }
    
    public void setUserService(UserServiceImp userService) {
        this.userService = userService;
    }
}

UserDaoImp:

package com.czy.daoimp;

import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.czy.bean.Student;
import com.czy.dao.UserDao;

@Repository("userDao")
public class UserDaoImp extends SqlSessionDaoSupport implements UserDao{
    @Autowired
    @Override
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        // TODO Auto-generated method stub
        super.setSqlSessionFactory(sqlSessionFactory);
    }
    @Override
    public List<Student> list() {
        // TODO Auto-generated method stub
        return getSqlSession().selectList("com.czy.mappers.StudentMapper.list");
    }
}

UserServoceImp

package com.czy.serviceimp;

import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import com.czy.bean.Student;
import com.czy.dao.UserDao;
import com.czy.service.BaseService;

import sun.reflect.generics.tree.BaseType;


@Service("userService")
public class UserServiceImp extends SqlSessionDaoSupport implements BaseService{
    @Autowired
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public UserServiceImp() {
        System.out.println("new  userservice ok");
        // TODO Auto-generated constructor stub
    }
    @Autowired//自动装配,从application.xml中
    @Override
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
        // TODO Auto-generated method stub
        System.out.println("i am sqlsesion");
        super.setSqlSessionFactory(sqlSessionFactory);
    }
    @Override
    public List<Student> list() {
        // TODO Auto-generated method stub
        return userDao.list();
    }
    
   
}

这个案例的思路其实很简单,客户通过客户端发起请求,请求交由分发器处理,寻找处理器,处理方法中通过dao层来操作数据库,查询出所有学生信息,service层来调用dao层来实现功能,将信息存入数据域中,在调用视图层来实现信息;

注意的问题:  spring mvc 使用@Controller注解与struts2中的Action不同,Controller默认为单例模式,如果在单例模式中设置了全局变量,那么就需要将controller设置成原型模式(prototype),当然,应该尽量避免使用全局变量,特别是当中的全局变量使用注入,必须使用原型,否则将会报错,注入失败;

项目图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值