Spring4笔记11--SSH整合2--SpringWeb
SSH 框架整合技术:
2. Spring 在 Web 项目中的使用(建立在Spring与Hibernate整合的基础上):
在 Web 项目中使用 Spring 框架,首先要解决在 Servlet 中(暂时不使用 Struts2)获取到 Spring 容器的问题。只要在 View 层获取到了 Spring 容器,便可从容器中获取到 Service 对象。
代码详解:
(1) 创建Servlet:
package com.tongji.servlets; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tongji.beans.Student;
import com.tongji.service.IStudentService; public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 4780732399020349670L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String ageStr = request.getParameter("age");
Integer age = Integer.valueOf(ageStr);
System.out.println("name=" + name);
System.out.println("age=" + age); //从Spring容器中获取到Service
//创建容器
@SuppressWarnings("resource")
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("ac = " + ac); IStudentService service = (IStudentService) ac.getBean("studentService");
//调用Service的addStudent()方法
Student student = new Student(name, age);
service.addStudent(student);
//跳转到保存页面
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
} }
注意第36行,是为了显示每次请求是否使用的是同一Spring容器,即,是否只创建了一次Spring容器。Spring容器很大,很好资源,不适宜创建多次。
(2) 在web.xml中注册Servlet:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.tongji.servlets.RegisterServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/registerServlet</url-pattern>
</servlet-mapping> </web-app>
(3) 创建前端JSP页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
<head>
<title>index</title>
</head> <body>
<form action="registerServlet" method="POST">
name:<input type="text" name="name"/><br>
age:<input type="text" name="age"/><br>
<input type="submit" value="submit"/>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
<head>
<title>welcome</title>
</head> <body>
welcome you!
</body>
</html>
(4)Service层和Dao层和实体类的代码,以及Spring的配置文件都不变,发布运行。会发现:前端的每一次请求都会创建一次Spring容器,显然不合适。
此时,可以考虑,将 Spring 容器的创建放在 Servlet 进行初始化时进行,即执行 init()方法时执行。并且,Servlet 还是单例多线程的,即一个业务只有一个 Servlet 实例,所有执行该业务的用户执行的都是这一个 Servlet 实例。这样,Spring 容器就具有了唯一性了。 但是,Servlet 是一个业务一个 Servlet 实例,即 LoginServlet 只有一个,但还会有StudentServlet、TeacherServlet 等。每个业务都会有一个 Servlet,都会执行自己的 init()方法,也就都会创建一个 Spring 容器了。这样一来,Spring 容器就又不唯一了。
解决方法:使用Spring的Web插件
对于 Web 应用来说,ServletContext 对象是唯一的,一个 Web 应用,只有一个ServletContext 对象。该对象是在 Web 应用装载时初始化的,即在 Web 应用装载时会自动执行接口 ServletContext 的初始化方法。该初始化方法在整个应用中只会执行一次。若将Spring 容器的创建语句放到 ServletContext 的初始化方法中执行,并将创建好的 Spring 容器作为 ServletContext 的属性放入其中。以后再需要 Spring 容器,直接读取该属性值即可。ServletContext 对象生命周期与 Web 应用的相同。即放在其中的属性为全局属性。所以,放入 ServletContext 中的 Spring 容器,在整个应用的生命周期中,均可被访问。这样就可以保证 Spring 容器在 Web 应用中的唯一性了。
上述的这些工作,已经被封装在了如下的 Spring 的 Jar 包的相关 API 中: spring-web-4.2.1.RELEASE.jar
代码修改:
(1) 注册监听器 ContextLoaderListener
若要在 ServletContext 初始化时创建 Spring 容器,就需要使用监听器接口 ServletContextListener 对 ServletContext 进行监听。Spring 为该监听器接口定义了一个实现类 ContextLoaderListener,专门用于在 ServletContext 初始化时创建 Spring 容器。
(2) 指定 Spring 配置文件的位置<context-param/>
ContextLoaderListener 在对 Spring 容器进行创建时,需要加载 Spring 配置文件。其默认的 Spring 配置文件位置与名称为:WEB-INF/applicationContext.xml。但,一般会将该配置文件放置于项目的 classpath 下,即 src 下,所以需要在 web.xml 中对 Spring 配置文件的位置及名称进行指定。
以上两处修改均在web.xml中添加
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 指定Spring配置文件的名称及位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!-- 注册监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <servlet>
<servlet-name>RegisterServlet</servlet-name>
<servlet-class>com.tongji.servlets.RegisterServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/registerServlet</url-pattern>
</servlet-mapping> </web-app>
(3) 修改 Spring 配置文件中映射文件路径的写法
导入的 Jar 包 spring-web 中代码要求,Spring 配置文件中映射文件的路径前必须添加classpath:,以表示其在类路径下。
Spring配置文件修改处代码:
aaarticlea/png;base64,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" alt="" width="1081" height="235" />
(4) 通过 WebApplicationContextUtils 获取 Spring 容器
工具类WebApplicationContextUtils有一个方法专门用于从ServletContext中获取Spring容器对象:getRequiredWebApplicationContext(ServletContext sc)
查其源码,看其调用关系,就可看到其是从 ServletContext 中读取的属性值,即 Spring容器。
Servlet修改处代码:
aaarticlea/png;base64,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" alt="" width="908" height="75" />
至此,重新发布运行,整个Web应用只会创建一个Spring容器。
Spring4笔记11--SSH整合2--SpringWeb的更多相关文章
- 11.SSH整合
由于自己学习的版本比较落后,这里就不总结了 在我这个版本整合的过程中的几点问题: 1.在web.xml的配置过程中: <!-- 如果使用的是load获取数据,在jsp页面申请取得数据时才真正的执 ...
- Spring4笔记12--SSH整合3--Spring与Struts2整合
SSH 框架整合技术: 3. Spring与Struts2整合(对比SpringWeb): Spring 与 Struts2 整合的目的有两个: (1)在 Struts2 的 Action 中,即 V ...
- SSH整合(struts2.3.24+hibernate3.6.10+spring4.3.2+mysql5.5+myeclipse8.5+tomcat6+jdk1.6)
终于开始了ssh的整合,虽然现在比较推崇的是,ssm(springmvc+spring+mybatis)这种框架搭配确实比ssh有吸引力,因为一方面springmvc本身就是遵循spring标准,所以 ...
- Spring第四天——SSH整合
(从整合开始,使用回归使用eclipse) 一.三大框架版本: struts2 hibernate5 spring4 二.SSH三大框架回顾: Hibernate: ORM思想 核心配置文件: 单独 ...
- 【Java EE 学习 67 下】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】
一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar ...
- Spring(八)SSH整合简述
一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1 ...
- SSH整合之spring整合hibernate
SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...
- SSH整合方案2
[案例3]SSH整合_方案2 ** 案例描述 两个知识点的演示 其一,SSH整合的第二个方案 其二,Spring+JDBC+Struts2 参考代码 31) 使用工程spring4 32 ...
- Spring自学教程-ssh整合(六)
以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 感谢您支持我的博客,我的动力是您的支持和关注!如若转载和使用请注明转载地址 ...
- SSH整合总结(xml与注解)
本人自己进行的SSH整合,中间遇到不少问题,特此做些总结,仅供参考. 一.使用XML配置: SSH版本 Struts-2.3.31 Spring-4.3.5 Hibernate-4.2.21 引入ja ...
随机推荐
- Cent7安装mysql5.7.11全过程
下载mysql(注:其他版本未测试) https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.11.tar.gz 1.安装依赖包 yum -y ...
- QML——添加自定义模块
一.模块的定义 在使用QML时,我们常常看到类似这样的语句: import QtQuick 2.0 import QtSensors 5.0 通过这些import语句,我们就能使用QML中的相关控件了 ...
- BZOJ5297 CQOI2018社交网络(矩阵树定理)
板子题. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Scrapy初尝试
,python3.6版本 在看网上的安装的时候下一堆依赖,其实没有必要一个个的去装,pip直接分析依赖一块下载安装下来! 已经安装了pip模块 直接上 pip install scrapy 安装twi ...
- 解题:POI 2008 Subdivision of Kingdom
题面 还可以这么搜......学到了(PoPoQQQ orz) 我们最朴素的做法是枚举所有状态(当然可以剪,剪完最终实际状态量也是$C_{26}^{13}$的),然后每次$O(n)$扫一遍判断,大概会 ...
- RadioButton如何隐藏和替换
http://q.cnblogs.com/q/60738/ 用Jquery写的,可以实现隐藏功能,代码如下: 1 <%@ Page Language="C#" AutoEve ...
- Keepalived LVS-DR单网络双活双主配置模式
Keepalived LVS-DR单网络双活双主配置模式 Linux就该这么学 今天 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.LV ...
- python3 安装MySQLdb及无法打开mysql.h问题解决(win7 )
在Flask中要连接mysql数据库,需要安装flask-mysqldb. pip install flask-mysqldb 用pip安装MySQLdb 中遇到如下问题,折腾半天之久,多方尝试,终搞 ...
- Centos下Vim编辑器基本配置
设置 Vim编辑环境 配置 有两种方式: 1,是在/etc/vimrc 进行设置,这种设置方法会作用与所有登录到Linux环境下的用户.不建议使用. 2,在用户登录的 ~ 目录下创建一个 .vimrc ...
- 学习Oracle的一些收获
前言: 在看尚硅谷的Oracle视频时,总结的一些自己之前不熟的,或者完全不了解的知识点,只适用于本人,本人有一定的SQL基础,所以一些我比较熟悉的知识点不会列出来. Oracle中SQL使用技巧: ...