广告
返回顶部
首页 > 资讯 > 后端开发 > Python >手工搭建Servlet实现
  • 385
分享到

手工搭建Servlet实现

2024-04-02 19:04:59 385人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言手工搭建一个Servlet下载Tomcat编译程序启动Tomcat读取日志前言 在初学JAVA WEB的时候,就曾听到过这样一种说法: java WEB的演变过程大概可以分

前言

在初学JAVA WEB的时候,就曾听到过这样一种说法:
java WEB的演变过程大概可以分为4个阶段:

  所以学习 Java web,可以从第3个阶段开始学习,不用再去关注Servlet,那么Servlet是否还有学习的必要呢?
答案是有,并且非常重要。俗话说万变不离其宗,这个宗指的就是技术的底层,你会发现技术的底层其实都是相通的,只要把握了这个宗,我们就能在技术的浪潮来临时,把握机会,而不是去追逐一个又一个的泡沫。

  我记得初学java的时候,还是大三上,教我们java的老师是我们学院的副院长。他让我们用记事本去编写程序,用命令行去执行程序,而隔壁班用的却是eclipse。当初非常羡慕隔壁班,能用上“高大上”的开发环境,不用去改一个又一个的编译错误。现在想起来,却非常感谢那段经历,它让我对Java程序的执行过程有了更直观的认识,对java这门编程语言本身有了更深刻的认识。

而现在作为一个Java程序员,我们已经习惯了使用IDE和Web框架进行开发,IDE帮助我们做了编译、打包的工作。Spring框架则帮助我们实现了Servlet接口,并把Servlet容器注册到了Web容器中。这样我们就可以专注于实现业务逻辑,但是同时,却缺少了接触底层的机会。

  如果程序一直都处于正常运行的状态,不了解底层其实并没有什么问题,但是如果程序一旦出现了预期之外的异常,那么如果我们不懂底层,就没有办法准确的定位问题。
所以今天要和大家分享的是Servlet的学习:

手工搭建一个Servlet

下载Tomcat

  首先我们需要下载Tomcat :https://tomcat.apache.org/download-90.cgi
  Tomcat的目录如下: (Mac系统、Tomcat 8.5.38)

  • /bin:存放在windows(.bat)和linux(.sh)环境下运行的脚本文件。
  • /conf: 存放配置的文件,其中最重要的是server.xml(配置Servlet)
  • /lib:存放Tomcat以及所有Web应用都可以访问的jar文件
  • /logs:存放Tomcat执行时产生的日志文件
  • /work:存放JSP编译后的产生class文件
  • /webapps:Tomcat的Web应用目录

编写Servlet程序
  我们可以通过继承GenericServlet抽象类或者HttpServlet抽象类来实现我们自己的Servlet。HttpServlet是在GenericServlet的基础上,进一步封装了Http的特性,相对GenericServlet而言使用简单,我们只需要重写doGet和doPost方法即可。所以这里我们使用HttpServlet。(这里我们是使用记事本编写的,如果你是使用ide,请引入javax.servlet包,因为这个包不在jdk的标准开发包中,方法可以参考:https://www.jb51.net/article/196463.htm)


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("开始处理get请求");
        PrintWriter writer = resp.getWriter();
        resp.setContentType("text/html;charset=utf-8");
        writer.println("<h1>hello Servlet</h1>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("开始处理post请求");
        PrintWriter writer = resp.getWriter();
        resp.setContentType("text/html;charset=utf-8");
        writer.println("<h1>hello Servlet</h1>");
    }
}

编译程序

  这里需要我们将Tomcat lib中的Servlet-api.jar拷贝到当前目录下。因为我们编写的MyServlet继承了HttpServlet抽象类,而这个类属于该jar包,调用下面的命令编译代码:


javac -cp ./servlet-api.jar MyServlet.java

可以看出,我们编译成功,生成了一个class文件。

  接着我们需要创建一个Web应用的web文档结构,把它放到Webapps中。结构如下:


MyWebApp/WEB-INF/web.xml
MyWebApp/WEB-INF/classes/MyServlet.class

我们将在web.xml中配置我们的Servlet,web.xml的内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<description> Servlet Example. </description>
<display-name> MyServlet Example </display-name>
<request-character-encoding>UTF-8</request-character-encoding>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>

这里要保证servlet和servlet-mapping中的servlet-name一致。这样才能完成从url到servlet的映射。

启动Tomcat

接着我们启动tomcat,找到tomcat的bin目录,然后执行start.sh脚本(如果是windows系统,请使用.bat的脚本):[code]sh


sh startup.sh

  

tomcat的默认端口是8080,我们可以访问一下myservlet,观察结果:http://127.0.0.1:8080/MyWebApp/myservlet

hello Servlet

 MyWebApp是我们的应用名,即在webapps的文件夹,myservlet是我们配置在web.xml里的Servlet路径。(如果启动tomcat出现异常,请移步https://www.jb51.net/article/216973.htm,里面有具体的解决办法)

读取日志

  读tomcat的日志,也是后端开发工程师必不可缺的一项技能。它可以帮助我们快速的定位问题。tomcat中的日志分为两类,一类是运行日志,记录着系统运行过程中的信息,比如异常错误  等。一类是访问日志,记录着访问的时间、IP地址、访问路径等相关信息。

catalina.***.log
  主要记录着Tomcat启动过程中的信息,这个文件可以看到JVM参数以及操作系统等日志信息。

catalina.out
  catalina.out是Tomcat的标准输出和错误输出,在这个日志里我们可以看到MyServlet.java程序输出的信息。

localhost.**.log
  主要记录Web应用在初始化过程中,遇到的未处理的异常。

manager.***.log/host-manager.***.log
  存放Tomcat自带的Manager项目的日志信息


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;


@WebServlet("/myAnnotationServlet")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("开始处理get请求");
        PrintWriter writer = resp.getWriter();
        resp.setContentType("text/html;charset=utf-8");
        writer.println("<h1>hello Servlet</h1>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("开始处理post请求");
        PrintWriter writer = resp.getWriter();
        resp.setContentType("text/html;charset=utf-8");
        writer.println("<h1>hello Servlet</h1>");
    }
}

这个注解有两层含义: 这个Java类是一个Servlet;这个Servlet对应的url路径是myAnnotationServlet

然后我们需要重新编译文件,并删除原来的web.xml,重新启动tomcat,验证结果:

hello Servlet

可以看出,使用注解和使用配置文件的效果是一样的。

到此这篇关于手工搭建Servlet实现的文章就介绍到这了,更多相关Servlet手工搭建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 手工搭建Servlet实现

本文链接: https://www.lsjlt.com/news/130064.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 手工搭建Servlet实现
    目录前言手工搭建一个Servlet下载Tomcat编译程序启动Tomcat读取日志前言 在初学Java web的时候,就曾听到过这样一种说法: java Web的演变过程大概可以分...
    99+
    2022-11-12
  • 如何手工搭建一个Servlet
    本篇内容主要讲解“如何手工搭建一个Servlet”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何手工搭建一个Servlet”吧!目录前言手工搭建一个Servlet下载Tomcat编译程序启动T...
    99+
    2023-06-20
  • IDEA2023创建MavenWeb项目,并搭建Servlet工程
    系统相关: IntelliJ IDEA 2022.3.3 jdk v17+ tomcat v10.1.7 新建项目 我的是jdk17,选择电脑对应的jdk版本,后面涉及到这个的最好都保持一致。 创建出来的项目是没有java目录的,右键新建...
    99+
    2023-09-07
    intellij-idea java servlet tomcat
  • spring3 MVC手工搭建Sprin
     转载地址:http://hi.baidu.com/hi_c/blog/item/598bcd17c2c5601ac83d6d78.html 手工搭建步骤: 1.开发环境确认    2.Spring3的jar包    3.Spring3项...
    99+
    2023-01-31
    手工 MVC Sprin
  • Oracle 19c RAC 手工建库的搭建过程
    数据库环境: 数据库版本(RU):  19.10 GRID_HOME:       /u01/app/19.0.0/grid ORACLE_HOME:     /u01/a...
    99+
    2022-11-13
  • Oracle如何实现手工建库
    这篇文章主要为大家展示了“Oracle如何实现手工建库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle如何实现手工建库”这篇文章吧。 可参考官方文档...
    99+
    2022-10-19
  • SpringMVC的工程搭建步骤实现
    目录一、创建项目二、配置核心文件三、web.xml四、配置TomCat五、运行TomCat一、创建项目 1、新建一个项目名为:springmvc-demo-yuyongqing 右键...
    99+
    2022-11-12
  • 最详细的手工LAMP环境搭建
    环境:阿里云服务器ECS,Alibaba Cloud Linux 3.2104 LTS 64位 ,2核(vCPU) 2 GiB LAMP 是搭建Web应用时最常用的环境,LAMP 分别表示 Li...
    99+
    2023-09-10
    apache php 服务器 mysql
  • 如何手工搭建ABP框架Web项目
    本篇文章为大家展示了如何手工搭建ABP框架Web项目,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ABP是 ASP.NET Boilerplate Project 的简称。ABP是基于DDD(领域驱...
    99+
    2023-06-04
  • 【云原生 | 13】手把手教你搭建ferry开源工单系统
    🍁博主简介:         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质...
    99+
    2023-10-23
    大数据 云原生 docker ferry 工单系统
  • 从头写React-like框架的工程搭建实现
    最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurr...
    99+
    2022-11-12
  • 使用docker搭建jenkins自动化工具的实现
    目录一、jenkins二、基于docker 搭建 jenkins三、jenkins 自动发布 SpringBoot 镜像一、jenkins Jenkins是一个开源软件项目,是基于J...
    99+
    2022-11-13
  • web开发中如何搭建前端脚手架工具
    这篇文章主要介绍了web开发中如何搭建前端脚手架工具,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在实际的开发过程中,从零开始建立项目的...
    99+
    2022-10-19
  • Java开发之手把手教你搭建企业级工程SSM框架
    目录1.在IDEA界面中创建MavenWeb工程2.在pom.xml中添加如下相关依赖3.web.xml 配置 Spring MVC、Spring4.分别在main目录下创建reso...
    99+
    2022-11-12
  • Oracle 12c如何实现手工建库而非CDB及CDB创建
    这篇文章给大家分享的是有关Oracle 12c如何实现手工建库而非CDB及CDB创建的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。相信大家应该都知道,对于Oracle数据库的创建...
    99+
    2022-10-18
  • 从零搭建Webpack5-react脚手架的实现步骤(附源码)
    目录webpack5 正式开始 搭建指南开始搭建完成了依赖的准备工作,开始搭建项目编写webpack.dev.js开发配置 开始编写webpack.prod.js生产配置编写scri...
    99+
    2022-11-12
  • springboot+websocket+redis搭建的实现
    在多负载环境下使用websocket。 一、原因 在某些业务场景,我们需要页面对于后台的操作进行实时的刷新,这时候就需要使用websocket。 通常在后台单机的情况下没有任何的问...
    99+
    2022-11-12
  • Next.js脚手架完整搭建封装实例分析
    这篇文章主要介绍“Next.js脚手架完整搭建封装实例分析”,在日常操作中,相信很多人在Next.js脚手架完整搭建封装实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Next.js脚手架完整搭建封装实...
    99+
    2023-06-30
  • 怎样从一个新手,实现windows搭建wvp+zlm流媒体平台?
    在流媒体日趋成熟的今天,大家每天都会刷大量视频,又或者拥有一部手机就能远程查看家里的监控;那作为新手的你,怎么从无到有打造自己的流媒体平台呢? 这里我们选用wvp+ZLMediaKit开源平台,WEB VIDEO PLATFORM(wvp...
    99+
    2023-09-02
    java tomcat spring maven c++ Powered by 金山文档
  • 怎样实现MYSQL主从搭建
    怎样实现MYSQL主从搭建,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一主单从步骤:1、配置master...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作