SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层。
- 使用spring MVC负责请求的转发和视图管理
- spring实现业务对象管理
- mybatis作为数据对象的持久化引擎
1.搭建SSM架构步骤:
- 设计数据库
- 先写实体类entity,定义对象的属性,(参照数据库中表的字段来设置)。
- 编写Mapper.xml(Mybatis),定义功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
- 编写Mapper.java(DAO接口),将Mapper.xml中的操作按照id映射成Java函数。
- 配置spring和mybatis框架的整合(applicationContext.xml)
- 编写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。
- 配置SpringMVC(web.xml)
- 编写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
- 编写JSP页面调用,请求哪些参数,需要获取什么数据。
DataBase –> Entity –> Mapper.xml –> Mapper.Java(DAO) –> Service.java –> Controller.java –> Jsp
2.搭建SSM架构实例(管理员登录)
2.1 设计数据库(以MySql为例)
建立web项目,在src下新建sql脚本(admin.sql),并在数据库中执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| CREATE DATABASE exam_sys;
DROP TABLE admin; CREATE TABLE admin( id INT AUTO_INCREMENT COMMENT '管理员ID', name VARCHAR(30) NOT NULL COMMENT '管理员账号', password VARCHAR(30) COMMENT '管理员密码', CONSTRAINT et_admin_id_pk PRIMARY KEY(id), CONSTRAINT et_admin_name_uk UNIQUE(NAME) );
INSERT INTO admin (name, password) VALUES('admin', '123456'); SELECT * FROM admin; COMMIT;
|
2.2 先写实体类entity,定义对象的属性
参照数据库中表的字段来设置
1 2 3 4 5 6 7 8 9 10 11 12
| package com.exam.entity;
public class Admin { private int id; private String name; private String password;
}
|
2.3 编写AdminMapper.xml(Mybatis),定义功能
对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.exam.mapper.AdminDao"> <select id="findByNameAndPassword" resultType="com.exam.entity.Admin"> select * from admin where name=#{name, jdbcType=VARCHAR} and password=#{password, jdbcType=VARCHAR} </select> </mapper>
|
2.4 编写AdminDao.java,将AdminMapper.xml中的操作按照id映射成Java函数。
导入Mybatis相关jar包:mybatis.jar、mysql-connector-java.jar(数据库驱动)、mybatis-spring.jar(SM整合)
1 2 3 4 5 6 7 8
| package com.exam.mapper;
import org.apache.ibatis.annotations.Param; import com.exam.entity.Admin;
public interface AdminDao { public Admin findByNameAndPassword(@Param("name") String name, @Param("password") String password); }
|
2.5 配置spring和mybatis框架的整合
导入Spring相关jar包:ioc/aop/dao/连接池;添加Spring配置文件(applicationContext.xml)到src下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/exam_sys"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath:com/exam/mapper/*.xml"></property> </bean>
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.exam.mapper"></property> </bean>
<context:component-scan base-package="com.exam.service"/>
|
2.6 编写Service.java,为控制层提供服务
接受控制层的参数,完成相应的功能,并返回给控制层。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.exam.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.exam.mapper.AdminDao;
@Service("adminService") public class AdminService { @Autowired private AdminDao dao; public boolean Login(String name, String password) { try { return dao.findByNameAndPassword(name, password)!=null?true:false; } catch (Exception e) { e.printStackTrace(); } return false; } }
|
2.7 配置SpringMVC
导入jar包(spring-web.jar,spring-webmvc.jar),生成web.xml并配置DispatcherServlet分发请求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping>
<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:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
|
在applicationContext.xml中开启组件扫描(com.controller),开启标注形式mvc,配置视图处理器 并 对静态资源进行放行。
1 2 3 4 5 6 7 8 9 10 11
| <context:component-scan base-package="com.exam.controller"/>
<mvc:annotation-driven />
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/"></property> <property name="suffix" value=".jsp"></property> </bean>
<mvc:default-servlet-handler/>
|
2.8 编写Controller.java,连接页面请求和服务层
获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。(导入Json相关包:jackson-core.jar,jackson-databind.jar,jackson-annotations.jar)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package com.exam.controller;
import javax.servlet.http.HttpServletRequest; 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.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.exam.entity.Admin; import com.exam.service.AdminService;
@Controller @RequestMapping("/admin") public class AdminController { @Autowired private AdminService as; @RequestMapping("/tologin") public String toLogin() { return "admin/login"; } @RequestMapping(value="/login",method=RequestMethod.POST) @ResponseBody public boolean addUser(Admin admin, HttpServletRequest request) { System.out.println("add:"+admin); System.out.println(admin.getName()+"---"+admin.getPassword()); boolean bl = as.Login(admin.getName(), admin.getPassword()); if(bl) { request.getSession().setAttribute("admin", admin); return true; } request.setAttribute("msg", "登录失败"); return false; } }
|
2.9 编写JSP页面调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <form> 管理员: <input id="aName" type="text"><br> 密码:<input id="aPassword" type="text"><br> <input id="loginBtn" type="button" value="登录"> </form> <script src="js/jquery.min.js"></script> <script> $("#loginBtn").on("click", function(){ $.ajax({ url: "admin/login", type: "post", data: { name: $("#aName").val(), password: $("#aPassword").val() }, success: function(res){ alert(res); } }); }); </script>
|
原文链接: http://chaooo.github.io/2018/05/11/spring-ssm.html
版权声明: 转载请注明出处.