栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM之SpringWeb开发/Spring如何使用外部Tomcat服务器/IDEA如何安装外部Tomcat服务器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM之SpringWeb开发/Spring如何使用外部Tomcat服务器/IDEA如何安装外部Tomcat服务器

写在前面:
接着记录自己的Spring学习之旅,若看不懂则建议先看前几篇博文,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

1.8 Spring 集成Web开发 1.8.1 项目环境搭建 1.8.1.1 项目准备

根据SSM框架之Spring介绍开发流程/IDEA如何建立Spring项目搭建一个简单的项目并配置好所缺目录,如图

1.8.1.2 添加web层所需依赖

在pom文件中添加web所需资源依赖并更新,如图

1.8.1.3 添加Web层

在dao层同级目录下创建Web目录,并于其中新建UserServlet类,并继承HttpServlet类重写doGet方法,如图

1.8.1.4 添加Servlet配置

在webapp下的WEB-INF目录下找到web.xml文件于其中进行配置,如图
代码如下:

  
 UserServlet  
 com.demo.web.UserServlet  
  
  
 UserServlet  
 /UserServlet  

1.8.1. 5 Tomcat下载与安装

由于maven所带Tomcat插件功能单一且不符合我们的实际需求,所以必须借助于外部的Tomcat服务器

1.8.1.5.1 找到Tomcat官网

点击https://tomcat.apache.org/进入到官网,并点击Tomcat9跳转下载,如图![[Pasted image 20211115161347.png]]

1.8.1.5.2 下载

选择64-bit Windows zip此文件,点击下载,如图

1.8.1.5.3 安装

此版本为绿色免安装版,解压后即可,如图

1.8.6 部署到Tomcat服务器上 1.8.1.6.1 寻找Tomcat
  • 如图点击它,
  • 在Templates中找到Tomcat,如图
  • 找到tomcat后点击creaate configuration,如图
1.8.1.6.2 配置
  • 按图操作添加刚配置好的项目,如图
  • 选择带有exploded的,如图
  • 配置本地Tomcat,如图,将之前解压好的目录填写进去
  • 配置完成后如图
1.8.1.7 测试
  • 运行Tomcat服务器,如图
  • 会在浏览器中看到hello World!提示语,然后在地址栏输入UserServlt,如图
  • 回车后啥也没有,别慌,因为确实没写,控制台出现如图即为成功
1.8.2 ContextLoadListener监听器 1.8.2.1 背景

应用上下文对象是通过new ClasspathXmlApplicationContext(Spring配置文件)方式获取,而且每次调用都要获取,从而造成配置文件加载多次,应用上下文创建多次,从而就诞生了ContextLoadListener监听器来解决这个问题。

1.8.2.2 解决方案

在Web项目中,可以使用ServletContextListener监听器监听Web应用启动,使用方式:

这样就能从任意位置获得应用上下文对象ApplicationContext。

1.8.2.3 自定义监听器 1.8.2.3.1 创建监听器

在本节中创建的项目中dao同级目录下创建listener包,并于其中新建名为ContextLoadListener的类,代码如下:

public class ContextLoadListener implements ServletContextListener {  
    @Override  
 public void contextInitialized(ServletContextEvent sce) {  
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");  
		// 将spring的应用上下文对象存储到ServletContext域中  
 	   ServletContext servletContext = sce.getServletContext();  
 	   servletContext.setAttribute("app",applicationContext);  
 	   System.out.println("Spring监听器启动,容器启动完成!");  
 	}  
}
1.8.2.3.2 配置监听器

在web.xml中加入如下代码进行配置

  
   
 com.demo.listener.ContextLoadListener  
 
1.8.2.3.3 测试

更改测试代码,如图
从ServletContext中拿取上下文对象applicationContext
运行后可在控制台看到输出了如图信息,
当在浏览器中继续如图操作时,
控制台仍然会出现想要的信息,如图

1.8.2.4 优化代码 1.8.2.4.1 问题

在ContextLoadListener中是直接用ClassPathXmlApplicationContext读取配置文件,若改了配置文件的命名,则需要改代码,较为复杂,耦合性高,需要解耦。同时获取ApplicationContext对象时必须记住存储到ServletContext域中的名称,不便于开发管理。

1.8.2.4.2 解决方案
  • 在web.xml中用Context-param标签进行全局初始化,代码如下:
  
   
 ContextConfigurationLocation  
 applicationContext.xml  
 
  • 在ContextLoadListener中用ServletContext来直接获取核心配置文件名,代码如下:
public class ContextLoadListener implements ServletContextListener {  
    @Override  
 public void contextInitialized(ServletContextEvent sce) {  
         ServletContext servletContext = sce.getServletContext();  
		 String contextConfigurationLocation = servletContext.getInitParameter("ContextConfigurationLocation");  
 		 ApplicationContext applicationContext = new 	ClassPathXmlApplicationContext(contextConfigurationLocation);  
	 // 将spring的应用上下文对象存储到ServletContext域中  
 	    servletContext.setAttribute("app",applicationContext);  
 	    System.out.println("Spring监听器启动,容器启动完成!");  
    }  
}
  • 设置工具类单独来获取存储到ServletContext域中的ApplicationContext对象,如图
  • 同时UserServlet中也要做出相应的更改,如图
1.8.2.5 Spring提供获取上下文对象工具 原理

原理和自定义的差不多,步骤主要如下:

  • 于Web.xml文件中配置ContextLoadListener监听器(导入坐标)
  • 使用WebApplicatoinContextUtils来获取ApplicationContext对象
1.8.2.5.2 代码操作
  • 在pom文件中导入坐标,如图
  • 在web.xml文件中配置,如图
  • 在UserServlet中更改代码,如图
    注:结果都没得问题,便不予展示!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号