SSM
目录
SSH : Struts+Spring容器(IOC/AOP)+Hibernate
SSM : SpringMVC+Spring容器(IOC/AOP)+Mybatis
浏览器应用
restful服务应用
SSH : Struts+Spring容器(IOC/AOP)+Hibernate
SSM : SpringMVC+Spring容器(IOC/AOP)+Mybatis
SSM是用于实现应用层业务处理的技术方案。
浏览器应用
浏览器发送请求-->
SSM-->
HTML响应结果/list.do-->
SSM-->
/list.jsp-->
HTML列表页面
/list.do-->
DispatcherServlet-->
HandlerMapping-->
ListController-->
EmpService-->
EmpDao-->
EMP表(查询)-->
ViewResovler-->
/list.jsp-->
HTML响应结果
1.搭建SSM环境
spring ioc、aop、dao、mvc、test
mybatis、ojdbc、dbcp
mybatis-spring
jstl
sqlmap-config.xml
applicationContext.xml
2.web.xml配置DispatcherServlet
<servlet> <servlet-name>springmvc</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>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
3.spring配置HandlerMapping
<mvc:annotation-driven />
4.编写和配置ListController
<!-- 扫描 --> <context:component-scan base-package="cn.xdl"/> @Controller public class ListController { @Autowired private EmpService empService; @RequestMapping("/list.do") public ModelAndView list(){ ModelAndView mav = new ModelAndView(); List<Emp> list = empService.loadEmps(); mav.getModel().put("emps", list); mav.setViewName("list"); return mav; } }
5.编写EmpService
接口
public interface EmpService { public List<Emp> loadEmps(); }
实现
@Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empDao; @Override public List<Emp> loadEmps() { //调用EmpDao查询 List<Emp> list = empDao.loadAll(); return list; } }
6.编写EmpDao
编写Mapper接口和SQL语句
@MyBatisMapper public interface EmpMapper { @Select("select * from emp order by empno") public List<Emp> loadAll(); }
spring配置mybatis
<bean id="dbcp" class="org.apache.commons.dbcp.BasicDataSource"> <property name="username" value="SCOTT"></property> <property name="password" value="123456"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"></property> <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property> </bean> <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dbcp"></property> <property name="configLocation" value="classpath:sqlmap-config.xml"></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.xdl"></property> <!-- 在cn.xdl包下,并且包含@MyBatisMapper标记的才算有效的Mapper接口 --> <property name="annotationClass" value="cn.xdl.util.MyBatisMapper"> </property> <property name="sqlSessionFactory" ref="factory"> </property> </bean>
7.spring配置ViewResovler
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean>
8.编写list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>员工列表</h1> <table> <tr> <th>编号</th> <th>姓名</th> <th>工资</th> </tr> <c:forEach items="${emps}" var="e"> <tr> <td>${e.empno }</td> <td>${e.ename }</td> <td>${e.sal }</td> </tr> </c:forEach> </table> </body> </html>
restful服务应用
HTTP请求(浏览器/ajax/URL/HttpClient/MockMvc/RestTemplate)-->
SSM-->
JSON响应结果 /list-->
SSM-->
[json,json,json]/list-->
DispatcherServlet-->
HandlerMapping-->
ListController-->
EmpService-->
EmpDao-->
EMP表(查询)-->
JSON响应结果
list.html/list.jsp-->
ajax(调用/list)-->
显示列表