利用在Tomcat上部署servlet程序(手动布置加强关于servlet知识的理解,当前的idea是可以实现自动部署的)

一.手动部署

1.在idea里简单的建立一个测试的项目,创建一个简单的java文件,创建一个简单的类,进行继承HttpServlet,我这里以TT为例。(PS:为避免后续麻烦,代码会最后给出全部,理解过程即可,注意没有后面的引入jar包操作,继承是会报红的)。
在这里插入图片描述

说一下爆红的原因,因为你自动生成的项目,只有javaSE的jar包,而HttpServlet的jar包是javaEE的所以这里需要导入一下依赖jar包 servlet-api.jar。
2.导入依赖jar包 servlet-api.jar的过程。
File->ProjectStructure
projectStructure
modules
modules

去之前你下载安装的appache下找到lib下的jar包 servlet-api.jar。
(PS:如果还没有下载安装tomcat的可以参考下载Tomcat以及简单部署一个项目到tomcat上)。或者自己去官网上找一个合适的版本也可。
jar
3.导入依赖后可以发现仍然在爆红,但是已经可以通过导入依赖的方式进行解决爆红问题,导入后简单写一个基本的servlet项目即可。这里附上我的源码,可进行参考,类名和我不一样的注意修改。
成功导入
编写代码:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class TT  extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello,我又又又要重新上路了。");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}
}

4.找到项目的路径,在项目下创建一个out文件夹作为编译输出的文件夹。
文件夹
5,.进行Servlet源文件的编译。
编译
6.编译完成后out下的目录就会出现一个TT.class的编译文件。
TT
7.复制该文件到tomcat的webapp你要部署的项目下面的classes文件夹下面,具体部署路径可参考截图。(部署过程类似部署html页面,没有经验的友友可以参考将一个项目发布到Tomcat上并进行运行)
部署classes

这个时候需要修改相关的WEB-INF下的web.xml文件,主要有两个部分,这里先附上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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><servlet><servlet-name>Test</servlet-name><servlet-class>TT</servlet-class></servlet><servlet-mapping><servlet-name>Test</servlet-name><url-pattern>/TT</url-pattern></servlet-mapping></web-app>

这里注意servlet-name里面的取名只要上下相同即可,没有限制。
servlet-class的内容必须是你导入的上面编译文件的名字,例如我的是TT,所以内容为TT.
至于url-pattern的路径’'+一个自己能记得住的名字即可,一般取为类名。

8.测试是否部署成功。
a.启动tomcat。
启动成功
b.找到一个浏览器输入路径进行访问。
sucess

访问路径后,每刷新一次网页就会启动一次程序,可以从后台看出来。

这是自己在学习之后的一些理解,欢迎各位友友评论区指点其中理解有误的地方。
阳光

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xcode9的xib只支持iOS7.0及以上版本

Xcode升级到9以后&#xff0c;对xib的最低编译版本有了限制&#xff0c;以前未指定版本的xib会报错&#xff0c;如下 遇到这个情况&#xff0c;根据错误提示很明显提示的是ib文件支持的最低版本是iOS7&#xff0c;所以我就将该xib的版本设为iOS7.0&#xff0c;如下 未指定版本的…

UI设计PS初学入门知识总结——新建的理论知识

1.一般设计的类图分类 2.新建之尺寸&#xff08;宽度&#xff0c;高度&#xff09; 分为两种&#xff0c;一种是以像素为单位&#xff0c;一种是为真实长度为单位。 一类图一般以像素为单位&#xff0c;二类图必须以真实长度为单位。 宽度和高度的细节因素根据实际需求去做&a…

20172329 2017-2018-2 《程序设计与数据结构》实验一报告

20172329 2017-2018-2 《程序设计与数据结构》实验一报告 课程&#xff1a;《程序设计与数据结构》 班级&#xff1a; 1723 姓名&#xff1a; 王文彬 学号&#xff1a;20172329 实验教师&#xff1a;王志强 实验日期&#xff1a;2018年3月21日 必修/选修&#xff1a; 必修 1.实…

VS集成Qt开发入门(简易时间显示)

VS集成Qt开发入门&#xff08;简易时间显示&#xff09;软件开发入门开发环境简单时间显示&#xff08;LcdNumber&#xff09;ui界面设计&#xff08;clock.ui&#xff09;工程文件&#xff08;clock.h&#xff0c;clock.cpp&#xff09;头文件clock.h&#xff1a;源文件clock.…

ps 毛发 边缘_不会抠图怎么办?PS画笔绘制毛发技巧,抠图流程解析

前两期我们讲了一些简单的抠像方法。第一次我们知道了如何在抠像的同时保留人物投影。第二次我们知道了如何利用背景橡皮擦工具进行抠像。以上是一些稍微简单一些的抠图方法&#xff0c;人人都可以轻松办到。今天讲如何利用PS画笔绘制毛发。今天的知识稍微需要点耐心。如何把下…

基于结构体的二进制文件读写

基于结构体的二进制文件读写项目介绍工程创建结构体的创建写二进制文件结果读二进制文件结果参考文献项目介绍 本次设计是为了提高读写二进制文件的效率&#xff0c;以约定的结构体形式进行读写操作&#xff0c;避免了一个字节一个字节的多次写入读取操作&#xff0c;并且能以…

排序算法-希尔排序

上一篇讲解了简单插入排序算法&#xff0c;以及在其基础上优化的二分插入排序算法&#xff0c;但是每次插入需要按间隔为 1 移动有序区的元素&#xff0c;效率不高&#xff0c;下面我们来介绍一种新的插入排序算法-希尔排序。 算法简介 希尔排序&#xff08;Shell Sort&#xf…

封包时发现的关于QIODevice类write函数的坑

关于QIODevice类write函数的坑问题概述问题部分代码问题解决结论问题概述 这两天在做TCP通信的封包解包协议操作时&#xff0c;不经意间被write函数坑了好久。通过内存复制进行数据封包&#xff0c;在写入socket的时候总是写入一个字节&#xff0c;不能全部写入数据&#xff0…

Qt多文件传输功能实现及方法概述

Qt多文件传输功能实现前言代码实现概述客户端代码实现服务端代码效果展示结论前言 本次设计主要是为了功能上的实现&#xff0c;因此对于ui界面的设计都是怎么简单怎么来的&#xff0c;主要的功能就是实现多个文件的发送与接收&#xff0c;即客户端发送&#xff0c;服务端接收…

从java到C++入门

C基础知识前言基础前言 当初为了赶一波互联网热潮自学了java&#xff0c;如今因为需要就从java转向C开发&#xff0c;于是就有了java到C入门&#xff0c;每次的学习我都会记录一下C的学习历程。 基础 C对于内存的控制管理比java要有更多要求&#xff0c;因此C对于变量的创建…

C++灵魂->指针

C灵魂->指针地址指针野指针空指针 【内存动态分配】指针变量的运算&#xff08;&#xff0c;-&#xff0c;&#xff0c;--&#xff09;指针与一维数组地址 计算机将内存以单个字节为单位分开&#xff0c;并对每个字节进行唯一性编号&#xff0c;那么这个编号就是地址。 取…

TCP解决粘包问题(结构数据封包拆包)

TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言 TCP协议(Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;即TCP采用字节流的方式&#xff0c;以字节为单位传输字节序列。 如果简单的发送长串的数据流&#xf…

拆包--缓冲区查找包头及包尾偏移

缓冲区查找包头及包尾偏移前言一、采用动态数组QByteArray的自带函数二、采用字节对比方法测试代码前言 根据前面所讲的内容封包拆包&#xff0c;当将网络中的数据读出存储在自定义缓冲区QByteArray中&#xff0c;则对数据包进行拆分。则首先要进行的工作就是找到包头的位置及…

5自适应单页源码_超详细!如何建立一个CPA单页网站,附高转化CPA模板源码

做CPA的老手一般都会建立一个CPA单页站&#xff0c;用来提升转化&#xff0c;提高推广质量。今天教大家搭建一个完整的CPA单页站搭建一个网站需要3样东西&#xff1a;域名服务器网站源码一、购买域名域名就是你网站的地址&#xff0c;建议从万网购买就可以&#xff0c;比较方便…

20154319 《网络对抗技术》后门原理与实践

一、实验说明 任务一&#xff1a;使用netcat获取主机操作Shell&#xff0c;cron启动 (0.5分) 任务二&#xff1a;使用socat获取主机操作Shell, 任务计划启动 (0.5分) 任务三&#xff1a;使用MSF meterpreter&#xff08;或其他软件&#xff09;生成可执行文件&#xff0c;利用…

强制类型转换的取整及四舍五入取整

强制类型转换取整相关前言取整方法例&#xff1a;(signed int)double四舍五入取整前言 开发中一般运算过程都采用浮点类型数据以免出现运算不精确的错误&#xff0c;而当运算结果需要时整型的时候就需要对浮点类型的结果进行取整处理&#xff0c;而取整的方法有向上取整&#…

关于字节对齐

关于字节对齐前言意义自定义字节对齐存储空间内存读取效率平台适应性结论前言 计算机中的内存空间大小是以字节&#xff08;byte&#xff09;为基本单位划分的&#xff0c;从理论上讲似乎对任何类型的变量的访问可以从任何地址开始&#xff0c;而计算机并非逐字节大小读写内存…

c++中的多线程

使用 std::thread 时需要包含 #include<thread> 头文件&#xff0c;定义了表示线程的类、用于互斥访问的类与方法等。 参考网址&#xff1a; https://blog.csdn.net/liuker888/article/details/46848905https://blog.csdn.net/fengbingchun/article/details/73393229成员…

C++ reverse memcpy

C reverse memcpy前言基于QT的测试样例结果前言 C 实现翻转memcpy 基于QT的测试样例 代码如下&#xff1a; #include <iostream> #include <QtCore/QCoreApplication> #include <QDebug>using namespace std;void *reversememcpy(void *out, const void *…

打架程序_学生打架不知道怎么处理?一般程序了解下,对你或许有帮助

很多新老师&#xff0c;对处理学生问题的步骤其实还不是很了解&#xff0c;一遇到学生问题就很苦恼&#xff0c;用的方法很多&#xff1a;或劝、或骂、或赏、或罚&#xff0c;但总是觉得不得要领。今天我想通过昨天我处理的一个实例&#xff0c;针对性的聊一聊这个问题。希望对…