一起学Spring之Web基础篇,少儿学英语字母基础篇20集
分享于 点击 48360 次 点评:101
一起学Spring之Web基础篇,少儿学英语字母基础篇20集
概述
在日常的开发中Web项目集成Spring框架,已经越来越重要,而Spring框架已经成为web开发的主流框架之一。本文主要讲解Java开发Web项目集成Spring框架的简单使用,以及使用Spring和不使用Spring框架,两者之间的差异。 仅供学习分享使用,如有不足之处,还请指正。
页面访问流程图
本示例的页面访问流程图如下所示:
不使用Spring框架的开发流程
步骤如下:
1. 新增Service和Dao对应的类及接口实现
如下所示:在Service中对Dao进行了强关联

2. 新增HomeServlet类,并需要通过new的方式声明studentService对象
如下所示:
1 package com.hex.servlet; 2 15 /** 16 * 访问Servlet实现类 17 */ 18 public class HomeServlet extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 private IStudentService studentService; 22 23 24 /** 25 * 构造函数26 */ 27 public HomeServlet() { 28 29 } 30 31 /** 32 * 初始化时声明studentService对象 33 */ 34 @Override 35 public void init() throws ServletException { 36 studentService=new StudentServiceImpl(); 37 } 38 39 /** 40 * Get方法 41 */ 42 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 43 44 String studentName=studentService.GetStudentById(0); 45 request.setAttribute("studentName", studentName); 46 request.getRequestDispatcher("/jsp/Home.jsp").forward(request, response); 47 } 48 49 /** 50 * Post方法,此处和Get方法同 51 */ 52 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 53 // TODO Auto-generated method stub 54 doGet(request, response); 55 } 56 57 }
3. 前端页面进行访问即可
如下所示:
1 <a href="../HomeServlet">点击进入</a>
4. 缺点:
此处形成了强依赖,即HomeServlet需要StudentServiceImpl对象。且StudentServiceImpl需要StudentDao的支持。
采用Spring的方式进行访问
0. Spring框需要的Jar包
Spring框架支持web项目需要的Jar包共7个,如下所示:
1 //日志包 2 commons-logging-1.1.1.jar 3 //spring核心包 4 spring-aop-4.0.6.RELEASE.jar 5 spring-beans-4.0.6.RELEASE.jar 6 spring-context-4.0.6.RELEASE.jar 7 spring-core-4.0.6.RELEASE.jar 8 spring-expression-4.0.6.RELEASE.jar 9 //web包 10 spring-web-4.0.6.RELEASE.jar
1. 需要在web.xml文件中配置Spring对应的监听器
如下所示:
applicationContext.xml 位于src目录,所以需要加上classpath,是Spring容器的配置文件
1 <context-param> 2 <param-name>contextConfigLocation</param-name> 3 <param-value>classpath:applicationContext.xml 4 </param-value> 5 </context-param> 6 <!-- 配置spring-web.jar对应的监听器 ,Tomcat启动时,自动初始化IOC容器 --> 7 <listener> 8 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 9 </listener>
2. 配置Spring的IOC容器
如下所示:依赖引用对象属性采用ref方式,如果是值对象,则采用value方式。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 <!-- Dao依赖于数据库的底层操作,本示例不予深入 --> 7 <bean id="studentDao" class="com.hex.Dao.StudentDaoImpl"></bean> 8 <!-- Service层依赖于StudentDao,采用set的方式注入 --> 9 <bean id="studentService" class="com.hex.Service.StudentServiceImpl"> 10 <property name="studentDao" ref="studentDao"></property> 11 </bean> 12 </beans>
3. 在Servlet中,引入ApplicationContext对象,将Tomcat容器和Spring的IOC容器进行关联
如下所示:其他方法保持不变,增加studentService对象的getter和setter方法,然后通过容器注入的声明方式产生对象。在StudentServiceImpl中对StudengDao的依赖采用同样方法进行注入。
1 package com.hex.servlet; 2 3 /** 4 * Servlet实现类 5 */ 6 public class HomeServlet extends HttpServlet { 7 private static final long serialVersionUID = 1L; 8 9 private IStudentService studentService; 10 11 public IStudentService getStudentService() { 12 return studentService; 13 } 14 15 public void setStudentService(IStudentService studentService) { 16 this.studentService = studentService; 17 } 18 19 /** 20 * 初始化时获取Sping的IOC容器中的bean对象 21 */ 22 @Override 23 public void init() throws ServletException { 24 //Web项目获取Spring上下文对象。 25 ApplicationContext context=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); 26 studentService=(IStudentService)context.getBean("studentService"); 27 } 28 }
4. 优势:
此方式将Servlet和Service及Dao之间进行了解耦,灵活扩展性大大增强。
小知识
如果Spring的IOC容器文件有多个,可以采用Import的方式进行引入,如下所示:
1 <!-- 第二种方式,采用import方式引入其他容器文件 --> 2 <import resource="applicationContext2.xml"/>
在web.xml中配置servlet的方式,如下所示:

备注
绳锯木断,水滴石穿。
相关文章
- 暂无相关文章
用户点评