最近很无聊,面临失业的危险。命运真如吗?
抽时间巩固了一下我用过的框架,也学习了下struts 2.0,始终让我不是很满意,页面总觉得太乱,总觉得框架没起什么作用。另外还下载了云网论坛(cwbbs)来研究了,总体还不错,就是不太好维护。趁着没事,我决定自己加入框架,界面用他的,其他我自己重写。唉,我这个人做事总想做到我认为可以了。
废话少说了,先用PD结合他的数据库做了下数据库设计,然后建数据库,建工程,写代码……
做了几天,确实改动太大了,需要写很多逻辑代码,想了一下,还是不用开源框架,不如自己来实现框架的功能呢。于是jxml出炉了,完全的MVC模式框架,支持展现xml与xslt的动态解析,兼容其它hibernate,spring等框架,兼容jsp页面的展现,建议与velocity搭配使用,这样页面就会干净起来,实现真正的页面与逻辑分离。
部分代码如下:
1.Action:
LoginAction:
package test.action;
import com.jxml.action.Action;
/**
* @author lfm
*
*/
public class LoginAction extends Action {
private String account;
private String password;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
*
*/
public String execute() throws Exception {
if (account == null || password == null)
FORWARD = "fail";
else
FORWARD = "success";
return null;
}
}
MenuAction:
import com.jxml.action.Action;
/**
* @author lfm
*
*/
public class MenuAction extends Action {
public String execute() throws Exception {
return"<item name="ROOT" show="<a href='#' target='null'>ROOT</a>"><item name="快速通道" show="<a href='#' target='null'>快速通道</a>"><item name="浏览网站" show="<a href='index.jsp' target='_blank'>浏览网站</a>"></item><item name="栏目管理" show="<a href='null' target='mainFrame'>栏目管理</a>"></item></item><item name="全部栏目" show="<a href='#' target='null'>全部栏目</a>"></item><item name="用户及用户组" show="<a href='#' target='null'>用户及用户组</a>"><item name="用户管理" show="<a href='user.jx' target='mainFrame'>用户管理</a>"></item><item name="用户组管理" show="<a href='group.jx' target='mainFrame'>用户组管理</a>"></item><item name="权限管理" show="<a href='priv.jx' target='mainFrame'>权限管理</a>"></item></item><item name="模板管理" show="<a href='#' target='null'>模板管理</a>"><item name="文章模板" show="<a href='null' target='mainFrame'>文章模板</a>"></item></item><item name="数据管理" show="<a href='#' target='null'>数据管理</a>"><item name="备份CMS数据" show="<a href='null' target='mainFrame'>备份CMS数据</a>"></item></item><item name="系统信息" show="<a href='#' target='null'>系统信息</a>"></item><item name="系统信息" show="<a href='#' target='null'>系统信息</a>"><item name="CMS配置" show="<a href='null' target='mainFrame'>CMS配置</a>"></item><item name="系统配置" show="<a href='null' target='mainFrame'>系统配置</a>"></item><item name="系统日志" show="<a href='null' target='mainFrame'>系统日志</a>"></item></item><item name="其他" show="<a href='#' target='null'>其他</a>"><item name="发布统计" show="<a href='null' target='mainFrame'>发布统计</a>"></item></item></item>";
}
}
jxml.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- jxml config file -->
<jxml>
<action name="welcome">
<forward name="success" path="/index.jsp"/>
</action>
<action name="login" class="test.action.LoginAction">
<forward name="success" path="/success.jsp"/>
<forward name="fail" path="/index.jsp" />
</action>
<action name="menu" class="com.menu.MenuAction" xslt="/menu.xsl" />
</jxml>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.3"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_3.xsd">
<servlet>
<servlet-name>jxml</servlet-name>
<servlet-class>
com.jxml.dispatcher.ActionDispatcher
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jxml</servlet-name>
<url-pattern>*.jx</url-pattern>
</servlet-mapping>
</web-app>
index.jsp:
<form name="loginForm" action="login.jx" method="POST">
<input type="text" name="account" >
<input type="password" name="password">
<input type="submit" value="Login">
</form>
success.jsp:
<iframe src="menu.jx" border="0"></iframe>
<b>登陆成功</b>
menu.xsl:
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes">
<xsl:template match="/">
<html>
<head>
<title>菜单</title>
<LINK href="images/default.css" _fcksavedurl=""images/default.css"" _fcksavedurl=""images/default.css"" _fcksavedurl=""images/default.css"" _fcksavedurl=""images/default.css"" _fcksavedurl=""images/default.css"" type="text/css"
rel="stylesheet" />
<STYLE type="text/css">
.ttl { CURSOR: hand; COLOR: #ffffff; PADDING-TOP:
4px }
</STYLE>
<SCRIPT language="javascript">
<xsl:comment>
function showHide(obj){ var oStyle =
obj.parentElement.parentElement.parentElement.rows[1].style;
oStyle.display == "none" ? oStyle.display = "block"
: oStyle.display = "none"; }
</xsl:comment>
</SCRIPT>
</head>
<body bgColor="#9aadcd" leftMargin="0" topMargin="0" oncontextmenu="return false;" onselectstart="return false;" ondragshart="return false;">
<br />
<xsl:for-each select="item/item">
<TABLE cellSpacing="0" cellPadding="0" width="159"
align="center" border="0">
<TBODY>
<TR>
<TD width="23">
<IMG height="25"
src="images/box_topleft.gif" width="23" />
</TD>
<TD class="ttl" onclick="showHide(this)"
width="129" background="images/box_topbg.gif">
<xsl:value-of select="@name" />
</TD>
<TD width="7">
<IMG height="25"
src="images/box_topright.gif" width="7" />
</TD>
</TR>
<TR style="display: none;">
<TD
style="PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px"
background="images/box_bg.gif" colSpan="3">
<TABLE width="100%">
<TBODY>
<xsl:for-each
select="./item">
<TR>
<TD>
<IMG height="7"
hspace="5" src="images/arrow.gif" width="5"
align="absMiddle" />
<xsl:value-of select="@show" disable-output-escaping="yes"/>
</TD>
</TR>
</xsl:for-each>
</TBODY>
</TABLE>
</TD>
</TR>
<TR>
<TD colSpan="3">
<IMG height="10"
src="images/box_bottom.gif" width="159" />
</TD>
</TR>
</TBODY>
</TABLE>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
启动tomcat 5.5,访问http://localhost:8080/cwbbs/welcome.jx
分享到:
相关推荐
4. **高可扩展性**:随着应用需求的增长,框架的可扩展性变得至关重要。高可扩展性意味着可以方便地添加新功能,更新现有模块,或者与其他第三方库集成。Hybridge-master可能提供了灵活的插件系统和模块化设计,以...
本源码是基于Java开发的SOFARPC高可扩展性高性能Java RPC框架设计,包含1466个文件,其中包括1202个.java文件,103个.xml文件,29个.json文件,以及12个.Filter文件,11个.Registry文件,8个.md文件,7个....
网易同事 周永昶 基于node.js的高可扩展游戏服务器框架 设计与实现 Node.js与游戏服务器; 游戏服务器框架的可扩展性和设计,以及pomelo的框架
本文将介绍提高 Java 多线程应用性能的一般步骤和一些简单规则,使开发人员能够获得具有高性能的可扩展的应用程序。 高可扩展应用的瓶颈 多核时代的到来,软件的性能调优变得越来越复杂。多线程程序想要达到高性能...
在这个Java即时通讯框架中,分布式可能意味着用户可以跨多个服务器进行通信,提高系统的可扩展性和容错性。 4. **嵌入式**: 嵌入式通常指的是将软件系统整合到硬件设备中。在这个上下文中,可能是指该框架可以轻松...
云原生PaaS平台通常具备高度的可扩展性、灵活性和自动化能力,能够支持微服务架构和容器化技术,以及DevOps文化和敏捷开发流程。本文将从构建高可扩展的云原生PaaS平台的角度,探讨相关的技术知识点和架构设计。 ...
为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。 功能特性 透明化、高性能的远程...
Caffe-MPI是一款高性能高可扩展的深度学习计算框架,是由浪潮的HPC应用开发团队进行开发。Caffe-MPI是一款分布式集群版本,目前支持GPU集群并行计算,该版本在伯克利单机单卡GPU版本上进行开发,
griddb_nosql, 高性能,高可扩展性,高可靠性的大型数据数据库 概述GridDB有一个 KVS ( key-value 存储) -type数据模型,它适用于存储在timeseries中的传感器数据。 它是一个数据库,可以根据传感器的数量轻松地缩小...
SSM框架是Java Web开发中常用的三大组件——Spring、SpringMVC和MyBatis的集成框架,它们共同构建了一个高效、灵活的后端开发环境。...理解并熟练运用这三个框架,将有助于开发者构建高质量、高可扩展性的应用程序。
为了应对这种挑战,使用高效的负载均衡技术来提升服务的可扩展性和可靠性变得尤为重要。在众多方案中,Linux Virtual Server (LVS) 集群以其强大的功能和灵活性脱颖而出。本章节将详细介绍LVS的基本原理、关键技术...
基于Netty、SpingBoot开发的分布式、嵌入式、组件化、高度自定义、高可扩展的Java即时通讯框架详细文档+全部资料+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95...
### 高效ArcGIS Engine开发:设计高可扩展的ArcGIS Engine应用 #### ArcGIS Engine开发综述 ArcGIS Engine是一种基于组件的技术,利用COM(Component Object Model)封装了一组高级接口,这些接口构建在ArcObjects...
WebAdmin是一个用C语言设计的易用的图形用户接口开发框架,C语言的高可移植性使得WebAdmin可以广泛应用于包括Linux、Unix、Windows及各种嵌入式操作系统中,编译WebAdmin系统除Libxml2库处不需要额外的C函数库支持...
环云商城项目不仅仅是一个普通的电商系统,而是通过采用最新的云计算技术和微服务架构,成为了一个高效、稳定且可扩展的电子商务平台。它的成功落地将为其他电商平台的构建提供宝贵的经验和参考。
高可扩展性数据库架构设计方法
在构建基于AWS基础设施的高可用、高可扩展的系统时,关键在于利用AWS的各种服务来实现系统的弹性和稳定性。以下是一些重要的知识点: 1. **AWS服务应用**: - **Auto Scaling Group (ASG)**:ASG是AWS提供的一种...
- **高可复用性**:组件可复用,加快测试速度,降低维护成本。 - **测试效率提升**:脚本复用使得自动化测试开发更高效。 3. **BPT简易流程** 整个流程包括两个阶段:业务测试人员定义组件并组合成流程;QTP专家...
CN基于golang构建高可扩展的云原生PaaS平台202138页.pdf