聚集网(jujiwang.com) - 收录免费分类目录信息软文发布网址提交
免费加入

提高生产力:JSF的组件化和声明式方法可以提高Web应用程序的开发效率。(提高生产力的措施有哪些)

文章编号:11146时间:2024-09-30人气:


提高生产力:JSF 的组件化和声明式方法摘要JavaServer Faces (JSF) 是一种基于组件的 Web 应用程序框架,旨在通过简化开发过程来提高生产力。本文将探讨 JSF 中的两种关键功能——组件化和声明式方法——以及它们如何帮助开发人员提高 Web 应用程序的开发效率。组件化JSF 采用组件化方法,将 Web 应用程序分解为可重用的模块或组件。这些组件可以独立开发和维护,然后组合使用以创建复杂的用户界面。组件化提供了以下优势:重用性:组件可以跨应用程序和页面重用,从而减少开发时间和维护成本。模块化:应用程序可以轻松地进行模块化,以便多个开发人员同时在不同组件上工作。可维护性:组件易于维护和更新,因为它们是独立的单元。声明式方法JSF 使用基于 XML 的声明式方法来定义页面和组件。这种方法允许开发人员将用户界面 (UI) 从应用程序的业务逻辑中分离。通过声明 UI,开发人员可以使用更少的代码创建复杂的用户界面,从而提高开发效率。声明式方法提供了以下优势:易于理解:XML 定义易于阅读和理解,即使对于非开发人员来说也是如此。可维护性:声明式方法有助于保持代码简洁并易于维护,从而减少了错误的可能性。可重用性:声明式 UI 定义可以跨组件和应用程序重用,从而进一步提高生产力。JSF 中的组件化和声明式方法的具体示例让我们使用 JSF 中的两个常见组件——`inputText` 和 `commandButton`——来说明组件化和声明式方法如何提高生产力。 xml 提高生产力的措施有哪些 Action="{user.submit}" value="Submit"> 在上面的示例中:组件化:`inputText` 组件用于收集用户的用户名。它可以在应用程序中被多次重用,从而节省时间和精力。声明式方法:`commandButton` 组件通过使用动作侦听器定义了当用户单击按钮时要执行的行为。这种基于 XML 的方法简化了 UI 的开发和维护。提高生产力的其他措施除了组件化和声明式方法之外,JSF 还提供了其他功能,可以帮助提高生产力:标签库:JSF 提供丰富的标签库,用于创建常见的 UI 组件,例如表单、按钮和导航菜单。面部消息:JSF 面部消息 API 允许开发人员轻松地向用户显示信息和错误消息。AJAX 支持:JSF 支持 AJAX(异步 JavaScript 和 XML),允许开发人员创建动态和交互式用户界面,而无需完全重新加载页面。结论JSF 的组件化和声明式方法是提高 Web 应用程序开发生产力的强大工具。通过将应用程序分解为可重用的组件,并使用 XML 来声明 UI,开发人员可以编写更少的代码,创建更复杂的用户界面,并提高应用程序的可维护性和可重用性。JSF 的其他功能,例如标签库、面部消息和 AJAX 支持,进一步提高了开发效率,使 JSF 成为构建高性能和用户友好的 Web 应用程序的理想选择。
JSF的组件化和声明式方法可以提高Web应用程序的开发效率

C语言和C++的区别

C语言与C++的区别有很多,下面是简要概述:

1、面向不同

C语言是面向过程的,

C++是面向对象的。

函数库

C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;

C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。 但你也可能单独调用API。

3、结构概念不同

C言中结构只有成员变量,而没成员方法,C语而在但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;

提高生产力

C++中结构中,它可以有自己的成员变量和成员函数。

4、写作数量不同

C语言可以写很多方面的程序,

C++可以写得更多更好,C++可以写基于DOS的程序,写DLL,写控件,写系统。

5、组织不同

C语言对程序的文件的组织是松散的,几乎是全要程序处理;

C++对文件的组织是以工程,各文件分类明确。

react入门之react基础

React入门基础概览

React是一个强大的JavaScript库,专用于构建用户界面。 其核心理念是利用组件化开发,以声明式的方式管理UI状态,构建高效、响应的应用程序。 通过组件,开发人员可以轻松构建并维护复杂的前端项目,只更新必要的部分,提高性能。

安装React脚手架后,你会看到一个基础目录结构,其中的文件是项目起点,它使用jsx语法,允许在JavaScript中嵌入HTML。 通过元素渲染,React识别构成应用的最小单元——元素,只更新有变化的部分。

在处理大量代码时,组件化至关重要。 函数式声明和类声明是创建组件的两种方式。 组件复用是提高开发效率的关键,通过给每个可重复使用的元素赋予唯一key。

状态管理和组件通信是React的核心。 子组件与父组件的值传递,通常通过定义方法和调用父组件函数实现。 同时,理解状态的改变和this指向处理,特别是setState方法的异步性质,是必要的。

React组件的生命周期管理也很重要,包括组件挂载、更新和卸载阶段。 render方法是必须实现的,而状态变化会触发组件更新的生命周期流程。

对于表单,React区分了受控组件(状态驱动)和非受控组件(手动更新)。 受控组件确保数据流单向,提高数据准确性。

jsf和jsp哪个适合大规模web运用

JSF和JSP是一对新的搭档。 JSP是用于后台的逻辑处理的技术,而JSF恰恰相反,是使开发人员能够快速的开发基于 Java 的 Web 应用程序的技术,是一种表现层技术。 目前,JSF1.2已经正式作为一个标准加入了Java EE 5中。 作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。 这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTABLE 这样的表格组件, Tree 这样的树形组件等等。 作为一种标准的技术,JSF还得到了相当多工具提供商的支持。 同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。 另外我们也有一些很优秀的商业开发工具可共选择,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 这样的基于 Eclipse 的插件开发工具,为现在广大的 Eclipse 用户带来了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不错的支持 JSF 可视化开发的商业开发工具。 JSF和传统的Web技术有着本质上的差别,在传统的Web技术需要用户自己对浏览器请求进行捕捉,保存客户端状态,并且手工控制着页面的转向,等等。 而JSF的出现,无疑给我们带来了巨大的便利,JSF 提供了事件驱动的页面导航模型,该模型使应用程序开发人员能够设计应用程序的页面流。 与 Struts 的方式向类似的是,所有的页面流信息都定义在 JSF 配置 XML 文件 () 中,而非硬编码在应用程序中。 这很大程度简化了开发人员开发难度,简化了应用程序的开发。 同时JSF也是一种遵循模型-视图-控制器 (MVC) 模式的框架。 实现了视图代码(View)与应用逻辑(Model)的完全分离,使得使用 JSF 技术的应用程序能够很好的实现页面与代码的分离。 所有对 JSF 页面的请求都会通过一个前端控制器 (FacesServlet) 处理,系统自动处理用户的请求,并将结果返回给用户。 这和传统的 MVC 框架并没有太大的区别。 在JSF中不仅使用了 POJO 技术,而且还使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。 同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。

关于Spring Framework和Spring

Spring Framework是一个全面的企业级Java开发框架,提供广泛功能,包括依赖注入(DI)、面向切面编程(AOP)、数据访问、事务管理、模型视图控制(MVC)等,简化企业级Java开发,提高开发效率,使代码更加模块化、可维护和可扩展。 Spring MVC是Spring Framework负责处理Web请求和响应的模块,基于MVC模式,将应用程序划分为模型、视图和控制器三个核心组件。 Spring MVC工作流程包括:使用Spring和Spring MVC时,搭建Spring项目、编写业务逻辑和数据访问层、创建Spring MVC控制器、视图和模板引擎配置、处理静态资源和前端技术、测试和调试、安全性和其他特性。 IoC容器负责对象生命周期管理,Spring MVC提供基于注解的方式处理Web请求和响应。 AOP允许将横切关注点从主要业务逻辑中分离,Spring AOP提供声明式和编程式两种方式。 Spring支持JDBC和ORM框架集成,使用声明式事务管理简化事务处理。 通过@Transactional注解声明式管理事务。 Spring MVC提供简单的控制器示例,用于处理用户请求和响应。 使用Spring和Spring MVC时,搭建项目、编写业务逻辑、创建控制器、配置视图、处理静态资源、编写测试和调试代码、考虑安全性。 Spring Framework的模块包括IoC容器、AOP、数据访问、事务管理、Spring MVC等,通过这些功能,Spring简化了企业级Java开发,提高了效率和代码质量。 Spring MVC作为Spring Framework的一部分,负责Web请求和响应处理,基于MVC模式,划分模型、视图和控制器,实现组件化开发。 Spring的事务管理支持声明式和编程式,使用@Transactional注解实现声明式事务管理。 Spring支持JDBC和ORM框架集成,声明式事务管理简化了事务处理。 Spring MVC提供基于注解的Web请求处理方式,实现简单控制器示例,处理用户请求和响应。 搭建Spring项目,编写业务逻辑和数据访问层,创建Spring MVC控制器,配置视图和模板引擎,处理静态资源和前端技术,编写测试和调试代码,考虑安全性。 Spring Framework和Spring MVC共同提供全面的企业级Java开发框架,简化开发流程,提高开发效率,确保代码质量,支持多种功能模块和集成技术,适用于复杂应用开发。

JSP和JSF合并打造完美Web应用

Java在最近几年逐渐升温 随着Java SE 和Java SE 的推出 Java的未来更显得无比辉煌 但以Java为基础的JSP在Java SE 推出之前却一直抬不起头来 这最重要的原因就是JSP虽然功能十分强大 但最大的优点也是它的最大缺点 功能强大就意味着复杂 尤其是设计前端界面的可视化工具不多 也不够强大 因此 设计JSP页面就变得十分复杂和繁琐 不过 在Java SE 推出的同时 Sun为了简化JSP的开发难度 推出了新的JavaServer Faces(简称JSF)规范 从而使JSP走上了康庄大道

一 什么是JSF

JSF和JSP是一对新的搭档 JSP是用于后台的逻辑处理的技术 而JSF恰恰相反 是使开发人员能够快速的开发基于 Java 的 Web 应用程序的技术 是一种表现层技术 目前 JSF 已经正式作为一个标准加入了Java EE 中

作为一种高度组件化的技术 开发人员可以在一些开发工具的支持下 实现拖拉式编辑操作 用户只需要简单的将 JSF 组件拖到页面上 就可以很容易的进行 Web 开发了 这是其作为一种组件化的技术所具有的最大好处 我们能用的组件不光是一些比较简单的输入框之类 还有更多复杂的组件可以使用的 比如%> <> <head> <meta HTTP EQUIV=Content Type CONTENT=text/;CHARSET=GB > <title>第一个JSF程序</title> </head> <body><f:view><h:form><h:outputText value=请输入一个数字 /><h:inputText value=#{simple longValue}> <f:validateLongrange maximum= minimum= /></h:inputText><p/><h:mandButton value=提交 action=#{simple simpleActionMethod}/></h:form></f:view> </body> </>

在上面的代码中 我们可以了解到JSF是如何同JSP集成的 我们首先可以看到一个内核标签 view 然后是几个JSF组件 如form outputText inputText以及mandButton 这几个组件被放到form中从而开成了form中的一部分 在程序的最开始 必须使用import导入两个标签库 代码如下

<%@ taglib uri=%> <%@ taglib uri=%>

上面 行代码声明了JSP中要使用哪一个JSF标签库 内核库使用前缀(prefix)f声明 而HTML库使用前缀(prefix)h声明 这两个前缀并不是必须要使用 而只是一个建议 在程序中 内核库必须要使用 因为view在所有的JSF页中必须使用 而HTML标签在运行时将JSF标签转化为HTML组件 这个h前缀并不是必须的 而是JSF规范推荐使用的 这样 我们使我们的JSF程序更易读

<f:view> <h:form> <h:outputText value=请输入一个数字 /> <h:inputText value=#{simple longValue}> <f:validateLongrange maximum= minimum= /> </h:inputText> <p/> <h:mandButton value=提交 action=#{simple simpleActionMethod}/> </h:form> </f:view>

</f:view>标签预示著JSF的开始 而它的下一个标签form将建立一个HTML Form 而outputText标签相当于HTML中的label组件 inputText标签相当于HTML中的textField组件 而mandButton标签相当于HTML中的submit按钮 运行这个JSP程序 将得到如图 所显示效果

图 第一个JSF程序的运行结果

三 JSP如何响应JSF的请求

从上面的例子我们已经知道如何在JSP中使用JSF了 在这一部分让我们来看看在JSF是如何处理请求的

首先让我们来看一个例子 这个例子是将华氏度转换为摄氏度 当用户点击提交按钮时程序将进行转换

<%@ taglib uri=%> <%@ taglib uri=%> <> <head><meta HTTP EQUIV=Content Type CONTENT=text/;CHARSET=GB > <title>温度转换程序</title> </head> <body><f:view><h:form><div> <h:outputText value=请输入华氏温度 /> <span><h:inputText value=#{tc fahrenheitTemp}><f:validateDoublerange minimum= maximum= /><f:valuechangeListener type=tempconv page TCChangedListener/> </h:inputText> </span></div><div> <h:outputText value=摄氏温度 /> <span><h:outputText value=#{tc celsiusTemp}><f:convertNumber maxFractionDigits= type=number/> </h:outputText> </span></div><div> <h:mandButton value=转换 action=#{tc convert}> </h:mandButton></div></h:form></f:view> </body> </>

在程序的前两行是导入JSF核心库和HTML库 这个在前面已经讨论过 在这里不再详述

下面让我们来看看JSF标签是如何同后端进行交互的 由于我们是在JSP中使用JSF 因此 这个和正常的JSP没有什么区别 JSP实际上就是Servlet 在JSP第一次运行时由JSP编译器将 JSP文件编译成Servlet后再由Servlet调用 然后由Servlet来接收客户端传过来的数据流 但和一般的JSP程序不同的是 JSF标签是由JSF API负责调用的(这样可以做到逻辑层和表现层分离) 除此之外 它们和一般的JSP标签没有任何区别

当UIComponent标签收到doStartTag方法时 JSF将使用这些属性来设置标签的值 如本例中的inputText标签将按它的属性值来设置 下面是JSF的代码片段

<h:inputText value=#{tc fahrenheitTemp}><f:validateDoublerange minimum= maximum= /><f:valuechangeListener type=tempconv page TCChangedListener/> </h:inputText>

inputText标签根据相应的值设置了id和value的属性 在JSF中是通过setAttribute(String name Object value)设置每一个属性值的 但我们需要注意的是JSF标签可以指定相应的默认值 这有些类似java中的系统属性 如果你给了一个属性名子 那系统将返回这个属性的值 如果指定它的默认值 并且这个属性不存在的话 将返回这个默认值

接下来让我们来看看上面程序的最重要的部分 也就是UIInput组件的事件处理

<f:valuechangeListener type=tempconv page TCChangedListener/>

在JSF中事件处理是由valuechangeListener标签完成的 这个标签所表示的事件在文本框的值发生变化时引发事件 但有意思的是这个事件并不马上提交 而是要等到用户点击提交按钮后这个事件连同相应的数据才提交给后端 因此 这个事件请求也叫做预提交 最后 让我们看看UICommand的代码实现

<div><h:mandButton value=转换 action=#{tc convert}></h:mandButton> </div>

上面的代码将convert()方法和UICommand连接了起来 也就是说 点击提交按钮后 将执行convert()方法 在遇到view标签后 JSF程序结果 JSFAPI最后调用doEnd方法来结束JSF程序 JSF引擎在解析这段程序后 将相应的JSF标签转换为HTML组件

最后 让我们来看看JSP是如何响应JSF事件的 下面是一段响应JSF事件的Java代码

public class TCChangedListener implements ValueChangeListener {public TCChangedListener(){ super();}// 事件处理public void processValueChange(ValueChangeEvent event) throws AbortProcessingException{ UIComponent p = event getComponent(); Object value = event getNewValue(); if (null != value) {float curVal = ((Number) value) floatValue();Map values = p getAttributes();if (curVal < ){ values put(styleClass red);}else{ values put(styleClass black);} } }

lishixinzhi/Article/program/Java/JSP//

相关标签: 提高生产力的措施有哪些提高生产力JSF的组件化和声明式方法可以提高Web应用程序的开发效率

上一篇:可维护性JSF以清晰可维护的方式构建应用程

下一篇:可扩展的组件系统可扩展的组件是什么

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/d2aa42a8e63629c40290.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章
汇编语言新手入门指南 (汇编语言新手程序)

汇编语言新手入门指南 (汇编语言新手程序)

汇编语言是一种低级编程语言,它直接与计算机的处理器打交道,与高级编程语言不同,汇编语言不是面向人的,而是面向机器的,这意味着汇编语言程序员需要了解计算机的体系结构和指令集,汇编语言对于了解计算机体系结构和操作非常重要,它还可以用来编写高性能的代码,因为汇编程序可以完全控制处理器,汇编语言的基本概念寄存器,临时存储数据的内存位置,指令,...。

最新资讯 2024-09-27 16:41:38

OLEDBParameter 在 ADO.NET 中的故障排除指南:解决常见问题和错误 (OleDbParameter)

OLEDBParameter 在 ADO.NET 中的故障排除指南:解决常见问题和错误 (OleDbParameter)

简介本指南提供了用于解决使用OLEDBParameter类时遇到的常见问题和错误的故障排除技巧和最佳实践,常见问题和错误错误,参数名无效原因,参数名称为空或包含非法字符,解决方案,确保参数名称有效,并且不包含空格或其他非法字符,错误,参数类型无效原因,参数类型与命令中使用的类型不匹配,解决方案,验证参数类型与命令中使用的类型匹配,您可...。

最新资讯 2024-09-24 16:24:16

易读性:CSS 可以用于设置字体大小、颜色和行高,使文本更易于阅读。(易读性是什么意思)

易读性:CSS 可以用于设置字体大小、颜色和行高,使文本更易于阅读。(易读性是什么意思)

易读性对于任何网站或网页都至关重要,它有助于提高用户体验并确保您的内容易于理解和享受,CSS,层叠样式表,是一种强大工具,可用于控制网站的外观及其内容的显示方式,通过利用CSS,您可以调整字体大小、颜色和行高,从而创建更易于阅读的文本,字体大小字体大小是影响易读性的一个关键因素,字体太小会导致文本难以阅读,而字体太大又会让人眼花缭乱,...。

互联网资讯 2024-09-24 12:27:24

深入理解 winexec:在 Windows 编程中掌控外部进程 (深入理解windows)

深入理解 winexec:在 Windows 编程中掌控外部进程 (深入理解windows)

简介winexec是Windows操作系统中一个强大的API函数,允许程序启动和控制外部进程,它是一种低级函数,直接与操作系统交互,因此理解它的运作原理至关重要,本教程将深入探讨winexec的用法,包括其参数、返回值和注意事项,参数winexec函数需要两个参数,lpCmdLine,要启动的命令行字符串,它可以是任何有效的命令,包括...。

技术教程 2024-09-24 05:15:24

探索 Menustrip 的优势:提升应用程序可用性 (探索梦想)

探索 Menustrip 的优势:提升应用程序可用性 (探索梦想)

作为软件开发者,我们始终寻求方法来提高应用程序的可用性和用户体验,Menustrip控件是.NETFramework中的一个强大功能,它可以帮助我们实现这一目标,什么是Menustrip,Menustrip控件是一个菜单栏,它通常在应用程序窗口的顶部,它允许用户通过单击菜单项来访问应用程序的各种命令和功能,Menustrip的优势使用...。

最新资讯 2024-09-23 05:19:38

剖析 .NET 中的空字符串:string.empty 的内部机制 (剖析是什么意思)

剖析 .NET 中的空字符串:string.empty 的内部机制 (剖析是什么意思)

string.empty的概述在.NETFramework中,string.empty是一个表示空字符串的静态字段,它是一个不可变的字符串,长度为0,并且不包含任何字符,string.empty与C中的,空字符串文字,或VB.NET中的等效,string.empty的内部机制string.empty是一个静态字段,定义在System命...。

最新资讯 2024-09-16 18:58:02

Linux新手入门指南:一步步掌握Linux高效组织和查找文件 (linux新建文件夹命令)

Linux新手入门指南:一步步掌握Linux高效组织和查找文件 (linux新建文件夹命令)

li>,var,包含可变数据您可以按照此层次结构创建自己的文件夹以组织您的文件,结论通过遵循这些步骤,您可以更加高效地组织和查找Linux文件,如果您是Linux新手,这些命令将有助于您更轻松地适应Linux环境,...。

互联网资讯 2024-09-14 05:12:21

Java GUI 开发:使用 JavaFX 和 Swing 创建优雅的用户界面 (java官网)

Java GUI 开发:使用 JavaFX 和 Swing 创建优雅的用户界面 (java官网)

Java语言提供了强大的功能来开发图形用户界面,GUI,,可以使用JavaFX和Swing框架轻松创建优雅且响应迅速的应用程序,JavaFXJavaFX是一个基于SCENEGRAPH技术的现代GUI框架,它提供了一系列预先构建的控件,如按钮、文本字段、菜单和布局面板,从而简化了GUI开发,优点,高效且可扩展高度可定制和灵活支持硬件加速...。

最新资讯 2024-09-11 08:27:43

C语言最大公约数求解算法的全面解析 (c语言最大公约数和最小公倍数的求法)

C语言最大公约数求解算法的全面解析 (c语言最大公约数和最小公倍数的求法)

简介最大公约数,GCD,是两个或多个整数的最大公因子,最小公倍数,LCM,是这些整数的最小公倍数,在许多算法和数学问题中,求解GCD和LCM是至关重要的,本文将全面解析C语言中求解GCD的算法,欧几里得算法欧几里得算法是一种递归算法,用于求解两个非负整数的最大公约数,其核心思路是利用以下定理,定理,两个正整数a和b的最大公约数,gcd...。

本站公告 2024-09-11 05:24:09

正则表达式任意字符实战指南:应对复杂文本匹配挑战 (正则表达式任意字符怎么表示)

正则表达式任意字符实战指南:应对复杂文本匹配挑战 (正则表达式任意字符怎么表示)

在复杂文本处理中,经常需要匹配任意字符,以实现灵活和强大的文本匹配,正则表达式提供了两种任意字符匹配符号,点号,.,和中括号,[],本文将详细介绍这两种符号的用法,并提供丰富的实战示例,帮助您掌握任意字符匹配技巧,应对各种文本匹配挑战,1.点号,.,点号,.,是正则表达式中表示任意字符的单字符通配符,它可以匹配任何单个字符,包括字母...。

技术教程 2024-09-09 07:37:50

正则表达式中文应用:让数据处理变得轻松自在 (正则表达式中的.和.?的区别是什么?())

正则表达式中文应用:让数据处理变得轻松自在 (正则表达式中的.和.?的区别是什么?())

前言正则表达式是一种强大的文本匹配工具,在各种数据处理场景中都有广泛的应用,本文将重点介绍正则表达式的中文应用,帮助您轻松地处理中文数据,正则表达式中的.和.?在正则表达式中,和都是贪婪匹配模式,用于匹配任意数量的字符,它们之间存在一个关键的区别,尽可能贪婪地匹配字符,直到遇到换行符或字符串结束,非贪婪匹配,匹配尽可能少的字符,直...。

最新资讯 2024-09-07 13:59:53

灵异之地遇上公交车:北京公交车灵异事件的科学解释 (灵异之地遇上美人鱼)

灵异之地遇上公交车:北京公交车灵异事件的科学解释 (灵异之地遇上美人鱼)

北京的公交车线路众多,历史悠久,其中也不乏一些让人毛骨悚然的灵异传闻,这些传闻有的被人们津津乐道,有的却令人不寒而栗,那么,这些灵异事件背后究竟隐藏着怎样的真相,我们从科学的角度来探讨一下,案例一,深夜公车上的红衣女鬼据传闻,某公交线路的司机在深夜值班时,经常能看到一名身穿红衣的女子在公车后方徘徊,这名女子披头散发,面目狰狞,一双血红...。

互联网资讯 2024-09-03 01:22:45