[Java实战]SSM整合框架:备忘

142 阅读2分钟

步骤分解:

1.用eclipse创建一个web项目

2.在本地mysql数据库中创建一个名为springdb的数据库,创建一个名为student的表,主键id(int,自增),name(String),age(int),虚拟几个假数据

3.在eclipse导入项目,或者仿写

4.用eclipse的tomcat测试

详情如下:

如图:

1.实体类

Student.java

package com.dongbao.beans;
/**
 * 实体类
 * @author zhang
 *
 */
public class Student {
	//主键id,自增
	private Integer id;
	//名字
	private String name;
	//年龄
	private Integer age;
	public Integer getId() {
		return id;
	}
	//setId 不用设置是因为数据库id主键自增
	/*public void setId(Integer id) {
		this.id = id;
	}*/
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
}

2.dao层

StudentDao.java

package com.dongbao.dao;

import java.util.List;

import com.dongbao.beans.Student;
/**
 * 学生dao层
 * @author zhang
 *
 */
public interface StudentDao {
	/**
	 * 插入学生
	 * @param student
	 * @return
	 */
	int insertStudent(Student student);
	/**
	 * 查询所有学生
	 * @return
	 */
	List<Student> selectAllStudents();
}

StudentDao.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.dongbao.dao.StudentDao">
	<!-- 插入学生 -->
	<insert id="insertStudent">
		insert into student(name,age) values(#{name},#{age})
	</insert>
	<!-- 查询所有学生 -->
	<select id="selectAllStudents" resultType="Student">
		select id,name,age from student order by id desc
	</select>

</mapper>

3.service层

StudentService.java

package com.dongbao.services;

import java.util.List;

import com.dongbao.beans.Student;
/**
 *	学生service层
 * @author zhang
 *
 */
public interface StudentService {
	/**
	 * 插入新学生
	 * @param student
	 * @return
	 */
	int addStudent(Student student);
	/**
	 * 查找所有学生
	 * @return
	 */
	List<Student> findAllStudents();
}

StudentServiceImpl.java

package com.dongbao.services.impl;

import java.util.List;

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

import com.dongbao.dao.StudentDao;
import com.dongbao.beans.Student;
import com.dongbao.services.StudentService;
/**
 * 学生对象实现类
 * @author zhang
 *
 */
@Service //扫描这个service
public class StudentServiceImpl implements StudentService{
	//引用类型  使用注解给引用类型赋值 : @Autowired, @Resource. 可以byType ,byName
	
	//byType
	//注入dao层
	@Autowired
	private StudentDao stuDao;
	
	@Override
	public int addStudent(Student student) {
		int r = stuDao.insertStudent(student);
		return r;
	}

	@Override
	public List<Student> findAllStudents() {
		//List<Student> students = stuDao.selectAllStudents();
		//处理集合数据 ,在返回
		//return students;
		return stuDao.selectAllStudents();
	}
	
}

4.controller层

JumpController.java

package com.dongbao.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 跳转controller
 * @author zhang
 *
 */
@Controller
@RequestMapping("jump")
public class JumpController {

	//定义方法实现跳转
	@RequestMapping("topage.do")
	public String topage(String target){
		//有视图解析器,使用逻辑名称.
		//return "addStudent"; //执行forward
		return target;
	}
}

StudentController.java

package com.dongbao.controllers;

import java.util.ArrayList;
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 org.springframework.web.servlet.ModelAndView;

import com.dongbao.beans.Student;
import com.dongbao.services.StudentService;
/**
 * 学生controller层
 * @author zhang
 *
 */
@Controller
@RequestMapping("student")
public class StudentController {
	
	//定义引用类型
	//使用注解给引用类型赋值 : @Autowired, @Resource. 可以byType ,byName
	
	//byType
	@Autowired
	private StudentService stuService;
	/**
	 * 添加学生
	 */
	@RequestMapping(value="addStudent.do")
	public ModelAndView addStudent(Student student){
		ModelAndView mv  = new ModelAndView();
		
		int rows  = stuService.addStudent(student);
		if( rows > 0 ){
			mv.addObject("msg", "注册成功!!!");
			//mv.setViewName("success");
			
			//使用重定向,不能访问/WEB-INF/
			//mv.setViewName("redirect:/WEB-INF/views/listStudent.jsp");
			
			//mv.setViewName("redirect:listStudent.do");
			
			mv.setViewName("redirect:tojsp.do");
			
		} else {
			mv.addObject("msg", "注册失败!!!");
			mv.setViewName("fail");
		}	
		return mv;
	}
	
	@RequestMapping("tojsp.do")
	public String toJsp(){
		return "listStudent";//forward可以访问 /WEB-INF/
	}
	
	/**
	 * 浏览学生,响应Ajax
	 */
	@RequestMapping("listStudent.do")
	@ResponseBody
	public List<Student> listStudent(){
		List<Student> mylist = stuService.findAllStudents();
		//为了避免null的情况
		if( mylist ==null || mylist.size() < 1) {
			mylist = new ArrayList<>();
		}
		return mylist;
	}
}

5.在src/resources/下,写入4个配置文件

applicationContext.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: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/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- spring配置文件, 管理Service和Dao的对象. 非视图层的对象 -->
	
	<!-- 创建Service对象,使用注解,注册组件扫描器 
	     base-package="@Service的所在包名"
	-->
	<context:component-scan base-package="com.dongbao.services" />
	
    <!-- 创建Mybatis对象交给spring框架管理 -->
    
    <!-- 引入属性配置文件 -->
    <context:property-placeholder location="classpath:resources/dbconfig.properties"/>
    
    <!-- 注册数据源,使用c3p0 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    	<property name="driverClass" value="${jdbc.driver}" />
    	<property name="jdbcUrl" value="${jdbc.url}" />
    	<property name="user" value="${jdbc.username}" />
    	<property name="password" value="${jdbc.pwd}" />
    </bean>
    
    <!-- 注册SqlSessionFacotryBean,创建SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    	<property name="dataSource" ref="dataSource" />
    	<property name="configLocation" value="classpath:resources/mybatis.xml" />
    </bean>

	<!-- 注册mybatis的扫描器,使用mybatis的动态代理技术,创建Dao接口的是实现类对象.
	      框架是在MapperScannerConfigurer,通过sqlSessionFactoryBeanName获取到SqlSessionFactory对象
	      然后在通过SqlSessionFactory对象openSession()获取到SqlSession对象. 框架使用SqlSession对象循环
	   basePackage值的包 com.dongbao.dao 把包中每个Dao接口,都调用 SqlSession.getMapper(Dao接口的class)
	   
	   for(com.dongbao.dao的每个接口){
	       StudentDao studentDao = SqlSession.getMapper(StudentDao.class);
	       //把studentDao存放到Spring的Map中. Map<接口名的首字母小写,dao对象)
	   }
	   
	 --> 
	 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	 	<!-- 指定SqlSessionFactory -->
	 	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	 	<!-- 指定Dao接口的包名 -->
	 	<property name="basePackage" value="com.dongbao.dao"></property>
	 </bean> 
	 
	   

</beans>

dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springdb
jdbc.username=root
jdbc.pwd=root

dispatcherServlet.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: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">

	<!-- springmvc的配置文件,定义视图层的对象 -->
	
	<!-- 注册组件扫描器, 创建处理器对象 -->
	<context:component-scan base-package="com.dongbao.controllers" />

    <!-- 注册视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="prefix" value="/WEB-INF/views/" />
    	<property name="suffix" value=".jsp" />
    </bean>
    
    <!-- 注册注解驱动(先写上) -->
    <mvc:annotation-driven />
</beans>

mybatis.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.dongbao.beans"/>
	</typeAliases>
	
	<!-- sql映射文件的位置 -->
	<mappers>
		<package name="com.dongbao.dao"/>
	</mappers>
</configuration>

6.最后在WebContent\WEB-INF目录下更改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>dongbao_ssm</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 注册spring的监听器ContextLoaderListener, 目的是创建spring的容器对象,
              加载配置文件, 创建配置文件中的所有java对象 -->
  
  <!-- 指定自定义的配置文件 -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:resources/applicationContext.xml</param-value>
  </context-param>
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 注册中央调度器,创建springmvc的容器,加载springmvc配置文件,创建文件中的视图层对象 -->
  <servlet>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 指定配置文件 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:resources/dispatcherServlet.xml</param-value>
  	</init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  <!-- 注册字符集过滤器,解决post请求乱码的问题 -->
  <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>
  	
  	<!-- 指定强制请求使用encoding的值 -->
  	<init-param>
  		<param-name>forceRequestEncoding</param-name>
  		<param-value>true</param-value>
  	</init-param>
  	
  	<!-- 指定强制应答使用encoding的值 -->
  	<init-param>
  		<param-name>forceResponseEncoding</param-name>
  		<param-value>true</param-value>
  	</init-param>
  </filter>
  
  <filter-mapping>
  	<filter-name>characterEncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>

7.基本就好了,剩下的可以自行下载源代码,本人学艺不精,请各位大神轻喷

8.效果图

下载地址:

百度云密码:cx15