首页 > 其他分享 >Tomcat编码和Sevlet继承关系

Tomcat编码和Sevlet继承关系

时间:2023-10-26 17:14:53浏览次数:40  
标签:编码 Sevlet Tomcat resp req javax HttpServlet servlet void

1.设置编码

tomcat8之前设置编码:

(1).get请求方式:

get方式目前不需要设置编码(基于Tomcat8) 如果时get请求发送的中文数据,转码稍微比较麻烦(Tomcat8之前) tomcat8之前转码方式: /* String fnama(属性名,可随意设置)=request.getParameter("fnama");

1.将字符串打散成字节数组

byte[] bytes=fnama.getBytes("ISO-8859-1");

2.将字节数组按照设定的编码重写组装成字符串

fname=new String(bytes,"UTF-8"); */

(2).post请求方式

request.setCharacterEncoding("UTF-8");

注意: 需要注意的是,设置编码这一句代码必须在所有获取参动作之后 tomcat8之后,设置编码只需要针对post

2.Servlet的继承关系 -重点查看的是服务方法(servlet())

1.继承关系

javax.servlet.Servlet接口 javax.servlet.GenericServlet抽象类 javax.servlet.http.HttpServlet抽象子类

2.相关方法

 

/*
javax.servlet.servlet接口:
            void init(config)   --初始化方法
            void service(request,response)  --服务方法
            void destroy()  --销毁方法
        javax.servlet.GenericServlet抽象类:
            void servlet(request,response) --仍让是抽象的
​
        javax.servlet.http.HttpServlet  抽象子类:
           void servlet(request,response) --不是抽象的
              1.String method = req.getMethod();获取请求的方式
*/

2.各种if判断,根据请求方式不同,决定去调用不同的do方法

if (method.equals("GET")) {'
                        this.doGet(req,resp);
                    } else if (method.equals("HEAD")) {
                        lastModified = this.getLastModified(req);
                        this.maybeSetLastModified(resp, lastModified);
                        this.doHead(req, resp);
                    } else if (method.equals("POST")) {
                        this.doPost(req, resp);
                    }

3.在HttpServlet这个抽象类中,do方法都差不多;

 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
                String protocol=req.getProtocol();
                String msg = lStrings.getString("http.method_get_not_supported");
                if (protocol.length() != 0 && !protocol.endsWith("0.9") && !protocol.endsWith("1.0")) {
                            resp.sendError(405, msg);
                        } else {
                            resp.sendError(400, msg);
                        }
            }

4.小结:

1.继承关系:HttpServlet->GenericServlet->Servlet

2.Servlet中的核心方法:init()、servlet()、destroy()

3.服务方法:当有请求过来时,servlet方法会自动响应(其实时tomcat容器调用的) 在HttpServlet中我们回去分析请求的方式:到底是get、post、head还是delete等 然后再决定调用的是哪个do开头的方法 那么在HttpServlet中,这些do开头的方法默认都是405的实现风格-要我们子类去实现 对应的方法,否则默认会报405错误

4.因此我们在新建Servlet时,我们才会去考虑请求的方式,从而决定重写哪个do方法

 

标签:编码,Sevlet,Tomcat,resp,req,javax,HttpServlet,servlet,void
From: https://www.cnblogs.com/chouxia/p/17789839.html

相关文章

  • Spark编程案例:分析tomcat访问日志求访问量最高的前两个网页
    需求如题,tomcat访问日志如下:192.168.88.1--[30/Jul/2017:12:53:43+0800]"GET/MyDemoWeb/HTTP/1.1"200259192.168.88.1--[30/Jul/2017:12:53:43+0800]"GET/MyDemoWeb/head.jspHTTP/1.1"200713192.168.88.1--[30/Jul/2017:12:53:43+0800]......
  • 《动手学深度学习 Pytorch版》 10.6 自注意力和位置编码
    在注意力机制中,每个查询都会关注所有的键-值对并生成一个注意力输出。由于查询、键和值来自同一组输入,因此被称为自注意力(self-attention),也被称为内部注意力(intra-attention)。本节将使用自注意力进行序列编码,以及使用序列的顺序作为补充信息。importmathimporttorchfromtorc......
  • 配置tomcat出现404错误
    应用程序部署错误:请确保应用程序已正确部署到Tomcat的webapps目录中。检查应用程序的war文件或目录是否位于正确的位置。上下文路径错误:如果应用程序部署到了Tomcat的webapps目录中的子目录中,您需要确保正确配置了应用程序的上下文路径。默认情况下,上下文路径是应用程序的名......
  • Media Encoder 2024:掌控未来视界的超凡编码神器
    MediaEncoder2024,这是一款尖端的视频编码软件,它将为您打开一扇全新的视界之门。这款软件不仅具备高度的灵活性和精确性,还拥有强大的功能和出色的性能,使您能够轻松应对各种复杂的视频编码需求。→→↓↓载MediaEncoder2024mac/win版MediaEncoder2024支持多种视频格式和编......
  • 华为云耀云服务器L实例:初级篇-tomcat配置部署
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • 转换字符串为二进制编码字符串
    varfillZeroToEight=function(numStr){if(numStr.length>=8){returnnumStr;}vardiff=8-numStr.length;varzeroStr="";for(letindex=0;index<diff;index++){zeroStr+="0"......
  • JS反调试绕过&JS代码混淆&JSFUCK编码
    JS反调试绕过&JS代码混淆&JSFUCK编码如果目标网站的JS代码中有比较机密的东西,会启用反调试,代码混淆这些功能防止泄露机密数据。下面说说几种绕过目标网站JS反调试功能的方法。-禁用断点点击下图那个禁用断点的按钮即可禁止断点过后,大多数情况下可以绕过对方的反调试,但是自己也......
  • idea配置tomcat热部署
    idea中配置了tomcat的“updateclassesandresources”后,点击run之后,每次修改代码都没有及时生效,也就是没有成功进行热部署。在idea中实现热部署,要先设置自动编译,再选择正确的运行模式(Debug运行,不是Run)新建一个类或文件都需重新启动tomcat!!!第一步:开启自动编译重点:看自动编译......
  • 计算机图像编码入门篇(下)
    前言本文旨在为初学者提供有关计算机图像编码的基础知识,以帮助他们初步理解计算机中图像编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。文中部分内容参考ChatGPT,在此感谢ppword的支持。四、YUV色彩空间1、YUV和YCbC的关系YUV是编译true-color颜色空......
  • Java基础 Java中编码、解码的方法
    所谓编码,就是把我们要存储的数据变成能真正的存储在硬盘当中的字节数据 编码的方法:public byte[] getBytes()  →  使用默认方式进行编码(idea默认使用UTF-8;eclipse默认使用GBK)public byte[] getBytes(String charsetName)  →  使用指定方式进行编码......