利用在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…

ORACLE快速遍历树及join基表很大的性能问题

1、ORACLE快速遍历树 2、join基表很大&#xff0c;性能问题 转载于:https://www.cnblogs.com/stevenlii/p/8631708.html

广工android嵌入式系统试卷_嵌入式系统考试试题A及答案

一、填空题(每空2分&#xff0c;共18分)1、PC机开机的初始化工作一般由BIOS完成&#xff0c;而嵌入式系统的初始化工作一般由______________完成。2、ARM内核三级流水线机制是指指令运行过程中经过的__________、译码、执行三个阶段。3、ARM寄存器SPSR被称为_______________寄存…

SQLServer日期格式化

SQLServer日期格式化 原文:SQLServer日期格式化0 或 100 (*) 默认值 mon dd yyyy hh:miAM&#xff08;或 PM&#xff09; 1 101 美国 mm/dd/yyyy 2 102 ANSI yy.mm.dd 3 103 英国/法国 dd/mm/yy 4 104 德国…

python微信推送消息_Python编程之微信推送模板消息功能示例

本文实例讲述了Python微信推送模板消息功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;官方文档&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432具体代码如下&#xff1a;#!/usr/bin/env python#-*- coding: utf-8 -*-import …

组合数取模学习笔记

组合数取模的话,之前多少会一些,能应付一般的题目,而这次遇到了模数为合数的题目,于是就又来学习了一发.这次看到了一个比较不错的blog:https://blog.csdn.net/skywalkert/article/details/52553048在这个blog里,其1.3里的内容,有许多不理解的地方,并且3.2及以后的内容,并没有去…

aptio2018设置u盘启动_华硕Aptio Setup Utility 2012主板Bios设置U盘启动

电脑在开机的时候&#xff0c;按Esc键&#xff0c;可以选择启动项&#xff0c;然后选择制作好的U盘启动盘即可。如果没有找到U盘启动项&#xff0c;可以在Bios中设置后&#xff0c;重启选择。这篇文章是PE吧给大家带来的华硕Aptio Setup Utility 2012主板Bios设置U盘启动方法教…

静态顺序表的基本操作

#pragma once#define MAX_SIZE 10 typedef unsigned int size_t;typedef int DataType;#include<stdio.h>#include<assert.h>#include<memory.h>#include <stdlib.h>#define MAX 100 typedef struct SeqList{ DataType arr[MAX]; int sz; // 顺序表中有…

kafka分区与分组原理_kafka 基本原理和概念

Kafka系统的角色Broker &#xff1a;一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topictopic&#xff1a; 可以理解为一个MQ消息队列的名字Partition&#xff1a;为了实现扩展性&#xff0c;一个非常大的topic可以分布到多个 broker(即服…

python里类的概念

Python编程中类的概念可以比作是某种类型集合的描述&#xff0c;如“人类”可以被看作一个类&#xff0c;然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能&#xff0c;属性即类本身的一些特性&#xff0c;如人类有名字、身高和体重等属性&a…

cadence导入dxf文件_Allegro中如何导入DXF文件

EDA365欢迎您登录&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x1. 执行菜单FileImportDXF…出现下面窗体&#xff1a;2. 选择DXF文件3. 选择单位4. Layer conversion file&#xff1a;会自动产生&#xff0c;或选择设置好的文件5. 点击Edit/…

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

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

all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER

Promise.all的实现和原理Promise.all 功能&#xff1a;Promise.all(iterable)返回一个新的Promise实例,此实例在iterable参数内素有的Promise都fulfilled或者参数中不包含Promise时&#xff0c;状态变成fulfilled。如果参数中Promise有一个失败rejected &#xff0c;此实例回调…

排序之选择排序:简单选择+堆排序

一、简单选择排序 1、思想&#xff1a;每遍历一次都记住了当前最小&#xff08;大&#xff09;元素的位置&#xff0c;最后仅需一次交换操作即可将其放到合适的位置。与冒泡排序相比&#xff0c;移动数据次数少&#xff0c;节省时间 &#xff0c;性能优于冒泡排序。 2、时间复杂…

ubantu 添加防火墙策略_Ubuntu 14.04 配置iptables防火墙

Ubuntu默认安装是没有开启任何防火墙的&#xff0c;为了服务器的安全&#xff0c;建议大家安装启用防火墙设置&#xff0c;这里推荐使用iptables防火墙.如果MySQL启本地使用,可以不用打开3306端口.# whereis iptables #查看系统是否安装防火墙可以看到:iptables: /sbin/iptable…

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画笔绘制毛发。今天的知识稍微需要点耐心。如何把下…

Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架

Tornado 自定义session&#xff0c;与一致性哈希 &#xff0c;基于redis 构建分布式 session import tornado.ioloopimport tornado.webfrom myhash import ringcreate_session_id sasd # 随机生成的 session 函数class SessionGen(object):container {}def __init__(self,ha…

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

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