对web开发的个人反省(代码片段)

masking_timeflows masking_timeflows     2022-11-03     130

关键词:

Tomcat概括:

Tomcat为一款开源的应用服务器,用如下简单的流程来表示:

 

 

至于与浏览器端的交互,我们可以写一个简单的myTomcat来盗取浏览器发送给Tomcat的信息,具体代码如下:

 

package tom;
import java.net.*;
import java.io.*;
public class mytomcat 
    public static void main(String args[])
    
        try
            ServerSocket ss=new ServerSocket(8080);
            System.out.println("Sever startup in 1428ms");
            Socket s=ss.accept();
            InputStream is=s.getInputStream();
            InputStreamReader isr=new InputStreamReader(is);
            BufferedReader br=new BufferedReader(isr);

            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());
            System.out.println(br.readLine());

        catch(Exception e)
    

 

 

通过对打印信息的分析,可以得出诸多结论,其中时间戳这个概念最为有意思,访问了浏览器,便会被浏览器所记忆,浏览器作为不稳定连接,每次都会以“时间戳”返回个服务器。如果我们自己写一个myIE。若是在一个网站投票,设定好将要投的字符串,然后每次修改时间戳,就会实现刷票功能。

同时我们写一个简单的myIE程序,也可以骗取Tomcat发给浏览器的信息。这些信息基本意义都是与发送信息相对,代码如下:

package myir;
import java.net.*;
import java.io.*;
public class MyIE 
   public static void main(String args[])
   
       try 
           Socket s=new Socket("127.0.0.1",8080);
           OutputStream os =s.getOutputStream();
           OutputStreamWriter osw=new OutputStreamWriter(os);
           PrintWriter pw=new PrintWriter(osw,true);
           pw.println("GET /test.html HTTP/1.1");
           pw.println("Accept: */*");
           pw.println("Accept-Language: zh-CN");
           pw.println("User-Agent:Mozilla/4.0 (compatible; MSIE 8.0;" +
                   "Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR" +
                   "3.5.30729; .NET CLR 3.0.30729; .NET)");
           pw.println("Accept: */*");
           pw.println("Accept: */*");
       
   

 

 

这样来讲,tomcat的整个机理便没那没难以理解了。

 

Servelt概括:

Servlet为web后台的衍生技术,它是java中的一个类,一般来说,当我们在运行Tomcat的时候,有用户访问浏览器,servelt就调用java的calss文件。因为是运行结果,所以在页面的提前设计中,我们也不知道会得到什么样的内容,所以通常吧这样的页面叫做动态页面。

另外有个问题,如果有用户访问浏览器,servelt就得调用一次class文件,得生成对象,然后调用,然后再经过jvm删除掉,这样显然是低效的做法,因此tomcat的开发者的设计是,

之前就把servelt的类创建成对象放在内存中,这样再用户访问的时候我们就可以直接调用这个对象了。

然而,这样的方式又会衍生出两个问题,(1)如果一个系统中,servelt的数量过多,必然有一些无用的,或很少用到的,生成太多会造成冗余。(2)当多个用户同时访问servelt,一个对象是不够用的,必然得使用多线程。

针对这两个问题解决的方法是,servelt会再第一次被调用的时候创建对象,这样就很巧妙的解决了以上问题。

 

XML概述:

当今的数据库都是二维表存放数据的,而xml是用树形结构存放数据的,加之xml的共用性,所以说xml可作为轻量级数据库。实现两个不同数据库传输的媒介。而在非数据库领域里,xml也可以用来协调不同计算机语言,不同服务器之间的数据融合。

 

Xml文件负责存放数据,DTD和schema负责约束,css和xsl负责转换成表现形式,dom和sax负责解析,这些技术完整的构成了xml体系。

DOM的思想是将xml的内容形成一个对象读取到内存中,这个对象映射这xml的树形结构,可以通过调用对象的成员的方法来访问这些内容。

web开发docker+halo搭建个人博客(代码片段)

契源最近“白嫖”了一个月的腾讯云云服务器,想来闲着不如用它来试试搭建一个个人博客主页,博客框架我选用halo。腾讯云配置腾讯云服务器配置账号密码等步骤不必多说,系统我选用的UbuntuServer20.04LTS64位这个系... 查看详情

django测试平台开发开发博客(代码片段)

Django测试平台开发(二)开发博客 1、加载博客HTML页面1、在templates目录下新建index.html文件  1<!doctypehtml>2<html>3<head>4<metacharset="utf-8">5<title>首页_杨青个人博客-一个站在web前端设计之路的女技术员... 查看详情

关于微服务架构的个人理解(代码片段)

...,这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;越来越多的论坛、社区、blog以及互联网行业巨头开始对微服务进行讨论、实践,可以... 查看详情

web开发模式(代码片段)

原文链接开发模式的介绍(完善版)在Web开发模式中,有两个主要的开发结构,称为模式一(ModeI)和模式二(ModeII).首先我们来理清一些概念吧:DAO(DataAccessObject):主要对数据的操作,增加、修改、删除等原子性操作。Web层:... 查看详情

个人项目开发psp实践-mywcprj(代码片段)

...、词组数、行数统计。应学校软件工程课程的PSP个人项目开发实践需要,特此尝试自己写一个用c++实现的wc(MyWCprj.exe)。该程序仅能确保统计.c.cpp.h文件代码 查看详情

个人博客的上云之路(代码片段)

  一转眼已经做了3年多的Web开发,但是还没有一个自己的个人网站,确实感觉有点说不过去。这段时间刚好公司不太忙,闲来无事就开始琢磨这个事。我们开发网站肯定得在公网上有一台自己的服务器,现在这服务器很好解... 查看详情

个人总结asp.net必备面试题(代码片段)

...种设计模式即主要的思想,是一种功能结构模块化的一种开发思想,目的是更好的管理自己的代码。ASP.NETMVC是微软对ASP.NETWebForm框架做出的彻底重构,使Web应用程序的 查看详情

web前端个人工作总结

...。在这段时间的学习和项目中使我对前端业务需求和项目开发流程有一定的了解和认识,对前端也有自己的理解。前端是建立在以产品为核心,用户体验为基础的一门技术(其实我个人更喜欢用艺术来形容前端),每一个细微的视... 查看详情

项目开发流程(代码片段)

目录第一节:项目开发流程BBS-个人博客项目完整搭建项目开发流程一、项目分类二、项目开发模式分类1、瀑布开发模式2、敏捷开发模式3、项目开发流程4、BBS多人博客项目基本功能和需求5、项目程序设计第一节:项目开发流程... 查看详情

cannotcreateawineventnotifierwithoutaqeventdispatcherwin32问题解决个人整理(代码片段)

...正好在学习qt,于是基于qt的qlocalserver来进行了动态库的开发。开发完成之后,问题来了。。。有一部分功能是使用网页来展现的,我们用了一个公司买的封装过的浏览器来加载网页,网页的事件由浏览器加载的np插件来响应,我... 查看详情

java开发个人工具类(代码片段)

文章目录一、Database1.1BaseDao1.2JdbcUtils二、Web2.1BaseServlet2.2EmailUtils2.3IPUtils三、File3.1AppendObjectOutputStream3.2IOUtils四、Others4.1CommandUtils4.2NumberUtils4.3DateUtils4.4StringUtils一、Database1.1Bas 查看详情

web应用模式(代码片段)

web应用模式在开发web应用中,有两种应用模式:1.前后端不分离2.前后端分离api接口为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接... 查看详情

web3.0的初步学习研究(代码片段)

...于这种去中心建立起来。使用Solidity语言实现HelloWord代码开发语言Solidity是一种专门用于编写区块链智能合约的语言。语法与JavaScript类似。智能合约是存储在区块链中的代码开发工具remix,开发工具使用在线IDE,不需要下... 查看详情

web3.0的初步学习研究(代码片段)

...于这种去中心建立起来。使用Solidity语言实现HelloWord代码开发语言Solidity是一种专门用于编写区块链智能合约的语言。语法与JavaScript类似。智能合约是存储在区块链中的代码开发工具remix,开发工具使用在线IDE,不需要下... 查看详情

2022.07.10暑假集训个人排位赛(代码片段)

2022.07.10暑假集训个人排位赛(五)赛后反省垫底了。两道思维题老是和自己错误的想法过不去,做题的时候还不够清醒。后面状态直接崩了。ProblemB出处HDU-5145题解不用莫队直接被卡常了。莫队+组合数学。每次添... 查看详情

c#web开发之blazor体验(代码片段)

前言先说结论:blazor做Web开发绝对好东西。对于我个人来说,有两个重要的原因:特别喜欢C#;特别不喜欢JavaScript;在了解到blazor居然可以使用c#做Web开发且完全可以不用编写JavaScript代码时,第一感受是&#x... 查看详情

c#web开发之blazor体验(代码片段)

前言先说结论:blazor做Web开发绝对好东西。对于我个人来说,有两个重要的原因:特别喜欢C#;特别不喜欢JavaScript;在了解到blazor居然可以使用c#做Web开发且完全可以不用编写JavaScript代码时,第一感受是&#x... 查看详情

面向web开发的安卓入门(代码片段)

本文会从web相关技术入手,介绍安卓开发的基本知识,进而对Hybrid开发有更深入的认识。需要有web开发基础和少许java基础。概述本文主要会参考官方文档,基本使用可见构建首个应用。安卓操作系统基于linux内核,linux... 查看详情