为什么现在大多数网站是html结尾,很少见以jsp结尾?

澹zany


可以看到,现在有很多种类似于JSP的Html页面,JSP是JAVAEE规范中的Servlet模板引擎!最终是解释为Html文本,通过response输出到浏览器!

如今Web开发的趋势是前后端分离,模块化开发,动静分离!因此很多非Servlet模板引擎出现了,诸如freemark,thymeleaf等等!还有类似于向vue这样渐进式前端框架!这些都属于解释型的模板引擎,JSP之所以用的少了,是因为它不利于前后端分离,去Servlet化又是J2EE的一个趋势,即使性能再高不利于团队开发,最终要被舍弃!

所有的JAVA Web端的开发模板最终都是解释为Html作为页面显示的!


人生路誰主沉浮


JSP已经是一种淘汰的技术,故而使用少,目前存在的JSP网站主要以老项目居多,银行,电信等行业,现在开发提倡前后端分离,JSP技术做不到前后端分离.

JSP淘汰的主要原因:

1.JSP

的页面既可以写Java代码,又可以写Java后端代码,这个听起来很高端,其实就是一个垃圾的设计,前端代码都已经够多的了,在往里面添加Java代码,看起来很难受,缺乏逻辑性,影响开发.

2.JSP

的本质还是一个Servlet,运行还得经过编译为一个Servlet,故而在效率上比不过静态化的Html页面(直接Ajax等前后端异步交互处理),在资源消耗上JSP相比较Html页面消耗资源要多上许多.

3.JSP

是一个动态页面,页面内容不可控,影响搜索引擎SEO优化,在网站排名上搜索引擎有限排Html今天太页面,其次排JSP(动态不可控,可能会出现色情,暴力等不适内容),流量和广告是网站生存的根本,故而大部分网站淘汰了JSP技术改用HTML静态页面.

4.JSP

页面混乱,前端后端代码一起写很乱,不能进行前后端分离开发,不符合目前网站开发的主要趋势与潮流.

BigDataKer


以前,jsp,asp,aspx等很流行,那是因为当时前端网页与后端代码混合开发。HTML只负责静态网页,其他的脚本负责实现动态网页。对于动态网页,写几行HTML,再插几句ASP、JSP代码,然后再写几行HTML,再写几行jsp,里面还打印几行HTML内容……很难阅读,也很难调试。写一个网页既要懂网页设计:字体、颜色、布局、动画,又要懂代码编程、数据库、业务逻辑。那时开发网站的,基本都是“全栈工程师”。

现在,有了各种前段框架(JQuery,Ajax,Angular,Vue,Bootstrap,React,……),前后端代码分开开发。前端使用HTML和js来完成各种复杂的动态效果,重新刷新和加载后端数据,而不需要向后端索要整个网页内容。前端负责html、css、js,主要是美编、设计、图片处理、js程序员进行开发。而后端只负责业务及数据处理,各种语言都能实现,以java、.net、php、python等语言为主。这些后端数据URL可以自己定义后缀名,只要后端增加一个路由解析就可以了。所以,呈现在浏览器上的URL基本都是HTML后缀的。但是,如果调试的话就会发现有很多内部数据交互的URL并不是HTML后缀的。


RaymondIT


提问的你,应该是一个很注意细节的人,作为一个不是行业内的你,能发现这个问题,一来可以说明你的年纪应该是30+以上,那么现在我来回答你的问题,这是一个涉及到,web开发的一个变革,在2005年的时候,谷歌公司出了一个技术叫ajax,核心技术是XMLhttprequest这个东西,你可能并不知道,但是百度一下,大概也会得到一些答案,这个东西可以让静态网页和服务器进行数据交互,在这个之前,我们在做开发的时候必须是在使用服务端脚本需要进行数据交互,使用数据页面的渲染重载,但是这个东西在当时出现了,国内还是延后了,只有当时的大公司在用,大概在2010年之后,国内中小型公司,加上各类人才的崛起,慢慢的开始使用!下面省略一万字加,因为靠打字实在是说不清楚,但是有一天得明确,看不到了绝不是技术落后,只是普通用户看不到了,但是在普通用户看不到的地方,这些技术,比如java一直处于开发语言排名的前三位,如果真的想要知道,这个地方的回答不能给你答案,你需要找一个真正专业的人来给你解答,至少是你的朋友或是你朋友的朋友,是这个行业内的人!


布衣143358545


jsp基本已经淘汰,目前大厂开发大多是前后端分离,前端只关心UI设计,后端开发者给API接口,这类的URL后缀基本都是HTML,也可以不需要后缀。小型的开发一般会使用PHP,node.

js,Python,go等做全栈开发,这类开发其实应该叫做URL加参数,并不一定需要后缀,或者可以说任意后缀,根据web框架路由系统分发不同的资源。总之现在后缀不是必须的。


非IT专业的编程栈


这个问题其实很好,其实,如果你弄明白了为啥,能帮助你更好的理解web。

谈为什么之前,我们先简单说一http工作的原理。当你在浏览器中输入网址的时候,实际上相当于输入了一条命令,格式如下。

协议://主机名[:端口] +参数

这个命令的意思是。用标注的协议所指定的方法,去链接主机的相应端口,参数是参数。

比如,当你输入http://www.google.com/ 的时候,实际是告诉浏览器用http的get 方法,去访问www.google.com主机的80端口,参数是"/\


shawn25


这是个好问题。

首先现代动态网站在真正访问网页前会经过DNS、负载均衡器(nginx、apache)才会真正到达后端的网页服务或api服务,nginx可以对url进行处理和分发,不管以什么结尾的url都可解析后进行转发,所以以html还是jsp结尾不重要。


其次,最好不要以jsp为结尾,因为这会暴露后端的技术栈,容易被人有针对性的进行攻击。


再次,已html为结尾可以留一个口子,方便对网站进行静态化优化,如秒杀或大促时需要对大流量网页进行优化,这时可以将网页托管到CDN进行加速。


最后,其实以html为结尾只是一个比较通用的方案,最好是直接以路径的方式暴露服务路径(如

https://www.xxx.com/path/page

),不加任何结尾,通过负载均衡器来进行分发,这样设计的扩展性更好,方便将网页和api进行统一处理,如接入网关服务、统一限流等。

Java互联网架构


简单回答:

一、安全原因

现在很多站长为了保护网站安全,都是采用的前台静态,后台动态的方式。html页面即静态的,基本上是html+CSS+JS代码,这种网站代码编写时,很少有安全漏洞。后台采用JSP、PHP、ASP或.NET等等,即动态程序,通过这些动态程序,管理网站内容,并将网站页面转换成静态文件,在前台发布。由于动态代码编写时,很容易产业程序漏洞,黑客利用程序漏洞可攻击网站。因此,站长就会将后台文件放在用户接触不到的服务器上。一般访问的用户,只能看到前台html文件。所以就产生了题主的疑问了。

二、访问速度原因。

由于访问html静态文件时,代码是什么内容,浏览器就解析并显示什么内容,不存在数据库的读取。所以访问数据就相对较快。而动态文件,用户访问是,服务器需要读取数据库内容,根据程序文件将相关数据转换成html代码,浏览器再解析并显示。这样访问速度就相对较慢。


互联网运营人灯塔


关于这个问题,我谈谈自己的理解,如果有不对的地方,欢迎大家留言指正。


首先,你看到的结尾不一定是真的。

如果URL中是叫index.html就一定和jsp没有关系么?不一定的:

  • 首先,这个地址大家一定很常见到吧:'http://localhost:8080/index.jsp'。学名叫做URL,统一资源定位符。【资源】两个字圈起来,知识点,后面要考。

  • 我们实际的代码中,是有index.jsp这个文件的。但是,要注意(敲黑板),URL中的index.jsp是资源,代码中的index.jsp是文件,不是一个概念,两者不能划等号。

  • 大家应该对JSP都很了解了,JSP文件需要放到Servlet容器才能运行,servlet容器接到URL为“index.jsp”的请求时,容器会按照默认的方式去寻找“index.jsp”这个文件。这里的映射是可以自定义的,也就是说,我们修改了映射之后,可以做到让“index.html”去调用“index.jsp”文件,另外一方面,也有可能URL中带有JSP,实际上没有用到JSP。

不过话说回来,JSP用的却是少了。

  • 企业级的老项目,还是有用JSP的,毕竟页面中嵌入Java代码还是很方便的;不过随着业务的复杂,如果将业务逻辑写到JSP中是非常难维护的;

  • 后来慢慢流行MVC的架构,JSP成了其中的View;

  • 现在更多的企业开始使用分布式的架构,进行前后台的分离,前端页面完全是静态页面,通过接口调用后台服务获得数据,因此也减少了JSP的使用;

  • 而且对于互联网的网站,静态页面更有利于SEO,更容易被搜索引擎收录。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


首先,html结尾的页面是静态地址,而jsp结尾的页面代表的动态页面地址。作为一个个人站长,平时主要涉及的就是php开发的网站,哪怕使用的PHP语言开发的网站,真正展示出来的网址也不一定是php结尾的,如图片所示样例就是以html来结尾。

1、为了SEO优化

所谓的html页面即静态页面,搜索引擎偏爱静态花的页面,因此大部分的网站为了优化网站收录,更多的偏向于使用html结尾。

2、如何定义网页的地址以html结尾呢?

其实很简单,比如以PHP为例,只需要定义服务器开启伪静态功能,再自定义

.htaccess

文件即可,如下为一个自定义的伪静态文件。

<ifmodule>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]


分享到:


相關文章: