资讯专栏INFORMATION COLUMN

嵌入式 tomcat的使用

Hydrogen / 2308人阅读

摘要:是的写法新建项目,结构如下文件打包启动包放到目录下,启动访问使用插件,构建嵌入式容器文件中添加打包启动访问解压包,找到可以得出的启动类模拟,构建嵌入式容器源码访

tomcat @WebServlet

@WebServlet 是servlet 3.0的写法

新建maven项目,结构如下

pom文件

</>复制代码

  1. 4.0.0
  2. com.adagio
  3. tomcat-demo
  4. 0.0.1-SNAPSHOT
  5. war
  6. UTF-8
  7. Javax.servlet
  8. javax.servlet-api
  9. 3.1.0
  10. provided
  11. org.apache.tomcat.maven
  12. tomcat7-maven-plugin
  13. 2.1
  14. org.apache.maven.plugins
  15. maven-compiler-plugin
  16. 2.3.2
  17. 1.8
  18. 1.8
  19. org.apache.maven.plugins
  20. maven-war-plugin
  21. 3.2.0
  22. false

Java Code

</>复制代码

  1. package com.adagio;
  2. import java.io.IOException;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. @WebServlet(urlPatterns = "/demo")
  8. public class DemoServlet extends HttpServlet {
  9. private static final long serialVersionUID = 1L;
  10. public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
  11. request.setCharacterEncoding("UTF-8");
  12. response.setCharacterEncoding("UTF-8");
  13. response.setContentType("text/html;charset=UTF-8");
  14. String message = request.getParameter("message");
  15. response.getWriter().print(message);
  16. response.getWriter().println("
    ");
  17. }
  18. }

打包: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文件中添加

</>复制代码

  1. org.apache.tomcat.maven
  2. tomcat7-maven-plugin
  3. 2.1
  4. tomcat-run
  5. exec-war-only
  6. package
  7. /

打包: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

</>复制代码

  1. Manifest-Version: 1.0
  2. Main-Class: org.apache.tomcat.maven.runner.Tomcat7RunnerCli

可以得出jar 的启动类:org.apache.tomcat.maven.runner.Tomcat7RunnerCli

模拟server.xml,构建嵌入式容器 源码

</>复制代码

  1. import java.io.File;
  2. import org.apache.catalina.Context;
  3. import org.apache.catalina.Host;
  4. import org.apache.catalina.Service;
  5. import org.apache.catalina.Wrapper;
  6. import org.apache.catalina.connector.Connector;
  7. import org.apache.catalina.core.StandardContext;
  8. import org.apache.catalina.startup.Tomcat;
  9. /**
  10. * 访问 : http://localhost:9527/index.jsp
  11. * http://localhost:9527/demo?message=hello
  12. *
  13. */
  14. public class EmbeddedTomcatServer {
  15. public static void main(String[] args) throws Exception {
  16. //确定classes 目录绝对路径
  17. String calssesPath = System.getProperty("user.dir") +
  18. File.separator + "target" + File.separator + "classes";
  19. System.out.println(calssesPath);
  20. //创建Tomcat实例
  21. Tomcat tomcat = new Tomcat();
  22. tomcat.setPort(9527);
  23. //设置Host
  24. Host host = tomcat.getHost();
  25. host.setName("localhost");
  26. host.setAppBase("webapps");
  27. //设置 Context
  28. //server.xml -
  29. String webapp = System.getProperty("user.dir") + File.separator
  30. + "src" + File.separator + "main" + File.separator + "webapp";
  31. String contextPath = "/";
  32. //设置 webapp 绝对路径到 Context,作为它的docBase
  33. Context context = tomcat.addWebapp(contextPath, webapp);
  34. if(context instanceof StandardContext) {
  35. StandardContext standardContext = new StandardContext();
  36. // 设置默认的web.xml文件到Context
  37. standardContext.setDefaultContextXml(calssesPath + File.separator + "conf/web.xml");
  38. //设置 Classpath 到Context
  39. // 添加DemoServlet到tomcat 容器
  40. Wrapper wrapper = tomcat.addServlet(contextPath, "DemoServlet", new DemoServlet());
  41. wrapper.addMapping("/demo");
  42. }
  43. //http://localhost:9526/demo?message=%E5%B0%8F%E9%A9%AC
  44. //设置Service
  45. Service service = tomcat.getService();
  46. Connector connector = new Connector();
  47. //这里设置了一个port,等于两个端口都可以使用,但是上面那个端口访问中文乱码
  48. connector.setPort(9526);
  49. connector.setURIEncoding("UTF-8");
  50. connector.setProtocol("HTTP/1.1");
  51. service.addConnector(connector);
  52. //启动 tomcat 服务器
  53. tomcat.start();
  54. // 强制 Tomcat Server 等待,避免main线程执行结束关闭
  55. tomcat.getServer().await();
  56. }
  57. }
文件

直接从tomcat/conf copy web.xml到项目中

在resources下建 conf目录,把copy的web.xml放进去

在webapp下新建 index.jsp

具体如图

... 未完

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76529.html

相关文章

  • FineBI中tomcat服务器部署

    摘要:即直接启动即自动打开的服务器,自动布署成功。进入,双击启动服务器测试部署输入访问地址可成功看到访问界面。至此的部署就结束了。 Tomcat服务器部署 tomcat服务器是免费的且性能相对稳定的web应用服务器,在许多中小型企业中很受欢迎 FineBI支持的版本:tomcat6.0及以上版本 FineBI支持的JDK版本:jdk1.6及以上版本 1.1 独立部署 独立部署指的是在一个服务...

    dabai 评论0 收藏0
  • FineBI中tomcat服务器部署

    摘要:即直接启动即自动打开的服务器,自动布署成功。进入,双击启动服务器测试部署输入访问地址可成功看到访问界面。至此的部署就结束了。 Tomcat服务器部署 tomcat服务器是免费的且性能相对稳定的web应用服务器,在许多中小型企业中很受欢迎 FineBI支持的版本:tomcat6.0及以上版本 FineBI支持的JDK版本:jdk1.6及以上版本 1.1 独立部署 独立部署指的是在一个服务...

    HackerShell 评论0 收藏0
  • ActiveMQ 嵌入Tomcat

    摘要:嵌入在一些项目中,单独开启一个,对于项目实施来说有时略显繁琐。待启动后,选择所在的进程。连接后选择页签红框的地方分别为已消费和已进入中的消息的条数。 ActiveMQ 嵌入Tomcat 在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识...

    curlyCheng 评论0 收藏0
  • SpringBoot应用部署于外置Tomcat容器

    摘要:但考虑到实际的情形中,我们的服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉应用内置的服务器,进而将应用发布并部署到外置的容器之中,本文就实践一下这个。 showImg(https://segmentfault.com/img/remote/1460000015173574); 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成...

    draveness 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<