Servlet入门:服务端小程序的初试(自己学习整理的资料)

news2024/11/24 16:33:30

目录

一.前言

二.建立基础结构​编辑

三.具体步骤 

找到Tomcat文件并打开Tomcat。

在webapps中创建一个自己的文件夹。

在classes中新建一个Java文件。

在lib中导入需要的jar文件包。

配置环境变量

在Java文件的目录下打开cmd并输入 javac -d . HelloServlet.java进行编译。

注册Servlet以及web.xml

启动Tomcat 进行测试

四.感受


 

一.前言

  • Java自身并没有响应网页的请求,因此普通的Java类通过寻找父类来继承其响应网页的请求。(ag:通过继承HttpServlet来响应网页的请求)

  • 学习Java基础的重点在于领会。(ag:功夫中所练习的内功)

  • 学习Javaweb的重点在于遵守其规范。(ag:功夫中所练习的套路(招式))

ps:需下载Tomcat。

二.建立基础结构
26fe5935ae3744bd91d4180caf08e90f.jpeg

三.具体步骤 

  • 找到Tomcat文件并打开Tomcat。

7780607bbd9f49529c96999a40a82028.png

ps:下载Tomcat中的9.0版本,且尽量下载64位windows压缩文件,这样Tomcat服务器被我们玩废了可以在其文件名后打个!将其注释掉。然后用压缩文件重新解压,不用经历卸载重装的麻烦。

  • 在webapps中创建一个自己的文件夹。

(ps:初学尽量在Tomcatwebapps中创建文件夹,因为Tomcat的server.xml中默认appBase是webapps,如果要在其它地方创建文件,后续需要在server.xml中加代码,对于初学者来说比较麻烦)。

da819ea630a24ffba2e85b82cc7e3c1f.png

ps:我新建了一个myweb。 

  • 在创建的文件夹中新建一个html网页和WEB-INF(ps:WEB-INF所有的字母必须大写)。

2f79b67239eb409db429f2afca877ffd.png

  • 在WEB-INF中创建lib文件夹,classes文件夹以及web.xml。

0cdc983701bd450dbcc64c0fb0c0ee24.png

  • 在classes中新建一个Java文件。

 b6c54d8541e44623b21a953748ca7bdd.png

ps:我新建了一个名为HelloServlet的Java文件。

  • 在lib中导入需要的jar文件包。

f3b681969c7542209046160f57cb5a62.png

ps:我们可以去Tomcat的lib包里借鉴一下它自带的包,这里可以只用导需要的包jsp-api.jar以及servlet-api.jar。

  • 配置环境变量

22d4c94390114b78bf0a165597dc5578.png

6f75599b96d941029a720fdf394ab938.png

ps:在电脑系统属性的高级中选择环境变量,并在系统变量中找到classpath,对它进行配置系统变量。(尽量配置外面Tomcat自带的lib文件夹里的servlet-api.jar,因为在win11中有的WEB-INF受到Tomcat系统的保护导致无法访问)

  • 在Java文件的目录下打开cmd并输入 javac -d . HelloServlet.java进行编译。

5190afd2901b48aeb513ec54759eae6c.png

 ps:HelloServlet是我Java的文件名,注:大小写不能错必须与创建的Java文件名一致。如果这一步报错,可以根据系统给的提示进行相应的修改。(作为一个程序员一定要学会看错误提示,会帮助找错节约大量时间)

  • 注册Servlet以及web.xml

  • 在web.xml中进行代码编写。
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<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">
  <servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>ww.servlet.HelloServlet</servlet-class>  
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>


</web-app>
  • 在创建的Java文件里导包和编写代码 
package ww.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
				PrintWriter out = response.getWriter();
		out.println("HelloServlet!!!");
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}
}
  • 启动Tomcat 进行测试

  • 在网页搜索地址框中输入     localhost:8080/创建的文件夹/自己配置的名字                     (ag:localhost:8080/myweb/hello)

ps:自己配置的名字来源于 web.xml中的 <url-pattern>/配置名字</url-pattern>

02d81bf228c141eb9d03895298bb4a77.png

成功!

ps:启动Tomcat的按钮在bin文件中的startup.bat,关闭也在bin文件中的shutdown.bat 。(可以把启动的快捷方式发到桌面上,因为过程中我们基本会有错误出现,会多次反复启动Tomcat进行验证是否成功)

四.感受

  • 本节还是具有一定难度,在代码编写中一定要注意单词的正确性以及大小写的区分。

  • 在web.xml中  <servlet-class>ww.servlet.HelloServlet</servlet-class>  。(类的权限名.类名+包名)

  • ww.servlet:这个是java文件中的packge代码编写的名字。

  • 要掌握代码之间的调用关系,否则互相找不到导致的错误。

  • 如果错误提示为 400多 就是路径错误。

168b7427a17640a7b4769b7a181e061c.png

  • 如果错误提示为 500多 就是代码错误 ,路径没有问题 。

localhost:8080/myweb/hello

 

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

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

相关文章

深兰科技陈海波应邀出席2024长三角论坛暨虹桥人才创新发展大会

近日&#xff0c;以“人才引领 联动共融——国际化创新与长三角协同”为主题的“2024长三角人才发展论坛暨虹桥人才创新发展大会”在上海国际会议中心隆重举行。上海市委常委、组织部部长、市委人才办主任张为应邀出席并做大会致辞。 深兰科技创始人、董事长陈海波作为特邀企业…

多用户自定义商城小程序源码系统 独立部署 到源代码包以及搭建部署教程

系统概述 随着移动互联网的迅猛发展&#xff0c;消费者的购物习惯逐渐向线上转移。传统电商平台虽然提供了一定的便利&#xff0c;但也存在一些局限性&#xff0c;如高昂的入驻费用、缺乏个性化定制等。为了适应市场需求&#xff0c;多用户自定义商城小程序源码系统应运而生。…

linux 之0号进程、1号进程、2号进程

一、0号进程 0号进程&#xff0c;通常也被称为idle进程&#xff0c;或者也称为swapper进程&#xff0c;其 pid 等于0。 0号进程是linux启动的第一个进程&#xff0c;它的task_struct的comm字段为"swapper",所以也称为swpper进程。 kernel/include/linux/init_task…

IO分类,IO模型,Java中的IO模式

写在前面 本文看下几个比较容易混肴的概念&#xff0c;IO分类&#xff0c;IO模型&#xff0c;Java的IO模式。当然&#xff0c;都是我自己的理解&#xff0c;有哪里不对的&#xff0c;烦请留言告知。 1&#xff1a;IO分类 IO分类是针对阻塞与非阻塞&#xff0c;异步与同步来讲…

.net 到底行不行!2000 人在线的客服系统真实屏录演示(附技术详解)

业余时间用 .net 写了一个免费的在线客服系统&#xff1a;升讯威在线客服与营销系统。 时常有朋友问我性能方面的问题&#xff0c;正好有一个真实客户&#xff0c;在线的访客数量达到了 2000 人。在争得客户同意后&#xff0c;我录了一个视频。 升讯威在线客服系统可以在极低…

基于SSM+Vue+MySQL的农家乐预约管理系统

系统展示 用户前台界面 管理员后台界面 农家乐后台界面 系统背景 随着乡村旅游的兴起&#xff0c;农家乐作为一种结合农业体验与休闲度假的新型旅游模式&#xff0c;受到了广大游客的青睐。然而&#xff0c;传统农家乐在预约管理方面存在效率低下、信息不透明等问题&#xff0c…

头戴式耳机百元测评推荐有哪些?头戴式耳机性价比排名推荐!

在音频设备日益普及的今天&#xff0c;头戴式耳机因其出色的音质和舒适度备受欢迎。然而&#xff0c;面对市场上琳琅满目的百元耳机&#xff0c;消费者常常感到困惑。头戴式耳机百元测评推荐有哪些&#xff1f;在这篇文章中&#xff0c;我们将测评并推荐几款性价比极高的头戴式…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

第一届POLARDB数据库性能大赛-亚军0xCC☣☢比赛攻略

关联比赛: 第一届POLARDB数据库性能大赛 1 赛题分析 本次大赛的初赛和复赛的赛题内容是一脉相传的&#xff0c;主要内容都是实现一个KV数据库存储引擎&#xff0c;实现随机插入&#xff0c;随机查询&#xff0c;区间查询这三个功能。赛题的难点主要有两个&#xff1a;1、实现在…

C#常用数据结构栈的介绍

定义 在C#中&#xff0c;Stack<T> 是一个后进先出&#xff08;LIFO&#xff0c;Last-In-First-Out&#xff09;集合类&#xff0c;位于System.Collections.Generic 命名空间中。Stack<T> 允许你将元素压入栈顶&#xff0c;并从栈顶弹出元素。 不难看出&#xff0c;…

图片如何转化为pdf格式?这几种方法超好用!

图片如何转化为pdf格式&#xff1f;在日常工作与学习中&#xff0c;图片与PDF文件作为两种截然不同的文档格式&#xff0c;各自扮演着重要角色&#xff0c;图片以其直观性著称&#xff0c;能够瞬间捕捉并展示视觉信息&#xff0c;无需额外软件即可快速浏览&#xff0c;但其内容…

免费制作证件照的小程序源码

1、效果展示 证件照制作&#xff0c;证件照免费制作&#xff0c;证件照调用api源码&#xff0c;解析代码。证件照制作小程序包&#xff0c;可以下载程序包&#xff0c;最初级版本免费下载。以上是高级版本。如果你有开发能力的话可以自己写前端&#xff0c;然后以下调用以下api…

粉丝精准!小红书卖儿童绘本项目,单月变现近2w(附详细教程)

AI绘本故事以其创新性、个性化、互动性和教育意义&#xff0c;迎合了宝爸宝妈对高质量儿童读物的需求&#xff0c;同时融合科技与教育&#xff0c;满足了他们对孩子全面发展的期待&#xff0c;因此在小红书上备受追捧。 今天给大家分享一个【小红书卖儿童绘本】项目&#xff0…

Spring Boot使用注解方式整合MyBatis

文章目录 实战讲稿&#xff1a;Spring Boot使用注解方式整合MyBatis课程目标课程内容1. 创建员工映射器接口1.1 创建子包1.2 创建接口 2. 测试员工映射器接口2.1 自动装配员工映射器2.2 测试按标识符查询员工方法2.3 测试查询全部员工方法2.4 测试插入员工方法2.5 测试更新员工…

如何保持测试环境的稳定性?

日常自动化测试中最担心的就是环境不稳定问题。不稳定的测试环境&#xff0c;经常可能导致测试失败。 解决方法&#xff1a;尽量保持测试环境的稳定性&#xff0c;包括硬件、软件和网络等方面。 如何保持测试环境的稳定性&#xff1f; 要保持测试环境的稳定性&#xff0c;可…

从零开始,Docker进阶之路(二):Docker安装

Docker 要求 CentOS7 系统的内核版本在 3.10以上 1.通过 uname -r 命令查看你当前的内核版本 uname -r2. 使用 root 权限登录 Centos。确保 yum 包更新到最新。 yum -y update 慢慢等&#xff0c;小编也是等了十分钟之久 3.卸载旧版本(如果安装过旧版本的话) yum remove do…

元宇宙的未来趋势:Web3的潜在影响

元宇宙&#xff0c;一个日益受到关注的概念&#xff0c;代表着一个沉浸式的虚拟世界&#xff0c;其中用户可以进行社交、商业和娱乐活动。随着技术的发展&#xff0c;Web3逐渐成为推动元宇宙演变的重要力量。Web3以去中心化为核心&#xff0c;利用区块链、智能合约和其他创新技…

加密软件巅峰对决:Ping32 vs 天锐绿盾,谁是企业数据安全的守护者之王?

在信息安全日益重要的今天&#xff0c;企业加密软件已成为保护敏感数据的关键工具。在众多加密产品中&#xff0c;Ping32与天锐绿盾&#xff08;简称绿盾&#xff09;凭借其卓越的性能和丰富的功能&#xff0c;成为了企业用户关注的焦点。那么&#xff0c;在这场加密软件的巅峰…

干货分享 | TSMaster—LIN 唤醒与休眠机制

在汽车总线中常见的唤醒方式有硬线唤醒、网络唤醒和特定信号唤醒&#xff0c;而LIN总线则是通过休眠帧与唤醒电平来实现的&#xff0c;本文将介绍LIN的唤醒与休眠机制。 本文关键词&#xff1a;LIN 网络管理&#xff0c;休眠&#xff0c;唤醒 目录 Catalog 1. 网络管理 2. …

vue3开发中易遗漏的常见知识点

文章目录 组件样式的特性Scoped CSS之局部样式的泄露Scoped CSS之深度选择器CSS Modules在CSS中使用v-bind 非props属性继承组件通信父子组件的相互通信props/$emit父组件传递数据给子组件子组件传递数据给父组件 非父子组件的相互通信Provide/inject全局事件总线 组件插槽作用…