关于Servlet编程(1)

news2025/1/13 3:02:23

1.Servlet编程中常见网页错误

404错误 : 访问不存在

一般都是路径出错.

在这里插入图片描述


405错误 : 请求方法不允许

  • 使用访问的方法有误
    • 只书写了接受Get方法的代码.却使用POST方法访问.
  • 代码中忘记注释super()方法也会返回405
    • 因为源码是直接返回405的

在这里插入图片描述

这里展示的两段代码都会引发上图的405.

1.首先看源码中忘记删除super.doGet()方法.

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(name = "TestErrorServlet", value = "/testerr")
public class TestErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //代码中忘记注释super()方法
        super.doGet(request, response);
    }
}

2.下述中代码只书写了doPost请求的方法.但是通过浏览器访问默认是GET方法.

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(name = "TestErrorServlet", value = "/testerr")
public class TestErrorServlet extends HttpServlet {
    //只书写了doPost方法,但是浏览器默认访问GET方法.

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("test");
    }
}

500错误 : 代码中抛异常

代码中抛异常未被处理.异常抛到了Tomcat,Tomcat直接返回500

在这里插入图片描述

doGet中除零异常代码.除零异常未捕获会向上抛出.

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(name = "TestErrorServlet", value = "/testerr")
public class TestErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //除零异常未捕获向上抛出
        System.out.println(5 / 0);
    }
}

空白页面 : 一般是正常访问

一般是正常访问.但是代码中没有给页面返回数据.

在这里插入图片描述

代码中什么都没有书写,前端就什么也没有接收到.但是没有错误.

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(name = "TestErrorServlet", value = "/testerr")
public class TestErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

无法访问 : 网络不通(TCP的层次是不通的)

可能是Tomcat没有启动 或者启动失败了.(比如Tomcat端口被占用,启动失败)

在这里插入图片描述


2.关于GET和POST的请求常见构造方式.

  • GET请求
    • 1.直接在地址栏里输入URL
    • 2.通过a标签跳转
    • 3.通过img/link/script…
    • 4.通过form表单 method=get
    • 5.ajax,type指定为get
  • POST请求
    • 1.通过form表单 method=post
    • 2.通过ajax,type指定为POST

3.常用类的关键API介绍

HttpServlet

我们写 Servlet 代码的时候, 首先第一步就是先创建类, 这个类就要继承自 HttpServlet.那我们来看看这个类.

方法名称调用时机
init在 HttpServlet 实例化之后被调用一次
destory在 HttpServlet 实例不再使用的时候调用一次
service收到 HTTP 请求的时候调用
doGet收到 GET 请求的时候调用(由 service 方法调用)
doPost收到 POST 请求的时候调用(由 service 方法调用)
doPut/doDelete/doOptions/…收到其他请求的时候调用(由 service 方法调用)

编写代码来观察HttpServlet的方法.

  • 代码详情
    • 继承HttpServlet类
    • 重写继承类的方法
    • 使用@WebServlet注解
      • name : 类名
      • value : 填写路径
        • 这里填写的路径对应到地址栏的路径
        • 这里填写的路径必须有 / .硬性规定.( value = “/hello” )
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(name = "helloServlet", value = "/hello")
public class HelloServlet extends HttpServlet {

    private String message;

    public void init() {
        message = "Hello World!";
        System.out.println("会在HttpServlet实例化时调用一次");
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //设置返回数据的类型
        response.setContentType("text/html");
        System.out.println("在收到GET请求的时候调用");
        // Hello
        //获取流对象用于给页面返回数据
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("在收到POST请求的时候调用");
    }

    public void destroy() {
        System.out.println("会在HttpServlet销毁时会调用");
    }
}
  • 访问页面.观察控制台.

在这里插入图片描述

  • 可以看到控制台的输出符合预期.
    • init 初始化时调用
    • doGet 收到请求时调用
    • doPost 未收到请求,不调用
    • destroy 未主动销毁,不调用

image.png

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

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

相关文章

[附源码]计算机毕业设计健康医疗体检Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

powershell实现发送win10系统通知

powershell实现发送win10系统通知 一、实现方式是使用系统自带的类NotifyIcon 关于Notify类的属性和使用方法可以查阅NotifyIcon官方文档&#xff0c;这主要讲一下用到的几个变量和方法。 1. Icon Icon只支持 .ico格式的图标&#xff0c;属于自定义图标&#xff0c;只有当 Ba…

PLC、运动控制卡、运动控制器,傻傻分不清

前言 最近有不少做PLC开发的小伙伴&#xff0c;在一些咨询运动控制卡、运动控制器相关的问题&#xff0c;很多人不清楚它们之间有什么区别和联系&#xff0c;今天跟大家就PLC、运动控制卡、运动控制器区别及选型做个分享。 背景 随着工业技术的发展&#xff0c;工业机器人应…

怎么调整视频画布?这些技巧你知道吗?

小伙伴们平时在制作视频时是否有遇到过这种情况&#xff1a;从网站下载的视频素材画面过大&#xff0c;两边还带有黑边&#xff0c;插入到自己的视频后&#xff0c;显得视频整体上很突兀&#xff0c;美观度也受到影响&#xff0c;没有达到自己预期的效果。 如果你们也有这样的烦…

什么是CodeArts?

什么是CodeArts 软件开发生产线&#xff08;CodeArts&#xff09;原名“软件开发平台&#xff08;DevCloud&#xff09;”是集华为近30年研发实践、前沿研发理念、先进研发工具为一体的一站式云端DevOps平台&#xff0c;面向开发者提供的云服务&#xff0c;即开即用&#xff0…

从开环到闭环的旅程-CoCube

差动驱动机器人轨迹-CoCube 迷宫逃离的问题-CoCube 自由运动和环境限制-CoCube 001&#xff0c;自由运动 002&#xff0c;引出环境 003&#xff0c;对比差异 ROS机器人从起点到终点&#xff08;四&#xff09;蓝桥云实践复现 cocube自由运动机器人也需要一个目标&#xff…

JSON数据交互方式

目录 一、JSON的特点 二、前后端开发推荐使用工具ApiPost 扩展&#xff1a;xml与json的区别 三、JSON语法格式 语法注意点&#xff1a; 四、在html中定义json数据类型 1.单个实体——>JSON数据 2.数组实体——>JSON数据 3.集合实体——>JSON数据 五、JSON数据…

Redis的缓存穿透

文章目录1. 缓存穿透的理解2. 常见的解决方案有两种&#xff1a;3. 布隆过滤&#xff1a;4. 编码解决查询的缓存穿透问题&#xff1a;1. 缓存穿透的理解 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到…

安科瑞企业微电网AcrelEMS-MED医院能效管理平台应用分析

安科瑞 李亚俊 平台概述 AcrelEMS-MED医院能效管理平台依据《医疗建筑电气设计规范》《绿色医院建筑评价标准》、《医院建筑能耗监管系统建设技术导则》等行业规范建设&#xff0c;由电力监控及能效管理系统组成&#xff0c;涵盖了医院中压变配电系统、应急电源、隔离电源、照…

刷题11-和大于或等于K的最短子数组

刷题008-和大于或等于K的最短子数组 首先&#xff0c;审题要认真&#xff0c;题目说的是>target的长度最小的连续子数组&#xff0c;也就是返回值最小为0&#xff0c;其次是1 核心思想&#xff1a;设置两个指针left和right&#xff0c;初始都指向0&#xff0c;当sum<ta…

java学习day60(乐友商城)搭建后台、使用nginx进行反向代理、实现查询功能

1.搭建后台管理前端 1.1.导入已有资源 后台项目相对复杂&#xff0c;为了有利于教学&#xff0c;我们不再从0搭建项目&#xff0c;而是直接使用课前资料中给大家准备好的源码&#xff1a; 我们解压缩&#xff0c;放到工作目录中&#xff1a; 然后在Intellij idea中导入新的工…

(一)RT-Thread入门——内核介绍

目录 内核介绍 线程调度 时钟管理 线程间同步 线程间通信 内存管理 I/O 设备管理 总结 今天就开始学习有关RT-Thread的相关知识了&#xff0c;准备理论和实践同时进行&#xff0c;目前这一部分是原理理论部分&#xff0c;后面会结合实际的例子来加强学习&#xff0c;系…

Kubernetes 平台的生态系统介绍

Kubernetes作为一个容器云管理平台&#xff0c;与底层的基础架构、企业周边的公共服务形成了一个完备的生态系统。如图1所示&#xff0c;一个完备的Kubernetes系统在设计和实现时&#xff0c;需要考虑多层面的高可用性问题。 图1 Kubernetes 平台的生态系统因此&#xff0c;解…

一、计算机网络体系结构(二)参考模型

目录 2.1计算机网络分层结构 2.2协议、接口、服务的概念 2.2.1语法、语义和同步 2.2.2服务访问点&#xff08;SAP&#xff09; 2.2.3服务 2.3ISO/OSI参考模型和TCP/IP模型 2.3.1常见的三种参考模型 2.3.2 OSI参考模型 2.3.3 TCP/IP参考模型 2.1计算机网络分层结构 …

第13章 用户角色服务实现

013 Permissions、RoutePrefix、RedisMqKey、CustomApiVersion、SwaggerSetup Permissions&#xff1a;通过该类中的属性成员&#xff0c;当前程序的权限配置提供数据支撑。 RoutePrefix&#xff1a;通过该类中的属性成员&#xff0c;为Swagger JSON设定终结点&#xff0c;为“…

混入mixin

混入(mixin)&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的 可复用功能 -- &#xff08;混入对象可以封装在一个组件中&#xff0c;以供复用&#xff0c;放的都是一些公共使用的功能。&#xff09;一个混入对象可以包含任意组件选项。当…

ELK 企业级日志分析系统及Logstash过滤模块

目录 一、ELK 简介 1.1 ELK各组件介绍 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 1.2 可以添加的其它组件&#xff1a; Filebeat&#xff1a; 缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09;&#xff1a; Fluentd&#x…

authorization server client resource 使用2

authorization server && client && resource 使用2 oauth2 整合 jwt authorization server && client && resource 使用1 中默认的示例就是使用的jwt 生成token&#xff08;用于&#xff09;,当然这里和我们用户登录的token是有区别的 oau…

【信息奥赛题解】昆虫繁殖(详细分析题解 C++ 代码)

昆虫繁殖问题 &#x1f31f; 【题目名称】昆虫繁殖 【题目描述】 科学家在热带森林中发现了一种特殊的昆虫&#xff0c;这种昆虫的繁殖能力很强。每对成虫过 XXX 个月后开始产卵&#xff0c;每月产 YYY 对卵&#xff0c;每对卵要过两个月长成成虫。 假设每个成虫不死&#…

SpringCloud01:回顾微服务和微服务架构

回顾微服务和微服务架构微服务微服务架构微服务架构技术栈微服务 微服务架构 微服务架构的四个核心问题 服务很多&#xff0c;客户端怎么访问&#xff1f;这么多服务&#xff0c;服务之间如何通信&#xff1f;这么多服务&#xff0c;如何治理&#xff1f;服务挂了怎么办&#x…