Spring&Web整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC或Strugs2整合Spring的基础。
一.创建maven项目,搭基础架构分层
entity book实体 bookid bookname bookprice
dao IBookDAO 添加图书的方法addBook()
IBookDAO.XML Sql语句 添加图书名称与价格
service 有着和 dao层一样的添加图书的方法 addBook()
serviceimpl 重写addBook()方法 注入一个dao return dao.addBook()
编写servlet
二、引入Spring开发基础jar包写在pom文件中
<!--spring基础jar-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--spring JDBC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!--spring JDBC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!--mysql依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- Spring整合JavaWeb的包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<!--JavaEE的依赖-->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>
三.resources下的配置文件
3.1jdbc.properties 配置文件中写入你连接数据库中的 url、driver、username、password
因为我的Mysql没有密码,所以可以不写password
3.2MyBatis-configuration.xml配置文件
只需要配置一个别名就可以
3.3接下来就是最重要的applicationContestSSM.xml文件的配置
绑定bookservice时 property中的ref属性IBookDAO为红色,工具识别不到,是保存在内存中的对象,只有运行是才可以获得,所以颜色显示异常,不影响编译运行
四、webapp下创建一个添加图书的页面
五、Servlet编写
public class BookServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决乱码 request.setCharacterEncoding("utf-8"); //接受数据 String bookname = request.getParameter("bookname"); int bookpritce = Integer.parseInt(request.getParameter("bookpritce")); Book book = new Book(); book.setBookname(bookname); book.setBookpritce(bookpritce); //调度service实现添加 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContestSSM.xml"); IBookService bookService = (IBookService)ac.getBean("bookService"); int i = bookService.addBook(book); if(i>0){ request.getRequestDispatcher("/index.jsp").forward(request,response); }else{ request.getRequestDispatcher("/addBook.jsp").forward(request,response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
六、测试,访问addBook.jsp添加图书。去数据库中查看结果
但是在测试的过程中发现:
每次执行Servlet的时候都会加载Spring环境,如何解决?
* 将加载的信息内容保存到ServletContext中,ServletContext对象是全局对象,服务器启动时就会创建,在创建ServletContext时就会加载Spring环境。
* 可以创建一个监听器:ServletContextListener,用于监听ServletContext对象的创建和销毁。
配置监听器
将Spring容器的初始化操作,交由Web容器负责。
web.xml中
<!--设置监听器,就是系统的一个监听器,监听ServletContext创建,Spring容器加载上--> <!--所有的Servlet共享的一个设置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContestSSM.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
在BookServlet中使用WebApplicationContextUtils的getRequiredWebApplicationContext方法来获取Servlet上下文
这样的话就不会每次运行再从新再去new对象,使用监听器就可以直接从底层获取到
再次运行查看结果