首页 > 其他分享 >Servlet总结

Servlet总结

时间:2024-08-16 18:51:31浏览次数:14  
标签:总结 请求 路径 访问 跳转 Servlet 页面

Serevlet

一、概念

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,泛指用 Java编写的服务器端程序。在编程过程中也指一切 实现了Servlet接口的类(约定以Servlet结尾命名)。

二、使用

在src.com.qf.servlet包中创建Servlet01类extend HttpServlet,重写其中的doGet()、doPost()方法,在方法中可以获取请求对象,和响应对象。编写逻辑业务代码,以及调用其方法对请求做出响应。

三、Servlet生命周期分析

  1. 客户端发送请求(request)
<form action="LoginServlet" method="post">
  1. 服务器接收请求,根据请求路径找到对应项目

  2. 扫描其中的web.xml文件,Tomcat根据xml配置文件获取当前请求体对应的Servlet类

<servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>com.qf.servlet.Servlet01</servlet-class>
        <init-param>
            <param-name>code</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/servlet01</url-pattern>
    </servlet-mapping>
  1. 查询Servlet容器中是否有该类的对象,若存在这调用该Servlet对象;若不存在,则调用构造方法创建该对象,并再次扫描xml中的声明部分,创建ServletConfig对象,调用init()方法进行初始化
@Override
    public void init() throws ServletException {
        ServletConfig servletConfig = this.getServletConfig();
        String code = servletConfig.getInitParameter("code");
        System.out.println("-- init--" + code);
    }
  1. 获取到Servlet对象,tomcat解析请求数据,并创建HttpServletRequestWrapper请求实现类对象和HttpServletResponseWrapper响应实现类对象

  2. 每个Servlet对象都会先调用HttpServlet的service(req,resp)方法,对请求的Method进行判断,调用我们重写的doGet、doPost等等方法,开始业务逻辑的执行

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException

四、跳转

1、跳转的分类

  • 页面 – 跳转 – 页面(请求路径为前端页面访问路径)

  • 使用a标签(已链接的方式)

  • 使用按钮(通过编写js函数)

  • 使用form表单(其中action表示目的路径,可以选择跳转的Method–Post、Get)

  • 页面 – 跳转 – Servlet(请求路径为Servlet访问路径)

  • 使用a标签(已链接的方式)

  • 使用按钮(通过编写js函数)

  • 使用form表单(其中action表示目的路径,可以选择跳转的Method–Post、Get)

  • Servlet – 跳转 – Servlet

  • 使用转发的方式:res.getRequestDispatcher(“目标Servlet访问路径”).forward(request,response);

  • 使用重定向的方式:resp.sendRedirect(“目标Servlet访问路径”);

  • Servlet – 跳转 – 页面

  • 使用转发的方式:res.getRequestDispatcher(“目标页面”).forward(request,response);re

  • 使用重定向的方式:resp.sendRedirect(“目标目标页面”);

2、转发与重定向的区别

  1. 区别一:请求次数的不同     
     转发:该方法通过在服务器内部查找目标路径所对应的资源,然后返回响应给客户端,实际请求为次。
     重定向:该方法是告诉客户端,当前请求路径服务端内部不找该资源,要求客户端再发一次目标路径的请求,服务器在接收请求返回响应,实际请求为两次。

  2. 区别二:场景–访问外部资源
    转发:当该请求需要访问外部资源时,由于它是在内部查找资源,无法获取外部资源。
    重定向:当该请求需要访问外部资源时,因为它需要客户端重新发送一次目标资源的请求,所以该请求会在外部资源服务器中访问成功。

  3. 区别三:场景–访问受保护的WEB_INF中的资源

转发:由于服务器内部查找该资源,所以访问成功。

重定向:由于客户端会第二次发送请求,而目标资源是受保护的,第二次请求将会访问失败。

3、中文请求路径

当请求路径中有中文字符时,我们通常会response.sendRedirect(URLEncoder.encode(“页面1.html”,“UTF-8”));来设置路径的编码格式。

标签:总结,请求,路径,访问,跳转,Servlet,页面
From: https://blog.csdn.net/a3263298665/article/details/141259446

相关文章

  • linux驱动总结
    一.前言做linux开发也有一段时间了,对整个系统已经熟悉了很多,linux是一个非常大的系统,现在对常见的驱动做一个总结,以此来加深记忆和理解。二.常见驱动及其子系统分类1.Linux设备分类linux系统抽象出的设备可以分为三类:char_dev,block_dev,net_dev。字符设备是产品开发用的最多......
  • 【课程总结】day24(下):大模型部署调用(vLLM+LangChain)
    前言在上一章【课程总结】day24(上):大模型三阶段训练方法(LLaMaFactory)内容中主要了解一个大模型的训练过程,无论是第三方的大模型还是自研的大模型,都需要部署到服务端,提供对应API接口供上层应用使用。所以,本章将主要了解vLLm+langchain的基本使用方法。大模型应用框架......
  • Spring经典面试题总结
    spring是什么?轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用,可以让我们的企业开发更快、更简洁Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架–从大小与开销......
  • JS中构造函数继承问题注意事项总结
    在JavaScript中,继承是通过原型链来实现的。当你想要创建一个子类(比如Student)继承一个父类(比如Person)时,通常会使用Object.create来创建Student的原型对象。这背后有一些重要的原因:1.共享与独立性当你执行Student.prototype=Person.prototype时,Student的原型......
  • SQL常用思维总结
    1.将复杂查询拆分为子查询子查询指的是:一个查询语句嵌套在另一个查询语句内部的查询,作为上级查询的查询条件之一--查询课程1分数比课程2分数高的学生的学生信息、课程1分数、课程2分数selectstudent.*,score1,score2fromstudentjoin(selectt1.s_id,t1.s_scorescore1,t2......
  • SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结
    目录1、SpringBoot的事务管理2、SpringBoot的异步任务3、SpringBoot定时任务调度4、SpringBoot整合Mail发送邮件5、Spring框架中的Bean的作用域6、Spring框架中的Bean的线程安全7、Spring框架中的Bean生命周期8、Spring框架如何解决循环依赖?9、Spring框架中有哪些注......
  • 广度优先算法 BFS总结(算法详解+模板+例题)
    一.bfs是什么广度优先搜索(Breadth-FirstSearch,简称BFS),是一种图遍历算法。它从给定的起始节点开始,逐层地向外扩展,先访问起始节点的相邻节点,然后再访问相邻节点的相邻节点,以此类推,直到遍历完所有可达节点。二.基本思路1.一直往前走,直到到达终点。2.遇到分岔路口直接分出几条......
  • 终端命令(常用版)(白话文)(自总结)<每2日续写>
    终端命令(常用版)(白话文)(自总结)看前说明:1.命令没有前后加括号【】说明需加内容的,默认只需要输入命令然后回车即可。2.中间有“【空格】”即为命令与调用参数之间的需要输入“单空格”。3.个别命令说明,解释在前,用法在后,其他默认直接输入。【直接正题】          ......
  • Kali Linux 三种网络攻击方法总结(DDoS、CC 和 ARP 欺骗)
    一、引言在当今数字化的时代,网络安全成为了至关重要的议题。了解网络攻击的方法和原理不仅有助于我们增强防范意识,更是网络安全领域专业人员必备的知识。KaliLinux作为一款专为网络安全专业人员和爱好者设计的操作系统,提供了丰富的工具来模拟和研究各种网络攻击手段。本文......
  • 【待做】【MySQL安全】内网渗透测试:MySql的利用与提权思路总结
    一、MySQL相关信息收集二、通过MySql获取服务器权限2.1获取MySql连接密码2.2MySQL口令爆破2.3MySQL哈希值爆破2.4从网站泄露的源代码中寻找数据库密码2.5通过MySql向服务器写WebShell2.6利用Unionselect写入WebShell2.7利用分......