struct2&Thonkphp//技术分享

Struct 2

Struct 2 是一个基于MVC(模型,视图,控制) 架构的这样的一个框架,很好的解决了后端和前端分离的问题。

Struct 2 执行的一般流程图:

用户访问的是控制器,然后控制器在操纵数据库,在将结果渲染到view(视图上),这数据的渲染的方式有很多中,可以用xml,json等数据传输格式,或者vue.js之类的外部框架

Struct 2 这个框架解决了一个路由(url)的问题,就是用户访问url,后台是用什么方式操作用户访问的路由。

我们先看下struct.xml和web.xml的配置

用户在访问http://serverName:端口号/项目名称/命名空间/对应的控制器 就可以访问到对应的控制器,而控制的就可以实现一系列的操作。

举个栗子:

用上面的配置,做一个简单的例子。

我们访问一个http://localhost:700/test/a/aa的url,这个url会被

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

这个类拦截,并且扫描对应的类中的方法,例如我们这个例子,就是扫描命名空间(namespace)为“/a”下的的aa类中的other方法,这个方法返回一个"123”的字符串,对应的就渲染到/a/index.jsp这个视图。

它通过java的拦截器把用户访问的url拦截下来,然后在扫描配置文件指定的类的方法,通过类返回的字符串来处理用户的视图,这一系列的操作都是通过写struct.xml的配置文件来实现的,struct.xml这个配置文件很好的放映的用户访问的url对应的java类,但是也引入一个问题,就是要写配置,每一个视图,每一个控制器都要写配置。

这样就造成了程序员不是在开发程序,而是在写配置。这就需要一些更新型的框架例如spring。

Think php

Think php 是国人开发的一个轻量级的一个web框架,它也是基于MVC这种架构,Think php是国人开发的所以文档也是写的非常的好,比起那些老外开发的框架写的文档(这里指的是翻译过的)是清晰的多。

我们先来看看think php 的目录结构

Think php整个程序只有一个入口(public/index.php),也就是整个程序只能从这里进去,访问其他地方都是非法的,但是这个入口文件可以通过一个配置文件将它隐藏

Think php用户的访问方式是http://serverName:端口号/public/index.php/模块名/控制器名/操作名 这种形式去访问,但是与struct 2不同的是这种访问形式不需要写配置,而是通过一种协定来解决用户访问url,程序如何找到对应的控制器和视图的的方法,这个就是路由问题,其协定是可以自定义的

Think php是基于命名空间的操作方式例如:

举个栗子

这个程序我们将访问index模块下的index控制器中的index操作也就是http://serverName:端口号/项目名称/public/index.php/index/index/index

由于我们重写了apache的配置可以隐藏入口文件,所以url变成http://serverName:端口号 /项目名称/index/index/index

再看看视图文件:

在index模块下的view中的index控制器中的index.html

这个将会显示两个从数据库查询出来的两个数据一个是id另一个是username

可以看到输入了一个数据库中字段是username的值

Think php 还集成了很多东西,比如发一个邮件、一个验证码图片,分页等等只需要短短几行的代码就可以实现

Think php还集成了很多的操作类跟助手函数例如操作数据库的函数db()和Db()类,等等的还有很多。

知之Know

微信号:Zhi_Know

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180331G0XKG200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券