TomCat小型服务器安装

news2025/1/19 3:03:41

一、安装步骤

Tomcat官方站点:

http://tomcat.apache.org

1、进入官方网站后获取安装包:

🤠tar.gz文件是Linux操作系统下的安装版本
🤠zip文件是Windows系统下的压缩版本
2、解压安装
解压到自己的文件夹中
3、安装JDK
设置环境变量
设置JAVA_HOME环境变量
设置Path环境变量
4、在TomCat的bin目录中找到startup.bat

 显示以下黑框则成功安装(如果只是闪一下,则要重新设置环境变量)黑框打开表示服务器打开

黑框关闭表示服务器关闭

 5、在浏览器中打开127.0.0.1:8080跳转到TomCat网站

 完成以上步骤,Tomcat安装成功。

二、修改服务器Tomcat端口号

打开conf文件找到server.xml文件,用Notepad++打开,找到8080端口号修改它,只要不超过范围即可,最好用4位数的端口号。

三、web开发环境搭建 

 

 

 

 

 

 

 

重写下面三个方法,以及一个无参构造方法

 

package com.ffyc.dormServer.web;

import javax.servlet.ServletConfig;
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 LoginServlet extends HttpServlet {
   /*1、接收请求中的数据
   * 2、调用其他的Java程序处理
   * 3、向前端做出响应*/
    public LoginServlet(){
        /*
        无参构造方法,默认时存在的,初始化创建的对象
        只被调用一次(始终只创建了一个对象),在第一次访问servlet程序时由服务器创建执行
         */
        System.out.println("无参的构造方法");
    }

    /*
    init()初始化  在构造方法执行完成后,立即被调用执行,完成一些servlet程序的初始化
    例如(读取配置文件的参数)
    只执行一次
     */
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }

    /*
    service()用来接收前端请求,为前端提供服务的,
    每次前端发送的请求,都会调用service(),多次调用
    HttpServletRequest req:表示请求对象,前端提交过来的所有数据,都由服务器封装在此对象
    HttpServletResponse resp:表示响应对象,响应前端数据
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }

    /*
    destroy()
    销毁
    服务器关闭,要执行的一些操作,就可以在这里执行
     */
    @Override
    public void destroy() {
        System.out.println("destroy");
    }


}

 在web.xml中配置Servlet

<?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">


    <!--
    .xml文件:ml结尾的,也是一种标记语言,设计的目的是用来在项目中存储项目中的配置信息,
    制定好可以使用那些标签
    web.xml:存储web后端项目配置信息,
    在服务器启动时,由服务器加载读取
    -->

    <!--
    配置Servlet,把我们开发的servlet程序注册到服务器,由服务器启动时加载,第一次加载时,由服务器创建对象

    -->
    
    <!--注册登录处理的Servlet-->
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.ffyc.dormServer.web.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name><!--为指定name的servlet程序配置访问地址-->
        <url-pattern>/login</url-pattern><!--配置的供外界访问的地址,必须 / 开头-->
    </servlet-mapping>

</web-app>

 开发环境搭建完成

四、一个简单的前后端的交互示例

用Hbuilder X写一个表单

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<!-- 
		 从前端向后端发送请求 都是http请求
		 http请求只能发送 超文本内容
		     http请求包含请求行、请求头、请求体部分
			 请求行、请求的方式,请求的资源地址等等
			 请求头、包含客户端的一些环境信息,这些信息都是由浏览器自动发出的,以键值形式传递
			 请求体:代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递
			 
			 
			 get请求:主要是从后端获取信息的,例如网页上的超链接,向后端传递少量信息,获得大量信息
			 请求数据直接在请求地址中拼接,所有传输的数据量有限,并且数据敏感不安全
			 
			 
			 post请求:主要用于向后端发送大量数据
			 请求数据在请求体中,可以传输大量数据,不在地址中显示,数据也安全
		 -->
		
		<form action="http://127.0.0.1:8088/domServer/login" method="post">
			账号:<input type="text" name="account" value=""/> <br />
			密码:<input type="password" name="password" value=""/> <br />
			<input type="submit" value="登录"/>
		</form>
	</body>
</html>

 

因为在后端处理get和post时会有不同,所以有了doget 和dopost俩个方法分别处理 

package com.ffyc.dormServer.web;

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 LoginServlet extends HttpServlet {
    //默认无参构造存在

    //init()在没有初始化操作时,可以不用重写,但是服务器会调用父类发init()方法
    /*@Override
    public void init() throws ServletException {
        super.init();
    }*/


    /*
    由于前端请求有get和post俩种,在后端的处理上有点不同
    所以在父类的service方法中,会根据请求方式的不同,调用doget或者dopost方法分别处理
     */
   /* @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行登录处理");

        //接收前端提交的数据
        String account=req.getParameter("account");
        String password=req.getParameter("password");
        System.out.println(account);
        System.out.println(password);
    }*/
/*
处理get请求
 */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get请求");
        String name=req.getParameter("name");
        String age=req.getParameter("age");
        System.out.println(name);
        System.out.println(age);
    }

    /*
    处理post请求
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post请求");
        //设置解码的编码
        req.setCharacterEncoding("utf-8");
        String account=req.getParameter("account");
        String password=req.getParameter("password");
        System.out.println(account);
        System.out.println(password);
    }
    //destroy(),没有最终执行的操作时,也可以不用重写,但是服务器会调用父类的destroy()
    /*@Override
    public void destroy() {
        super.destroy();
    }*/


}

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

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

相关文章

Go源码--context包

简介 Context 是go语言比较重要的且也是比较复杂的一个结构体&#xff0c;Context主要有两种功能: 取消信号&#xff1a;包括直接取消&#xff08;涉及的结构体&#xff1a;cancelCtx ; 涉及函数&#xff1a;WithCancel&#xff09;和携带截止日期的取消&#xff08;涉及结构…

功能强大的声音模拟合成软件Togu Audio Line TAL-Mod 1.9.7

Togu Audio Line TAL一个虚拟模拟合成器,具有卓越的声音和几乎无限的调制能力。其特殊的振荡器模型能够创建广泛的声音,从经典的单声道到丰富的立体声引线、效果器和焊盘。路由可以使用虚拟跳线电缆来完成。只需连接调制输出以达到调制的目的。之后,您可以调整调制强度。您不…

dB分贝入门

主要参考资料&#xff1a; dB&#xff08;分贝&#xff09;定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中&#xff0c;住宅小区告知牌上面标示噪音要低…

Excel表格转Tex工具推荐

为了制作符合 SCI 论文要求的表格&#xff0c;直接用 LaTeX 编写通常比较复杂。我们可以先在 Excel 中绘制好所需的表格&#xff08;最好加上边框&#xff09;。最近我发现了一个非常好用的 Excel 转 LaTeX 工具&#xff0c;能够让 LaTeX 表格的编写变得非常方便。 工具&#…

数据资产治理的智能化探索:结合云计算、大数据、人工智能等先进技术,探讨数据资产治理的智能化方法,为企业提供可靠、高效的数据资产解决方案,助力企业提升竞争力

一、引言 在信息化时代&#xff0c;数据已成为企业最重要的资产之一。随着云计算、大数据、人工智能等先进技术的飞速发展&#xff0c;数据资产治理面临着前所未有的机遇与挑战。本文旨在探讨如何结合这些先进技术&#xff0c;实现数据资产治理的智能化&#xff0c;为企业提供…

X科网js逆向分析

登录抓包之后发现pwd字眼&#xff0c;直接搜索即可 通过$.md5(pwd)之后得到的加密结果就是我们的pwd参数 他说是md5我们不妨测试一下&#xff1a; 1&#xff09;测试使用$.md5(1)加密数字1 得到c4ca4&#xff0c;说明就是$.md5()&#xff0c;md5加密 2&#xff09;测试$.md5…

神经网络在机器学习中的应用:手写数字识别

机器学习是人工智能的一个分支&#xff0c;它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一&#xff0c;因其强大的非线性拟合能力而广泛应用于各种领域&#xff0c;包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数…

独一无二的设计模式——单例模式(Java实现)

1. 引言 亲爱的读者们&#xff0c;欢迎来到我们的设计模式专题&#xff0c;今天的讲解的设计模式&#xff0c;还是单例模式哦&#xff01;上次讲解的单例模式是基于Python实现&#xff08;独一无二的设计模式——单例模式&#xff08;python实现&#xff09;&#xff09;的&am…

【数据结构】C语言实现二叉树的基本操作——二叉树的层次遍历、求深度、求结点数……

C语言实现二叉树的基本操作 导读一、层次遍历1.1 算法思路1.2 算法实现1.2.1 存储结构的选择1.2.2 函数的三要素1.2.3 函数的实现 1.3 小结 二、求二叉树的深度2.1 层序遍历2.2 分治思想——递归 三、 求二叉树的结点数3.1 求二叉树的结点总数3.1.1 层序遍历3.1.2 分治思想——…

SpringBoot | 使用jwt令牌实现登录认证,使用Md5加密实现注册

对于登录认证中的令牌&#xff0c;其实就是一段字符串&#xff0c;那为什么要那么麻烦去用jwt令牌&#xff1f;其实对于登录这个业务&#xff0c;在平常我们实现这个功能时&#xff0c;可能大部分都是通过比对用户名和密码&#xff0c;只要正确&#xff0c;就登录成功&#xff…

【Python实战因果推断】9_元学习器4

目录 Double/Debiased Machine Learning Double/Debiased Machine Learning Double/Debiased ML 或 R-learner 可以看作是 FrischWaugh-Lovell 定理的改进版。其思路非常简单--在构建结果和治疗残差时使用 ML 模型 结果和干预残差&#xff1a; , 预估&#xff0c;预估 由于 …

Python pdfkit wkhtmltopdf html转换pdf 黑体字体乱码

wkhtmltopdf 黑体在html转换pdf时&#xff0c;黑体乱码&#xff0c;分析可能wkhtmltopdf对黑体字体不太兼容&#xff1b; 1.html内容如下 <html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> </head&…

springboot使用测试类报空指针异常

检查了Service注解&#xff0c;还有Autowired注解&#xff0c;还有其他注解&#xff0c;后面放心没能解决问题&#xff0c;最后使用RunWith(SpringRunner.class)解决了问题&#xff01;&#xff01; 真的是✓8了&#xff0c;烦死了这个✓8报错&#xff01;

Android Focused Window的更新

启动App时更新inputInfo/请求焦点窗口流程&#xff1a; App主线程调ViewRootImpl.java的relayoutWindow()&#xff1b;然后调用到Wms的relayoutWindow()&#xff0c;窗口布局流程。焦点窗口的更新&#xff0c;通过WMS#updateFocusedWindowLocked()方法开始&#xff0c;下面从这…

【Spring】DAO 和 Repository 的区别

DAO 和 Repository 的区别 1.概述2.DAO 模式2.1 User2.2 UserDao2.3 UserDaoImpl 3.Repository 模式3.1 UserRepository3.2 UserRepositoryImpl 4.具有多个 DAO 的 Repository 模式4.1 Tweet4.2 TweetDao 和 TweetDaoImpl4.3 增强 User 域4.4 UserRepositoryImpl 5.比较两种模式…

以太网交换机原理

没有配置&#xff0c;比较枯燥&#xff0c;二可以认识线缆&#xff0c; 三比较重要&#xff0c;慢慢理解&#xff0c;事半功倍。 各位老少爷们&#xff0c;在下给大家说段以太网交换机原理&#xff0c;说得不好大家多多包涵&#xff0c;说得好呢&#xff0c;大家叫个好&#x…

【每日一练】python运算符

1. 算术运算符 编写一个Python程序&#xff0c;要求用户输入两个数&#xff0c;并执行以下运算&#xff1a;加法、减法、乘法、求余、除法、以及第一个数的第二个数次方。将结果打印出来。 a input("请输入第一个数&#xff1a;") b input("请输入第二个数&…

诊断知识:UnconfirmedDTCLimit的使用

文章目录 前言UnconfirmedDTCLimit的含义UnconfirmedDTCLimit的使用UnconfirmedDTCLimit和Failed limit相等UnconfirmedDTCLimit小于Failed limit 总结 前言 在某OEM基础技术规范中&#xff0c;诊断需求经常会出现UnconfirmedDTCLimit这个词汇&#xff0c;但基础技术规范中并没…

菲尔兹奖得主测试GPT-4o,经典过河难题未能破解!最强Claude 3.5回答离谱!

目录 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题&#xff1f; 02 加大难度&#xff1a;100只鸡、1000只鸡如何&#xff1f; 01 大言模型能否解决「狼-山羊-卷心菜」经典过河难题&#xff1f; 最近&#xff0c;菲尔兹奖得主Timothy Gowers分享了他测试GPT-4o的经历&a…

入门JavaWeb之 JDBC 连接数据库

JDBC&#xff1a;Java Database Connectivity&#xff0c;Java 数据库连接 需要 jar 包支持&#xff1a; java.sql javax.sql mysql-connector-java&#xff08;连接驱动&#xff0c;必须导入&#xff09; 在 MySQL 先建个 jdbc 数据库后 USE jdbc; 执行后再 CREATE TABLE…