嵌入式 tomcat的使用
tomcat
@WebServlet
- @WebServlet 是servlet 3.0的写法
- 新建maven项目,结构如下
- pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.adagio</groupId><artifactId>tomcat-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>Javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.2.0</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build>
</project>
- Java Code
package com.adagio;import java.io.IOException;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns = "/demo")
public class DemoServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");String message = request.getParameter("message");response.getWriter().print(message);response.getWriter().println("<br/>");}}
- 打包:mvn -Dmaven.test.skip -U clean package
- 启动:war包放到tomcat/webapps目录下,启动tomcat
- 访问:http://localhost:8080/tomcat-demo-0.0.1-SNAPSHOT/demo?message=hello
使用maven插件,构建嵌入式容器
- POM文件中添加
<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><executions><execution><id>tomcat-run</id><goals><goal>exec-war-only</goal></goals><phase>package</phase><configuration><!-- ServletContext path --><path>/</path></configuration></execution></executions></plugin>
- 打包:mvn -Dmaven.test.skip -U clean package
- 启动:java -jar targettomcat-demo-0.0.1-SNAPSHOT-war-exec.jar
- 访问:http://localhost:8080/demo?message=hello
- 解压jar包,找到
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: org.apache.tomcat.maven.runner.Tomcat7RunnerCli
- 可以得出jar 的启动类:
org.apache.tomcat.maven.runner.Tomcat7RunnerCli
模拟server.xml,构建嵌入式容器
源码
import java.io.File;import org.apache.catalina.Context;
import org.apache.catalina.Host;
import org.apache.catalina.Service;
import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;/*** 访问 : http://localhost:9527/index.jsp* http://localhost:9527/demo?message=hello**/
public class EmbeddedTomcatServer {public static void main(String[] args) throws Exception {//确定classes 目录绝对路径String calssesPath = System.getProperty("user.dir") + File.separator + "target" + File.separator + "classes";System.out.println(calssesPath);//创建Tomcat实例Tomcat tomcat = new Tomcat();tomcat.setPort(9527);//设置HostHost host = tomcat.getHost();host.setName("localhost");host.setAppBase("webapps");//设置 Context//server.xml - <Context docBase="" path="/" /></Host>String webapp = System.getProperty("user.dir") + File.separator+ "src" + File.separator + "main" + File.separator + "webapp";String contextPath = "/";//设置 webapp 绝对路径到 Context,作为它的docBaseContext context = tomcat.addWebapp(contextPath, webapp);if(context instanceof StandardContext) {StandardContext standardContext = new StandardContext();// 设置默认的web.xml文件到ContextstandardContext.setDefaultContextXml(calssesPath + File.separator + "conf/web.xml");//设置 Classpath 到Context// 添加DemoServlet到tomcat 容器Wrapper wrapper = tomcat.addServlet(contextPath, "DemoServlet", new DemoServlet());wrapper.addMapping("/demo");}//http://localhost:9526/demo?message=%E5%B0%8F%E9%A9%AC//设置ServiceService service = tomcat.getService();Connector connector = new Connector();//这里设置了一个port,等于两个端口都可以使用,但是上面那个端口访问中文乱码connector.setPort(9526);connector.setURIEncoding("UTF-8");connector.setProtocol("HTTP/1.1");service.addConnector(connector);//启动 tomcat 服务器tomcat.start(); // 强制 Tomcat Server 等待,避免main线程执行结束关闭tomcat.getServer().await();}
}
文件
- 直接从tomcat/conf copy
web.xml
到项目中 - 在resources下建 conf目录,把copy的web.xml放进去
- 在webapp下新建 index.jsp
- 具体如图
... 未完
嵌入式 tomcat的使用相关推荐
- maven_结合使用嵌入式Tomcat和Maven tomcat插件
maven 使用Eclipse WTP开发Java Web应用程序时,我们需要在计算机中安装tomcat才能执行该应用程序. 如果在项目上使用Maven,则可以使用tomcat插件运行嵌入式tomca ...
- 嵌入式tomcat例子
嵌入式tomcat学习笔记 -1 依赖 jdk用的1.8 <build> <plugins> <plugin> <groupId>org.apache. ...
- Spring Boot删除嵌入式Tomcat服务器,启用Jetty服务器
快速指南,在Spring Boot应用程序中排除嵌入式tomcat服务器并添加Jetty Server. 配置删除tomcat并添加Jetty Server. 1.简介 在本教程中,我们将学习如何从S ...
- 结合使用嵌入式Tomcat和Maven tomcat插件
使用Eclipse WTP开发Java Web应用程序时,我们需要在计算机中安装tomcat才能执行该应用程序. 如果在项目上使用Maven,则可以使用tomcat插件运行嵌入式tomcat安装并测试 ...
- springboot需要tomcat服务器吗_嵌入式 Tomcat AJP 协议对 SpringBoot 应用的影响
前言 2020 年 1 月 6 日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的 Apache Tomcat 文件包含漏洞.Tomcat AJP 协议由于存在实现缺陷导 ...
- 嵌入式tomcat的不使用web.xml原理分析
前言 前面的章节讲了嵌入式tomcat使用web.xml启动,这章说说不使用web.xml启动tomcat.有了这个就明白Spring Boot是如何在没有web.xml的的情况下实现web能力的,以 ...
- 如何修改嵌入式服务器的端口号,Ai聘网之如何修改Spring Boot应用启动的嵌入式Tomcat的默认端口8080...
原标题:Ai聘网之如何修改Spring Boot应用启动的嵌入式Tomcat的默认端口8080 Spring Boot是深受广大Java开发人员喜爱的框架,尤其是需要用Java开发微服务的那些开发人员 ...
- 嵌入式Tomcat示例
最近在看李号双老师的<深入拆解Tomcat&Jetty>专栏,思路超清楚,看到源码就怕怕的我也可以看的很欢脱,想看源码一起揭秘呢-- and 老师建议的第一步就是搞个嵌入式的tom ...
- maven web应用嵌入式tomcat学习笔记
一 首先创建 maven web 工程 暂无 二 在maven 中添加嵌入式tomcat配置 <build> <plugins> <plugin& ...
- 嵌入式Tomcat运行Servlet和JSP
在本教程中,我们展示了如何使用嵌入式 Tomcat 服务器.Tomcat可以嵌入模式运行:这意味着无需构建 WAR 文件并将其部署在独立的 Tomcat 服务器中.本教程中的示例是使用 Maven 构 ...
最新文章
- 2022-2028年中国氧化铟锡薄膜行业市场深度分析及前瞻研究报告
- 打印速度快点的打印机_佳能和爱普生打印机哪个好 高性价比打印机介绍【详解】...
- 如何使用小的显存训练大的batch_size
- [linux基础学习]文件和目录属性
- 第三十六讲 ASP.NET中的Web服务(三)
- MessageBox只弹出一次
- 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given
- IOS中scrollsToTop问题小结
- 解决Bazel:Error: LinkageError occurred while loading main class com.google.devtools.build.lib.bazel.
- GMIC来了 HTC VIVE细化VR梦
- python eureka服务发现_Spring Cloud版——电影售票系统—Eureka微服务注册与发现
- k8s架构以及相关概念普及
- apo打印接口json参数_接口测试大全
- 某计算机有五级中断L4,2011计算机基础考研组成原理部分
- MindManager_10 思维导图-软件下载
- 关于PMP考试的流程,很实用
- CNN 入门讲解:什么是标准化?
- 注意!!!获取数据库服务器主机ip
- JAVA的循环结构以及简单操作
- 关于BHO不能够正常运行的问题!
热门文章
- Atitit 同样是音频输入,AUX接口和麦克风接口有何区别 目录 1.1. 同样是音频输入,AUX接口和麦克风接口有何区别?_百度知道	1 1.2. Aux作用	1 1.3. Aux不能连接普通麦
- Atitit tomcat 启动报错 ZipException: archive is not a ZIP archive. 1.1. ----Should sh lib jar err...	1
- atitit.事件驱动的总结attilax
- atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx
- paip.提升性能---mysql 优化cpu多核以及lan性能的关系.
- (转)因巨亏而著名的10大魔鬼交易员
- Rust: 如何在Atom中用上Atom Beautify(绑定rustfmt)?
- 机器学习笔记(八):线性回归算法的评测标准 | 凌云时刻
- 从AWS到阿里云: 产品体系差异分析 | 凌云时刻
- 一种对云主机进行性能监控的监控系统及其监控方法