java开发必备的Tomcat-servlet-http和spring boot基础入门

news2025/1/26 15:31:21

tomcat


    介绍


        概念: Tomcat是一个开源免费的轻量级Web服务器,是Apache软件基金会的核心项目,支持Servlet/JSP少量JavaEE(JakartaEE)规范。

        JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。

 tomcat官网:

          官网:https://tomcat.apache.org/

      

Tomcat 也被称为 Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行 。

 

    安装步骤:

  •         下载:官网下载地址:https://tomcat.apache.org/download-90.cgi
  •         安装:绿色版,直接解压即可
  •         卸载:直接删除目录即可
  •         启动:双击 bin/startup.bat
  •         关闭:

                    直接×掉运行窗口,强制关闭

                    bin/shutdown.bat正常关闭    

                     ctrl+c 正常关闭

  •         部署项目:将项目放置在webapps目录下,即部署完成
第一步:下载

第二步:解压

卸载方式

直接右击删除即可

第三步:启动

在bin目录里面,点击startup.bat 

测试

在启动tomcat之后,在浏览器输入:http://localhost:8080

出现这个页面代表tomcat安装成功

第四步:关闭

点击bin目录里面的shutdown.bat

或者 ctrl+c

或者 直接点×

    配置

        控制台日志编码配置:

       在tomcat目录下点击 conf

找到logging.properties 打开

找到里面的第51行,把最后面的UTF-8 换成GBK


     
        Tomcat运行端口号(默认8080):可以自己配置

                tomcat目录下点击,点击conf目录选择server.xml


       

找到这里,就可以修改端口号了

 BS架构:

介绍:

BS架构: Browser/Server,浏览器/服务器 架构模式。它的特点是:客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可 (便于升级维护)。

静态资源:

服务器上存储的不会改变的数据,通常不会根据用户的请求而变化。比如:HTML、CSS、JS、图片、视频等(负责页面展示)。

动态资源:

服务器端根据用户请求和其他数据实时生成的,内容可能会在每次请求时都发生变化。比如:Servlet、JSP等(负责逻辑处理)。

servlet



        什么是servlet?


            Servlet 是运行在Web服务器中的小型java程序,是Java提供的一门动态web资源开发技术。通常通过HTTP协议接收和响应来自于客户端的请求。

            Servlet 是JavaEE规范之一,其实就是一个接口(定义Servlet需实现Servlet接口 或 继承HttpServlet) ,并由web服务器运行Servlet。

        如何使用servlet:

  •             准备:创建maven项目(设置打包方式为war),导入servlet坐标(provided)
  •             开发:

                定义一个类,实现servlet接口(继承HttpServlet)

  •                 在servlet类上使用@webServlet注解,配置该servlet的访问路径。
  •                 部署:将开发好的servlet配置在外部的tomcat服务器中运行。
第一步:在maven中设置打包方式

第二步:导入servlet-api的坐标

第三步:基层HttpServlet类

        重写doGet方法

第四步:在idea里面配置tomcat

点开 edit  configurations

 

点击左上角的+号

 

找到这个Tomcat Server 下面的Local

 

第一次配置的话,需要执行下面的操作

1,configure 找到本地的tomcat

2,在出现的弹窗里面。点击Tomcat Home右侧的文件夹,找到自己的tomcat 然后点击ok

3,上面的Name 可以修改一下启动tomcat的名字

 

1,点击右边的Deployment

2,小加号,找到本项目的 war包,一般都是第一个

3,Application context 这一栏的访问本项目的路径。可以修改按需操作

 

在点击这个绿色的按钮就可以运行了

 
   

执行流程


        示例:http://localhost:8080/demo/hello?name=xiaoming


        servlet 对象是由谁创建的?

servlet对象由web服务器创建,servlet方法由web服务器调用。

  •         HttpServletRequest:用于封装所有的数据请求
  •         HttpServletResponse:用于封装所有的响应数据

http


        概述:


            Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

        特点:


            1,基于TCP协议:面向连接,安全

            2,基于请求-响应模型的:一次请求对应一次响应

            3,HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。

                缺点
                    多次请求间不共享数据
                优点
                    速度快


    http-请求协议

        请求数据

                


            请求行:


                请求数据第一行(请求方式,资源路径,协议)


            请求头:


                第二行开始,格式 key:value都是,到下面的空行结束。

  •                     Host:请求的主机名

                    User-Agent:览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko

  •                     Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
  •                     Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
  •                     Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
  •                     Content-Type:请求主体的数据类型。
  •                     Content-Length:请求主体的大小(单位:字节)。
请求体


                一般是在最后,空行下面的数据。
        请求数据获取

  •             getMethod() 获取请求方法
  •             getRequestURL() 获取请求路径
  •             getScheme() 获取请求协议
  •             getQueryString() 获取查询字符行
  •             getParameter() 获取请求参数
  •             getHeader() 获取请求头
  •             getInputStream() 获取输入流

代码示例:

package com.sde;

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

@WebServlet("/request")
public class RequestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        // 获取请求方式
        String method = req.getMethod();
        System.out.println("请求方式:"+method);
        writer.println("请求方式:"+method);

        // 获取请求路径
        StringBuffer url = req.getRequestURL();
        System.out.println("请求的url:"+url);
        String uri = req.getRequestURI();
        System.out.println("请求的uri:"+uri);
        writer.println("请求的url:"+url);
        writer.println("请求的uri:"+uri);

        // 获取请求的参数
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        System.out.println("请求的参数:"+name+"--"+age);
        writer.println("请求的参数:"+name+"--"+age);

        // 获取请求的协议
        String scheme = req.getScheme();
        System.out.println("请求的协议:"+scheme);
        writer.println("请求的协议:"+scheme);

        //获取请求头中的某些信息
        String accept = req.getHeader("Accept");
        System.out.println("请求头中的Accept项::"+accept);
        writer.println("请求头中的Accept项::"+accept);
    }
}

控制台效果:

浏览器效果:


    http-响应协议



            响应行:

响应数据的第一行(协议,状态码,描述)


            响应头:

第二行开始,格式key:vakue,一直到后面的空行。


            响应体:

最后一部分,存放响应数据。


        响应数据设置

  •                 Web服务器对HTTP协议的响应数据进行了封装(HttpServletResponse),并在调用Servlet方法的时候传递给了Servlet。这样,就使得程序员不必直接对协议进行操作,让Web开发更加便捷。

                    

  •                 响应状态码 和 响应头如果没有特殊要求的话,通常不手动设定。服务器会根据请求处理的逻辑,自动设置响应状态码和响应头。

                    

代码示例: 

package com.sde;

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

@WebServlet("/response")
public class ResponseServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //设置响应状态码
        resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

        //设置响应头
        resp.setHeader("name","daoen");
        resp.setHeader("content-type","text/html;charset=UTF-8");

        //设置响应数据
        resp.getWriter().write("我是里白我nb"+"<h1>cool</h1>");
    }
}

效果:

 

常见的响应状态码

开发中常见的:

200  客户端请求成功

404  请求资源不存在,一般是url输入有误,或者网站资源被删除了

500   服务器发生不可预期的错误。

springboot快速入门

spring boot可以帮助我们快速的的构建应用程序,简化开发,提高开发效率。 

创建spring boot工程:

1,在自己的工程下,右击 出现下面这个小页面

2,选择spring initializr 右侧的name就是本项目名。Language选择java,Type选maven。Group就是组织名,Artifact:也表示本项目名,然后点击next,jdk 根据自己情况选择,打包方式选jar包。

3,根据自己情况选择spring boot版本。和依赖。

 

 起步依赖:
  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖。
  • 官方提供的starter:https://docs.spring.io/spring-boot/docs/3.1.3/reference/htmlsingle/#using.build-systems.starter

 

检查依赖:

创建一个HelloController

package com.sde;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(String name){
        System.out.println(name);
        return "你好" +name +"~";
    }

    @PostMapping("/hello2")
    public String hello2(String name){
        System.out.println(name);
        return "你好" +name +"~";
    }

}

启动spring boot 在浏览器访问:

在浏览器访问:

控制台输出:

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

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

相关文章

【hacker送书第4期】推荐4本Java必读书籍(各送一本)

第4期图书推荐 Java从入门到精通&#xff08;第7版&#xff09;内容简介参与方式 项目驱动零基础学Java内容简介参与方式 深入理解Java高并发编程内容简介参与方式 Java编程讲义内容简介参与方式 Java从入门到精通&#xff08;第7版&#xff09; 内容简介 《Java从入门到精通&…

Android String.xml 设置加粗字体/修改字体颜色/动态设置修改文案

之前经常使用Spannable 这次主要在String.xml使用&#xff1a;<![CDATA[和]]> 效果&#xff1a; <resources><string name"str_bianse"><![CDATA[变色 <font color"#ff0000">曲项向天歌</font> 白毛浮绿水]]></st…

R语言gWQS包在加权分位数和回归模型的应用

在流行病学研究中&#xff0c;相较于单一因素的暴露&#xff0c;多因素同时暴露的情况更为常见。传统模型在评价多因素联合暴露时存在数据维度高、多重共线性等问题. WQS 回归模型的基本原理是通过分位数间距及加权的方法&#xff0c;将多种研究因素的效应综合成为一个指数&…

京东数据运营-京东数据平台-京东店铺数据分析-2023年10月京东烘干机品牌销售榜

鲸参谋监测的京东平台10月份烘干机市场销售数据已出炉&#xff01; 10月份&#xff0c;烘干机市场整体销售上涨。鲸参谋数据显示&#xff0c;今年10月份&#xff0c;京东平台上烘干机的销量将近5万件&#xff0c;环比增长约77%&#xff0c;同比增长约22%&#xff1b;销售额将近…

信号类型(通信)——最小频移键控(MSK)

系列文章目录 《信号类型&#xff08;通信&#xff09;——仿真》 《信号类型&#xff08;通信&#xff09;——QAM调制信号》 《信号类型&#xff08;通信&#xff09;——QPSK、OQPSK、IJF_OQPSK调制信号》 目录 前言 一、MSK信号特点 1.1、最小频移 1.2、相位连续 二…

制作心理咨询小程序的详细指南

随着科技的的发展&#xff0c;小程序已经成为了人们日常生活中不可或缺的一部分。特别是在心理咨询这个领域&#xff0c;小程序可以提供一个更为便捷、高效的服务平台。本文将通过乔拓云平台为例&#xff0c;详细介绍如何制作一个心理咨询小程序。 首先&#xff0c;我们需要注册…

L298N模块使用简介

接口作用ENA/ENB使用PWM调节马达转速&#xff08;调速&#xff09;左边一对接口接电机的正负极右边一对接口接电机正负极控制IN1,IN2 控制左边的2个接口的电压&#xff0c;IN1控制一个&#xff0c;IN2控制另外一个 IN1输入3.3V时&#xff0c;OUT1输出3.3v电压&#xff08;可能是…

7. 栈

栈(stack)是一种遵循先入后出的逻辑的线性数据结构。我们可以将栈类比为桌面上的一摞盘子&#xff0c;如果需要拿出底部的盘子&#xff0c;则需要先将上面的盘子依次取出。我们将盘子替换为各种类型的元素&#xff08;如整数、字符、对象等&#xff09;&#xff0c;就得到了栈数…

分析某款go端口扫描器之一

一、概述 进来在学go的端口检测部分&#xff0c;但是自己写遇到很多问题&#xff0c;又不知道从何入手&#xff0c;故找来网上佬们写的现成工具&#xff0c;学习一波怎么实现的。分析过程杂乱&#xff0c;没啥思路&#xff0c;勿喷。 项目来源&#xff1a;https://github.com/…

毫米波传感器系统性能测量(TI文档)

摘要 本应用报告讨论了使用德州仪器高性能毫米波传感器的系统性能测量结果。TI的毫米波传感器是一个77 GHz&#xff0c;高度集成的收发器&#xff0c;具有高速接口(CSI2)&#xff0c;可将原始ADC数据发送出去进行处理。毫米波传感器包括整个毫米波射频和模拟基带信号链&#xf…

异步操作的方法

在高级语言中已经有了异步的原语言&#xff0c;而在C 中的最好的方式就是 libevent 的方式,我这还是相当认同的&#xff0c;高级语言就不需要在苦哈哈的&#xff0c;事件转圈了&#xff0c;但是原理还是以事件为基础的 一句话就是在一个循环中等着他执行完,这个循环中有很多其他…

论文阅读:Distributed Initialization for VVIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章&#xff0c;本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…

【LeetCode刷题-字符串】--71.简化路径

71.简化路径 思路&#xff1a; 对于给定的字符串&#xff0c;先根据/分割成一个由若干字符串组成的列表&#xff0c;记为names&#xff0c;根据题意names中包含的字符串只能是以下几种&#xff1a; 空字符串一个点两个点只包含英文字母、数字或_的目录名 对于空字符串和一个…

Linux小程序之进度条

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;自己能实现进度条 > 毒鸡汤&#xff1a; > …

绘制折扇-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第11讲。 绘制折扇&#xf…

基于ssm亚盛汽车配件销售业绩管理系统

摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让亚盛汽车配件销售信息的管理模式进行升级&#xff0c;也为了更好的维护亚盛汽车配件销售信息&#xff0c;亚盛汽车配件销售业绩管理系统的开…

牛客 算法题 【HJ102 字符统计】 golang实现

题目 HJ102 字符统计 golang代码实现 package mainimport ("bufio""fmt""os""sort" )func main() {// str_arry :make([]string, 0)str_map : make(map[rune]int)result_map : make(map[int][]string)scanner : bufio.NewScanner(os…

Python函数定义、函数调用详解

函数是 Python 程序的重要组成单位&#xff0c;一个 Python 程序可以由很多个函数组成。前面我们己经用过大量函数&#xff0c;如 len()、max() 等&#xff0c;使用函数是真正开始编程的第一步。 比如在程序中定义了一段代码&#xff0c;这段代码用于实现一个特定的功能。问题来…

注册Zoho Mail邮箱:优势与使用体验

如何注册Zoho Mail邮箱&#xff1f;要注册Zoho Mail邮箱&#xff0c;首先打开浏览器&#xff0c;访问Zoho Mail官网&#xff0c;点击页面右上角的“创建帐户”按钮。接下来&#xff0c;按照提示输入你的姓名、生日和性别&#xff0c;以及一个有效的手机号码或电子邮件地址。然后…

数据库管理-第118期 记一次开启附加日志导致的性能问题(202301129)

数据库管理-第118期 记一次开启附加日志导致的性能问题&#xff08;202301129&#xff09; 本周二凌晨&#xff0c;为了配合某国产数据库从Oracle数据库能够实时同步数据&#xff0c;在X9M那套一体机上做了开启附加日志的操作&#xff0c;也正是因为这个操作带来了一些小问题。…