tomcat

@WebServlet

  • @WebServlet 是servlet 3.0的写法
  • 新建maven项目,结构如下

clipboard.png

  • 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的使用相关推荐

  1. maven_结合使用嵌入式Tomcat和Maven tomcat插件

    maven 使用Eclipse WTP开发Java Web应用程序时,我们需要在计算机中安装tomcat才能执行该应用程序. 如果在项目上使用Maven,则可以使用tomcat插件运行嵌入式tomca ...

  2. 嵌入式tomcat例子

    嵌入式tomcat学习笔记 -1 依赖 jdk用的1.8 <build> <plugins> <plugin> <groupId>org.apache. ...

  3. Spring Boot删除嵌入式Tomcat服务器,启用Jetty服务器

    快速指南,在Spring Boot应用程序中排除嵌入式tomcat服务器并添加Jetty Server. 配置删除tomcat并添加Jetty Server. 1.简介 在本教程中,我们将学习如何从S ...

  4. 结合使用嵌入式Tomcat和Maven tomcat插件

    使用Eclipse WTP开发Java Web应用程序时,我们需要在计算机中安装tomcat才能执行该应用程序. 如果在项目上使用Maven,则可以使用tomcat插件运行嵌入式tomcat安装并测试 ...

  5. springboot需要tomcat服务器吗_嵌入式 Tomcat AJP 协议对 SpringBoot 应用的影响

    前言 2020 年 1 月 6 日,国家信息安全漏洞共享平台(CNVD)收录了由北京长亭科技有限公司发现并报送的 Apache Tomcat 文件包含漏洞.Tomcat AJP 协议由于存在实现缺陷导 ...

  6. 嵌入式tomcat的不使用web.xml原理分析

    前言 前面的章节讲了嵌入式tomcat使用web.xml启动,这章说说不使用web.xml启动tomcat.有了这个就明白Spring Boot是如何在没有web.xml的的情况下实现web能力的,以 ...

  7. 如何修改嵌入式服务器的端口号,Ai聘网之如何修改Spring Boot应用启动的嵌入式Tomcat的默认端口8080...

    原标题:Ai聘网之如何修改Spring Boot应用启动的嵌入式Tomcat的默认端口8080 Spring Boot是深受广大Java开发人员喜爱的框架,尤其是需要用Java开发微服务的那些开发人员 ...

  8. 嵌入式Tomcat示例

    最近在看李号双老师的<深入拆解Tomcat&Jetty>专栏,思路超清楚,看到源码就怕怕的我也可以看的很欢脱,想看源码一起揭秘呢-- and 老师建议的第一步就是搞个嵌入式的tom ...

  9. maven web应用嵌入式tomcat学习笔记

    一 首先创建 maven web 工程 暂无 二 在maven 中添加嵌入式tomcat配置 <build>     <plugins>         <plugin& ...

  10. 嵌入式Tomcat运行Servlet和JSP

    在本教程中,我们展示了如何使用嵌入式 Tomcat 服务器.Tomcat可以嵌入模式运行:这意味着无需构建 WAR 文件并将其部署在独立的 Tomcat 服务器中.本教程中的示例是使用 Maven 构 ...

最新文章

  1. 2022-2028年中国氧化铟锡薄膜行业市场深度分析及前瞻研究报告
  2. 打印速度快点的打印机_佳能和爱普生打印机哪个好 高性价比打印机介绍【详解】...
  3. 如何使用小的显存训练大的batch_size
  4. [linux基础学习]文件和目录属性
  5. 第三十六讲 ASP.NET中的Web服务(三)
  6. MessageBox只弹出一次
  7. 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given
  8. IOS中scrollsToTop问题小结
  9. 解决Bazel:Error: LinkageError occurred while loading main class com.google.devtools.build.lib.bazel.
  10. GMIC来了 HTC VIVE细化VR梦
  11. python eureka服务发现_Spring Cloud版——电影售票系统—Eureka微服务注册与发现
  12. k8s架构以及相关概念普及
  13. apo打印接口json参数_接口测试大全
  14. 某计算机有五级中断L4,2011计算机基础考研组成原理部分
  15. MindManager_10 思维导图-软件下载
  16. 关于PMP考试的流程,很实用
  17. CNN 入门讲解:什么是标准化?
  18. 注意!!!获取数据库服务器主机ip
  19. JAVA的循环结构以及简单操作
  20. 关于BHO不能够正常运行的问题!

热门文章

  1. Atitit 同样是音频输入,AUX接口和麦克风接口有何区别 目录 1.1. 同样是音频输入,AUX接口和麦克风接口有何区别?_百度知道 1 1.2. Aux作用 1 1.3. Aux不能连接普通麦
  2. Atitit tomcat 启动报错 ZipException: archive is not a ZIP archive. 1.1. ----Should sh lib jar err... 1
  3. atitit.事件驱动的总结attilax
  4. atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx
  5. paip.提升性能---mysql 优化cpu多核以及lan性能的关系.
  6. (转)因巨亏而著名的10大魔鬼交易员
  7. Rust: 如何在Atom中用上Atom Beautify(绑定rustfmt)?
  8. 机器学习笔记(八):线性回归算法的评测标准 | 凌云时刻
  9. 从AWS到阿里云: 产品体系差异分析 | 凌云时刻
  10. 一种对云主机进行性能监控的监控系统及其监控方法