您的位置:首页 > 其它

基于全注解整合ssm框架

2018-04-10 21:11 363 查看
一  创建项目

1.     修改项目编码为utf-8

2.     创建maven web项目



    创建完成以后 项目有错 想不用管 去执行第三步

3.     配置maven插件(两个插件)<!-- 添加maven插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- 编译时的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>        添加完插件如果还有错 执行下面步骤
4.     执行maven update     (并添加ssm需要的依赖)
    <!-- 整合spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- 整合jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>
<!--添加mysql驱动程序依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- 整合DRUID -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.23</version>
</dependency>
<!-- 整合junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 整合mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
5.     设置项目targeted runtimes



6.     修改项目project facets (jdk1.8)


    

二 资源整合

1.     搭建Spring MVC 环境

    1)创建前端控制器(主要实现如下接口)import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@ComponentScan("com.jt")
@EnableWebMvc
public class AppServletConfig extends WebMvcConfigurerAdapter {

}    2)创建如下类并实现下面的接口
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * tomcat启动时
 * 1)找到类路径下的META-INF目录
 * 2)找到META-INF文件夹下的services目录
 * 3)读取services目录下的/META-INF/services/javax.servlet.ServletContainerInitializer目录
 * 4)依据文件中定义的类全名(SpringServletContainerInitializer),并创建对象
 * 5)依据文件中定义的类上的注解@HandlesTypes注解声明的类型进行加载
 * 6)然后调用类(SpringServletContainerInitializer)中的onStartup方法,并将@HandlesTypes声明这些类型传递给此方法
 * 7)最后进行对象的创建和初始化
 *
 */
public class JtWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     *加载配置类
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        
        return new Class[] {AppServletConfig.class};
    }

    /**
     * 过滤的路径
     */
    @Override
    protected String[] getServletMappings() {
    
        return new String[] {"*.do"};
    }

}
3)新建一个Controller进行测试package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/blog")
public class BlogController {

@RequestMapping("blogUI.do")
@ResponseBody
public String blogUI() {
return "blog";
}

}  4)访问这个Controller返回如下这成功



2.     整合Druid 连接池(两个依赖:mysql驱动,druid库文件)
    1)创建如下配置类

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ControllerAdvice;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
@PropertySource("classpath:config.properties")
@ComponentScan("com.jt")
public class AppRootConfig {

/**
* 获取数据源
*
* @param driver
* @param url
* @param uname
* @param password
* @return
*/
@Bean("dataSource")
public DruidDataSource getDruidDataSource(@Value("${driver}") String driver, @Value("${url}") String url,
@Value("${uname}") String uname, @Value("${password}") String password) {

DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(uname);
dataSource.setPassword(password);

return dataSource;
}

/**
* 创建sqlSessionFactory对象
*
* @param dataSource
* @return
*/
@Bean("sqlSessionFactory")
public SqlSessionFactoryBean getSqlSessionFactory(@Autowired DruidDataSource dataSource) {

SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.addMappers("com.jt.dao");
sessionFactoryBean.setConfiguration(configuration);

return sessionFactoryBean;
}

/**
* 扫描dao包
*
* @return
*/
@Bean("mapperScannerConfigurer")
public MapperScannerConfigurer getMapperScannerConfigurer() {

MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setBasePackage("com.jt.dao");
configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");

return configurer;
}

}
    2)config.properties文件如下driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///cgbmybatis
uname=root
password=root    3)创建完成以后进行junit测试package test;

import java.sql.SQLException;

import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.alibaba.druid.pool.DruidDataSource;
import com.jt.config.AppRootConfig;

public class Test1 {
private AnnotationConfigApplicationContext context;
@Before
public void init() {
context = new AnnotationConfigApplicationContext(AppRootConfig.class);
}

@Test
public void text1() throws SQLException {
DruidDataSource bean = context.getBean("dataSource",DruidDataSource.class);
System.out.println(bean.getConnection());
}

@Test
public void text2() throws SQLException {
SqlSessionFactory factoryBean = context.getBean("sqlSessionFactory",SqlSessionFactory.class);
System.out.println(factoryBean);
}

@After
public void close() {
context.close();
}

}


3.     整合SSM 框架 并进行测试

1)创建实体(Blog)以及dao和service的接口和实现类
    a. Blog实体类
package com.jt.entity;

import java.io.Serializable;
import java.util.Date;

/**
* Blog实体类
*/
public class Blog implements Serializable {

private static final long serialVersionUID = 1L;
public Integer id;
public String title;
public String content;
public Date createdTime;
public String authorId;

public Blog() {
super();
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public Date getCreatedTime() {
return createdTime;
}

public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}

public String getAuthorId() {
return authorId;
}

public void setAuthorId(String authorId) {
this.authorId = authorId;
}

@Override
public String toString() {
return "Blog [id=" + id + ", title=" + title + ", content=" + content + ", createdTime=" + createdTime
+ ", authorId=" + authorId + "]";
}

}    b. dao接口package com.jt.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.jt.entity.Blog;

public interface BlogDao {

/**
* 分页查询方法
*/
@Select("select * from blog limit #{startIndex},#{pageSize}")
public List<Blog> findPageBlogs(@Param("startIndex") Integer startIndex,@Param("pageSize") Integer pageSize);

}
    c. service接口和它的实现类package com.jt.service;

import java.util.List;

import com.jt.entity.Blog;

public interface BlogService {

/**
*
* @param pageCurrent 当前页的页码值
* @return
*/
public List<Blog> findPageBlogs(Integer pageCurrent);
}
package com.jt.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jt.dao.BlogDao;
import com.jt.entity.Blog;
import com.jt.service.BlogService;

@Service
public class BlogServiceImpl implements BlogService {

@Autowired
private BlogDao blogDao;

@Override
public List<Blog> findPageBlogs(Integer pageCurrent) {
int pageSize =3;
int startIndex =(pageCurrent-1)*pageSize;
return blogDao.findPageBlogs(startIndex, pageSize);
}

}
d. controller控制层package com.jt.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jt.entity.Blog;
import com.jt.service.BlogService;

@Controller
@RequestMapping("/blog")
public class BlogController {

@Autowired
private BlogService blogservice;

@RequestMapping("blogUI.do")
@ResponseBody
public List<Blog> blogUI(Integer pageCurrent) {
blogservice.findPageBlogs(pageCurrent);

return blogservice.findPageBlogs(pageCurrent);
}

}


4.     进行测试



5.备注
    1)数据库结构
CREATE TABLE `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`content` varchar(500) NOT NULL,
`createdTime` date DEFAULT NULL,
`authorId` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;    2)如果返回一个视图需要在AppServletConfig这个类  重写这个方法 /**
* 访问视图路径
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/pages/", ".jsp");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐