首页 > php代码 > Studs MVC Framework-----PHP的Struts1.X实现

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

     

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 <strong>{0}</strong> 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"
>
<!--
     This is a basic Studs/Struts configuration file with an example
     welcome action/page and other commented sample elements.
-->
<struts-config>

    
<!-- example configuration of a database connection
    <data-sources>
        <data-source type="horizon.sql.BasicDataSource">
            <set-property
                property="description"
                value="Primary data source for localhost database"/>
            <set-property
                property="driverClassName"
                value="horizon.sql.drivers.MySQLDriver"/>
            <set-property
                property="username"
                value="user"/>
            <set-property
                property="password"
                value="secret"/>
            <set-property
                property="url"
                value="mysql://localhost/dbname"/>
        </data-source>
    </data-sources>
    
-->

    
<form-beans>
        
<!-- sample form bean descriptor for an ActionForm
        <form-bean
            name="inputForm"
            type="app.InputForm"/>
        
-->
    
</form-beans>

    
<global-exceptions>
        
<!-- sample exception handler
        <exception
            key="expired.password"
            type="app.ExpiredPasswordException"
            path="/changePassword.jsp"/>
        
-->
    
</global-exceptions>

    
<global-forwards>
        
<!-- Default forward to "welcome" action -->
        
<forward name="welcome" path="/welcome.do"/>
    
</global-forwards>

    
<action-mappings>
        
<!-- Default "welcome" action -->
        
<action path="/welcome" forward="/pages/welcome.psp"/>
        
<action path="/example" forward="/pages/example.psp"/>

        
<!-- sample input and input submit actions

        <action
            path="/Input"
            type="org.apache.struts.actions.ForwardAction"
            parameter="/pages/Input.jsp"/>

        <action
            path="/InputSubmit"
            type="app.InputAction"
            name="inputForm"
            scope="request"
            validate="true"
            input="/pages/Input.jsp"/>

            <action
                path="/edit*"
                type="app.Edit{1}Action"
                name="inputForm"
                scope="request"
                validate="true"
                input="/pages/Edit{1}.jsp"/>

            
-->
    
</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 Application</display-name>
    
<description>A bare-bones foundation for creating a web application based on the Studs MVC Framework+</description>
    
<context-param>
        
<!-- if controlAllResources is set, all files should be handled by the stratus
             container, including all non-php/html files 
-->
        
<param-name>controlAllResources</param-name>
        
<param-value>false</param-value>
    
</context-param>

    
<!-- Servlet Definitions -->
    
<servlet>
        
<servlet-name>default</servlet-name>
        
<servlet-class>stratus.servlets.DefaultServlet</servlet-class>
        
<init-param>
            
<param-name>listings</param-name>
            
<param-value>true</param-value>
        
</init-param>
        
<load-on-startup>1</load-on-startup>
    
</servlet>
    
<servlet>
        
<servlet-name>phase</servlet-name>
        
<servlet-class>phase.servlet.PhaseServlet</servlet-class>
        
<init-param>
            
<param-name>scratchdir</param-name>
            
<param-value>/WEB-INF/work</param-value>
        
</init-param>
        
<init-param>
            
<param-name>tldresourcedir</param-name>
            
<param-value>/WEB-INF/tld</param-value>
        
</init-param>
        
<init-param>
            
<param-name>ignoreEL</param-name>
            
<param-value>false</param-value>
        
</init-param>
        
<load-on-startup>2</load-on-startup>
    
</servlet>
    
<servlet>
        
<servlet-name>action</servlet-name>
        
<servlet-class>studs.action.ActionServlet</servlet-class>
        
<init-param>
            
<param-name>config</param-name>
            
<param-value>/WEB-INF/struts-config.xml</param-value>
        
</init-param>
        
<init-param>
            
<param-name>validating</param-name>
            
<param-value>true</param-value>
        
</init-param>
        
<load-on-startup>3</load-on-startup>
    
</servlet>

    
<!-- Servlet Mappings -->
    
<servlet-mapping>
        
<servlet-name>default</servlet-name>
        
<url-pattern>/</url-pattern>
    
</servlet-mapping>
    
<servlet-mapping>
        
<servlet-name>phase</servlet-name>
        
<url-pattern>*.psp</url-pattern>
    
</servlet-mapping>
    
<servlet-mapping>
        
<servlet-name>action</servlet-name>
        
<url-pattern>*.do</url-pattern>
    
</servlet-mapping>

    
<!-- Mime Type Mappings -->
    
<mime-mapping>
        
<extension>html</extension>
        
<mime-type>text/html</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>css</extension>
        
<mime-type>text/css</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>js</extension>
        
<mime-type>text/javascript</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>png</extension>
        
<mime-type>image/png</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>jpg</extension>
        
<mime-type>image/jpeg</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>jpeg</extension>
        
<mime-type>image/jpeg</mime-type>
    
</mime-mapping>
    
<mime-mapping>
        
<extension>gif</extension>
        
<mime-type>image/gif</mime-type>
    
</mime-mapping>

    
<!-- Default Welcome File List -->
    
<welcome-file-list>
        
<welcome-file>index.psp</welcome-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">
        
<!-- make sure to break symlinks -->
        
<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">
        
<!-- create work directory -->
        
<mkdir dir="WEB-INF/work"/>
        
<chmod dir="WEB-INF/work" perm="0777" type="dir"/>
        
<!-- create lib directory and copy framework libraries -->
        
<mkdir dir="WEB-INF/lib"/>
        
<copy todir="WEB-INF/lib">
            
<fileset dir="../../src">
                
<include name="**"/>
            
</fileset>
        
</copy>
        
<!-- create tld directory and copy known tlds -->
        
<mkdir dir="WEB-INF/tld"/>
        
<copy todir="WEB-INF/tld">
            
<fileset dir="../../conf/tld">
                
<include name="*.tld"/>
            
</fileset>
        
</copy>
        
<!-- copy over the controller and server conf file -->
        
<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();
?>


本文地址:http://www.phprm.com/code/a3f8984a355f65c2a7db995c38d1f245.html

转载随意,但请附上文章地址:-)

标签:none

发表留言