欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

一起学Spring之Web基础篇,少儿学英语字母基础篇20集

来源: javaer 分享于  点击 48360 次 点评:101

一起学Spring之Web基础篇,少儿学英语字母基础篇20集


概述

在日常的开发中Web项目集成Spring框架,已经越来越重要,而Spring框架已经成为web开发的主流框架之一。本文主要讲解Java开发Web项目集成Spring框架的简单使用,以及使用Spring和不使用Spring框架,两者之间的差异。 仅供学习分享使用,如有不足之处,还请指正。

页面访问流程图

本示例的页面访问流程图如下所示:

 

不使用Spring框架的开发流程

步骤如下:

1. 新增Service和Dao对应的类及接口实现

如下所示:在Service中对Dao进行了强关联

1 package com.hex.Dao; 2 3 /** 4 * 学生Dao 5 * @author Administrator 6 * 7 */ 8 public interface IStudentDao { 9 public String GetStudentById(int id); 10 } 11 //////////////////////////////////////// 12 package com.hex.Dao; 13 14 /** 15 * 学生Dao 16 * @author Administrator 17 * 18 */ 19 public class StudentDaoImpl implements IStudentDao { 20 21 /** 22 * 查询学生信息 23 */ 24 @Override 25 public String GetStudentById(int id) { 26 27 return "hex"; 28 } 29 30 } 31 //////////////////////////////////////// 32 package com.hex.Service; 33 34 /** 35 * 学生服务接口 36 * @author Administrator 37 * 38 */ 39 public interface IStudentService { 40 public String GetStudentById(int id); 41 } 42 //////////////////////////////////////// 43 package com.hex.Service; 44 45 import com.hex.Dao.IStudentDao; 46 import com.hex.Dao.StudentDaoImpl; 47 48 /** 49 * 学生服务实现类 50 * @author Administrator 51 * 52 */ 53 public class StudentServiceImpl implements IStudentService { 54 55 private IStudentDao studentDao; 56 57 public void setStudentDao(IStudentDao studentDao) { 58 this.studentDao = studentDao; 59 } 60 61 @Override 62 public String GetStudentById(int id) { 63 //studentDao=new StudentDaoImpl(); 64 return studentDao.GetStudentById(id); 65 } 66 67 } View Code

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的方式,如下所示:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 3 <display-name>FirstWebSpring</display-name> 4 <servlet> 5 <description> 6 </description> 7 <display-name>HomeServlet</display-name> 8 <servlet-name>HomeServlet</servlet-name> 9 <servlet-class>com.hex.servlet.HomeServlet</servlet-class> 10 </servlet> 11 <servlet-mapping> 12 <servlet-name>HomeServlet</servlet-name> 13 <url-pattern>/HomeServlet</url-pattern> 14 </servlet-mapping> 15 <welcome-file-list> 16 <welcome-file>index.html</welcome-file> 17 <welcome-file>index.htm</welcome-file> 18 <welcome-file>index.jsp</welcome-file> 19 <welcome-file>default.html</welcome-file> 20 <welcome-file>default.htm</welcome-file> 21 <welcome-file>default.jsp</welcome-file> 22 </welcome-file-list> 23 <!-- 配置容器地址 --> 24 <!-- 第一种方式如果要加载多个配置文件,可以写多个,如下所示: 25 <param-value> 26 classpath:applicationContext.xml, 27 classpath:applicationContext2.xml 28 </param-value> 29 --> 30 <context-param> 31 <param-name>contextConfigLocation</param-name> 32 <param-value> 33 classpath:applicationContext.xml 34 </param-value> 35 </context-param> 36 <!-- 配置spring-web.jar对应的监听器 ,Tomcat启动时,自动初始化IOC容器 --> 37 <listener> 38 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 39 </listener> 40 </web-app> View Code

备注

绳锯木断,水滴石穿。

相关文章

    暂无相关文章
相关栏目:

用户点评