Spring整合Web

      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对象,使用监听器就可以直接从底层获取到

再次运行查看结果

 

posted @ 2017-10-24 17:01  心与心的距离  阅读(1454)  评论(0编辑  收藏  举报