以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解。
如有不足或者错误,请各位指正。
 
 
----数据处理的升级

 
在上面的描述中,大家也看到了,远古时期的程序员,其实也听不容易的,后台要手写Html。
手写html跟业务的相关性很小,而且,也容易出错,同时,还要求大家需要掌握前端的技术。从业务分离,降低耦合,明确分工的角度来讲,这样的做法是条条违背的。
所以,程序员们,对代码进行了拆分。
为了明白他们是怎么拆分的,我们需要先简单了解一个技术--引擎,简单点来说,就是字符串替换。
 
假如你有这么个需求,我们需要从后台数据库读取数据库用户姓名,再读取一个自定义的txt文本文件,将字符串拼接起来,进行用户的展示。
我们的一种思路应该是,在txt文件中设置标识位,或者是标识符。读取标识符,替用从数据库读取到的数据换标识符,比如这样的:
读取花括号,并替换成对应的变量
String readStr=ReadFromFile("XXX.txt");//"我是{name},我今年{age}岁了"
String outStr=readStr.replace("{name}",user.Name).replace("{age}",user.Age);
 
经过替换之后,输出outStr就可以了。通过改变文本内容,我们可以自定义输出的内容,但是注意“{name}”、“{age}”这两个是不能变的
以上,便是引擎的一个简单应用模型,从文件中读取内容,将文件中的占位符替换成变量。
 
回到上面讲的远古程序员时期,手写html的时候,很多的Html内容是与业务无关的,那么我们能不能把html提取成文件,然后用文本替换的这种形式,把变量拼接进去,依旧是返回一个字符串,但是程序员不再在html的编写与调试上面花费多余的时间,而且也实现了前后端的分离。
对于程序员的这种拆分前后端代码的普遍需求,微软这边有webform , asp.net mvc, JAVA那边有 JSP。
 
对ASP.NET MVC来讲,在我们写return View()的时候, View是ViewResult类型的一个实例,

是可以传字符串,对象,很多东西的。
当传入的是字符串的时候,会去找你传入的字符串(视图路径),查找到视图,对视图进行引擎解析。
当什么都不传入的时候,那么会按照默认“views/controllerDirectory/actionFile”去找对应的视图.
比如:AController BMethod,回去找"views/A/BMethod.cshtml",这是ASP.NET MVC的规则。
然后按照razor引擎,对文件中的变量进行解析替换,得到html字符串。
 
对于JAVA来讲,在tomcat启动项目的时候,会在tomcat的work文件夹下面针对jsp文件,生成一个“.java”文件,并编译成类文件
如:"Tomcat 7.0\work\Catalina\localhost\YourProjectName\org\apache\jsp\index_jsp.java"
我们打开这个"xxx_jsp.java"文件,会发现,里面的代码是
这样的远古时期输出字符串的这种形式来编写的代码。
当在servlet中写访问“xxx.jsp”的时候,服务器会加载"xxx_jsp.java"文件中的类,执行他的输出方法,得到html字符串,发回给浏览器。

个人对B/S项目的一些理解(二)的更多相关文章

  1. 个人对B/S项目的一些理解(三)--Servlet与Strust

    以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解. 如有不足或者错误,请各位指正.   由于个人一开始入门时是ASP.NET MVC,是一个比较完善.完整的框架,下面仅对JAVA的w ...

  2. 个人对B/S项目的一些理解(一)

    以下是我自工作以来,结合对C/S项目的认知,对B/S项目的一些理解. 如有不足或者错误,请各位指正.     B/S browser/server ----对于这两个软件的个人看法 本质上,也是两个软 ...

  3. Tomcat 部署 Web 项目的本质理解

    手动创建Web项目 不借助集成开发工具IDE,直接手动创建一个Web项目,有助于理解Web项目的本质. 1.首先建立一个myweb文件夹(自己定义项目名). 2.然后可以建一个html文件(文件里面只 ...

  4. Python之路(四十一):通过项目来深入理解tornado

    Tornado之路   引子 与其感慨路难行,不如马上出发 目录 通过项目来深入理解tornado(一):tornado基础回顾 通过项目来深入理解tornado(二):AsyncHttpClient ...

  5. 一张图搞定OAuth2.0 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上 彻底关闭Excle进程的几个方法 (七)Net Core项目使用Controller之二

    一张图搞定OAuth2.0   目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 回到顶部 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常 ...

  6. Laravel大型项目系列教程(二)之用户管理

    Laravel大型项目系列教程(二) 一.前言 本节教程将大概实现用户的注册.修改个人信息.管理用户功能. 二.Let's go 1.创建用户注册视图 $ php artisan generate:v ...

  7. Redis缓存项目应用架构设计二

    一.概述 由于架构设计一里面如果多平台公用相同Key的缓存更改配置后需要多平台上传最新的缓存配置文件来更新,比较麻烦,更新了架构设计二实现了缓存配置的集中管理,不过这样有有了过于中心化的问题,后续在看 ...

  8. 使用Visual Studio Team Services敏捷规划和项目组合管理(二)——VSTS中的工作项

    使用Visual Studio Team Services敏捷规划和项目组合管理(二)--VSTS中的工作项 1.通过project/team下拉菜单选择MyHealthClinic\Web,导航到W ...

  9. vue项目使用qrcodejs2生成二维码

    最近写项目遇到一个需求,根据后台给的地址生成二维码,在网上找了下,qrcodejs2使用还是比较多,试了下也能实现需求,就整理下使用方法,方便以后使用   1. 安装包 cnpm i qrcodejs ...

随机推荐

  1. 【容器云】传统金融企业的 Docker 实践

    基于 Docker 的容器云-Padis 目前市面上基于容器云的产品有很多,对于平安而言,则是基于 Docker 的 Padis 平台.所谓 Padis,全称是 PingAn Distribution ...

  2. ddd 聚合根 之 聚合与不聚合 设计

    聚合 不聚合 订单和订单明细 论坛主贴与贴子回复 订单和收货地址(vo)  

  3. QWhatsThis的用法

    QWhatsThis,为任何widget提供简单的描述,回答"What's This?"这个问题. 示例:(在MainWindow下运行) 定义全局变量 QAction *newA ...

  4. [python]获取网页中内容为汉字的字符串的判断

    实际上是这样,将获取到网页中表单内容与汉字字符串作比较,即: a = request.POST['a'] if a == '博客园': print 'ok' else: print 'false' a ...

  5. python学习笔记-import utils报错

    今天遇到一个坑爹的问题,查找了半天原因,终于解决了,在此特地记录一下. 运行环境:Windows eclipse 我在eclipse中配置了python的运行环境,在eclipse中编写python代 ...

  6. 连载《一个程序猿的生命周期》-《发展篇》 - 3.农民与软件工程师,农业与IT业

    相关文章:随笔<一个程序猿的生命周期>- 逆潮流而动的“叛逆者”        15年前,依稀记得走出大山,进城求学的场景.尽管一路有父亲的陪伴,但是内心仍然畏惧.当父亲转身离去.准备回到 ...

  7. Yahoo14条军规-前端性能优化

    1.尽可能减少HTTP请求数 什么是http请求? 2.使用CDN(内容分发网络) 什么是CDN? 3.添加Expire/Cache-Control头 Expire Cache-Control 4.启 ...

  8. 轻量级C#编辑器RoslynPad

    简介 RoslynPad是一个Apache 2.0协议开源的轻量级C#编辑器.支持自动完成,语法提示,修改建议等功能.很适合平时随手写个C#程序看看运行结果. 目前版本:0.10.1,无需保存也可以运 ...

  9. Selenium-java-Log4j环境搭建和

    1 导入Log4j ,我这版本是1.2.17  自己选择版本  **别告诉我不会导入 2  Path  奶瓶 3 创建一个与src同目录文件 命名为 log4.properties 4 文件的内容是, ...

  10. [LeetCode] Anagrams 错位词

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...