步骤
- 导入mybatis 所有jar 和spring 基本包,spring-jdbc,spring-tx,spring-aop,spring-web,spring整合mybatis 的包等
- 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 上下文参数-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 设置Spring配置文件-->
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 封装了一个监听器,帮助加载Spring的配置文件-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
- 编写spring 配置文件applicationContext.xml
- 编写代码
1 正常编写pojo
2 编写mapper 包下时必须使用接口绑定方案或注解方案(必须有接口)
3 正常编写Service 接口和Service 实现类
3.1 需要在Service 实现类中声明Mapper 接口对象,并生成
get/set 方法
4 spring 无法管理Servlet,在service 中取出Servie 对象
原因:servicrImpl service的实现类由Spring管理了,所以不能在servlet中new 一个serviceImpl类。
所以要重Spring中把这个对象取出来
@WebServlet("/show")
public class AirportServlet extends HttpServlet {
private AirportService airportService;
// 在下面service方法执行之前会执行它
@Override
public void init() throws ServletException {
// 对service实例化
ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
airportService = ac.getBean("airportService", AirportServiceImpl.class);
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("list", airportService.show());
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
}
分析:
tomcat启动时会自动加载web.xml这个配置文件,所以在web.xml中做下面步骤2的配置,让web.xml读取Spring的配置文件,所以当tomcat启动时,就会读取Spring的配置文件,将其放在WebApplicationContext容器中
- 所以Spring和Web整合后所有信息都存放在WebApplicationContext中,通过下面代码将serviceImpl对象拿出来
ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
airportService = ac.getBean("airportService", AirportServiceImpl.class);
网友评论