PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

Studs MVC Framework-----PHP的Struts1.X实现

原创
2016-06-08 17:31:27 853浏览

Jakarta Struts结构移植过来的PHP开发框架,使用面向对象的开发结构和API,模拟了一个HTTP Servlet容器和使用了PHP服务页面引擎技术。

下载地址:http://mojavelinux.com/projects/studs/

文件结构如下:

如上图,WEB-INF中的文件都是Studs框架的核心文件(尤其是lib和tld下的文件),其中:

1.messages.properties文件:



welcome.title=Studs :: Welcome
welcome.heading
=Welcome to Studs!
welcome.message
=The application has been successfully installed!

pageviews.message
=This page has been viewed {0} times.

2.struts-config.xml文件:



xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
>

struts-config>



form-beans>

form-beans>

global-exceptions>

global-exceptions>

global-forwards>

forward name="welcome" path="/welcome.do"/>
global-forwards>

action-mappings>

action path="/welcome" forward="/pages/welcome.psp"/>
action path="/example" forward="/pages/example.psp"/>


action-mappings>

controller locale="false" inputForward="true"/>

message-resources parameter="/WEB-INF/messages.properties"/>

struts-config>

3.web.xml文件:



xml version="1.0" encoding="UTF-8"?>
DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
web-app>

display-name>Studs Basic Applicationdisplay-name>
description>A bare-bones foundation for creating a web application based on the Studs MVC Framework+description>
context-param>

param-name>controlAllResourcesparam-name>
param-value>falseparam-value>
context-param>


servlet>
servlet-name>defaultservlet-name>
servlet-class>stratus.servlets.DefaultServletservlet-class>
init-param>
param-name>listingsparam-name>
param-value>trueparam-value>
init-param>
load-on-startup>1load-on-startup>
servlet>
servlet>
servlet-name>phaseservlet-name>
servlet-class>phase.servlet.PhaseServletservlet-class>
init-param>
param-name>scratchdirparam-name>
param-value>/WEB-INF/workparam-value>
init-param>
init-param>
param-name>tldresourcedirparam-name>
param-value>/WEB-INF/tldparam-value>
init-param>
init-param>
param-name>ignoreELparam-name>
param-value>falseparam-value>
init-param>
load-on-startup>2load-on-startup>
servlet>
servlet>
servlet-name>actionservlet-name>
servlet-class>studs.action.ActionServletservlet-class>
init-param>
param-name>configparam-name>
param-value>/WEB-INF/struts-config.xmlparam-value>
init-param>
init-param>
param-name>validatingparam-name>
param-value>trueparam-value>
init-param>
load-on-startup>3load-on-startup>
servlet>


servlet-mapping>
servlet-name>defaultservlet-name>
url-pattern>/url-pattern>
servlet-mapping>
servlet-mapping>
servlet-name>phaseservlet-name>
url-pattern>*.pspurl-pattern>
servlet-mapping>
servlet-mapping>
servlet-name>actionservlet-name>
url-pattern>*.dourl-pattern>
servlet-mapping>


mime-mapping>
extension>htmlextension>
mime-type>text/htmlmime-type>
mime-mapping>
mime-mapping>
extension>cssextension>
mime-type>text/cssmime-type>
mime-mapping>
mime-mapping>
extension>jsextension>
mime-type>text/javascriptmime-type>
mime-mapping>
mime-mapping>
extension>pngextension>
mime-type>image/pngmime-type>
mime-mapping>
mime-mapping>
extension>jpgextension>
mime-type>image/jpegmime-type>
mime-mapping>
mime-mapping>
extension>jpegextension>
mime-type>image/jpegmime-type>
mime-mapping>
mime-mapping>
extension>gifextension>
mime-type>image/gifmime-type>
mime-mapping>


welcome-file-list>
welcome-file>index.pspwelcome-file>
welcome-file-list>

web-app>

4.文件build.xml:



xml version="1.0"?>
project name="Studs Basic" basedir="../.." default="package">
property file="../../build.properties" />

target name="package" depends="prepare">
mkdir dir="../../${release.dir}/${project.release.version}"/>
tar destfile="../../${release.dir}/${project.release.version}/studs-basic-${project.release.version}.tar.gz" compression="gzip">
tarfileset dir="." prefix="studs-basic" defaultexcludes="yes">
exclude name="classes/build.xml"/>
exclude name="**/TODO"/>
exclude name="**/NOTES"/>
tarfileset>
tar>
target>

target name="clean">

symlink action="delete" link="${basedir}/WEB-INF/lib" failonerror="no"/>
symlink action="delete" link="${basedir}/WEB-INF/tld" failonerror="no"/>

delete includeemptydirs="yes" failonerror="no">
fileset dir="WEB-INF/work">
include name="**"/>
fileset>
fileset dir="WEB-INF/lib">
include name="**"/>
fileset>
fileset dir="WEB-INF/tld">
include name="**"/>
fileset>
delete>
target>

target name="prepare" depends="clean">

mkdir dir="WEB-INF/work"/>
chmod dir="WEB-INF/work" perm="0777" type="dir"/>

mkdir dir="WEB-INF/lib"/>
copy todir="WEB-INF/lib">
fileset dir="../../src">
include name="**"/>
fileset>
copy>

mkdir dir="WEB-INF/tld"/>
copy todir="WEB-INF/tld">
fileset dir="../../conf/tld">
include name="*.tld"/>
fileset>
copy>

copy todir=".">
fileset dir="../../conf">
include name="index.php"/>
include name=".htaccess"/>
fileset>
copy>
target>
project>

5.logging.properties文件:



# == Setup log appenders ==
#logging.rootLogger
=DEBUG, file
#logging.appender.file
=horizon.util.logging.FileLogAppender
#logging.appender.file.file
=/tmp/studs-basic.log
#
== Specific logging per category ==
#logging.logger.
[partial package or classname]=DEBUG

其他文件基本上都可以在框架源代码中找到。

页面文件如下:

1.index.php:



php
error_reporting(E_ALL);
ini_set(''include_path'', ''WEB-INF/lib'' . (DIRECTORY_SEPARATOR == ''/'' ? '':'' : '';'') . ''WEB-INF/classes'');
umask(0002);

require_once ''horizon/init.php'';

import(
''stratus.connector.HttpProcessor'');
import(
''stratus.config.ContextConfig'');

$config = & new ContextConfig(dirname(__FILE__));
$processor = & new HttpProcessor($config->getContext());
$processor->run();
?>

2.index.psp:



声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。