从web后端编程的发展来看经历了几个阶段:
1 CGI编程
2 由于编写CGI不方便,所以形成了很多脚本的开发,例如asp/jsp/php
3 功能强化,形成asp+COM,jsp+bean
4 进一步升级采用框架,后台代码形成bean+配置(spring的核心)
本人觉得更高级的阶段应该是抛弃spring,返朴归真,后台代码bean+java脚本。
spring的核心思想是在xml中配置url到bean的映射,再根据xml的配置生成java bean并调用。好处是实现所谓的控制反转(也叫依赖注入),配置编程。由此带来的问题是配置很随意,逻辑不好理解,生生把整体后端处理流程割成了小块,并隐藏了小块间的联系,对新人来说难以理解,对高手来说太零碎。特别是3.0之后的注释代替配置,虽然减少了xml的量,但对于读代码的人来说简直是灾难,简简单单的url映射,要翻遍所有的bean代码才知道在哪里映射!
既然spring的核心就是通过反射从xml配置生成java类,达到配置灵活的特点,但配置文件中体现不出程序运行流程,java本身就是动态语言,为什么不直接使用java脚本来实现呢?
用java代码代替框架+xml,用java代码的解释执行代替spring这种过度设计的垃圾框架。而且可以将java代码类编译成class载入serverlet直接运行,速度更快。
本人已经用这种方法实现了简单的web项目,深深感觉到spring这方面的愚蠢,是该抛弃的时候了!
if (url_key == "A_B")
{
// 处理前
Request request = new Request_A_B(); // Request是接口,Request_A_B是子类,类似Structs的Action
request.process(url, pos); // 通过反射对字段赋值
// 处理中
Handle handle = new Handle_A_B(); // Handle是接口,HandleAB是子类
String s = handle.process(request); // 输出后续的jsp文件名
// 处理后
Response response = new Response(); // 非特例
response.process(s + ".jsp", handle); // 模板替换
return response.ToHtml();
}
进一步
if (url_key.at(0) = 'A')
{
// 处理前
Request request = (Request)Class.forName("Request_" + url_key).newInstance(); // Request是接口,RequestAB是子类,类似Structs的Action
request.process(url, pos); // 通过反射对字段赋值
// 处理中
Handle handle = (Handle)Class.forName("Handle_" + url_key).newInstance(); // Handle是接口,HandleAB是子类
String s = handle.process(request); // 输出后续的jsp文件名
// 处理后
Response response = new Response(); // 非特例
response.process(s + ".jsp", handle); // 模板替换
return response.ToHtml();
}
下面是serverlet中调用脚本的代码,使用BeanShell(参考http://jiasudu.iteye.com/blog/105761)作为java脚本引擎。示例代码等本人有空会整理奉上。
import bsh.Interpreter;
bsh.Interpreter i = new bsh.Interpreter();
try
{
i.set("this", this.getServletContext());
i.set("request", request);
i.set("response", response);
i.source("C:\\a.txt");
}
catch (EvalError e)
{
e.printStackTrace();
}
分享到:
相关推荐
基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip 基于java的开发源码-...
WEB开发技术教程-网站设计与开发 网页设计-JSP脚本语言-JAVA_WEB 共43页.ppt
linux实用脚本show-busy-java-threads、show-duplicate-java-classes、find-in-jars
最近刚学的Web开发,这是学习脚本时的一些资料。。。。。。。。。。。。。。。。。
linux-java-jar包启动脚本
Java web 开发,Java script 脚本编写的pdf教程。开发好的网站,离不开Java。学习Java是你第一明智的选择,选择这个教程就是你第二明智的选择。
Java Web应用开发 12 课堂案例-使用脚本程序.docx 学习资料 复习资料 教学资源
12306 抢票助手 - Java版
spring-boot-initscript, Spring Boot 项目的初始化脚本 Spring Boot init.d-脚本注意:在 Spring Boot 1.3中,有可能在打包的. jar 文件的前面注入正式的init.d 脚本。 指令在文档中找到了 这个脚本用于将一个...
使用LoadRunner-编写JAVA-测试脚本
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
基于Java的实例开发源码-SnakeScript Java游戏脚本引擎 v1.1.zip
java线程定位脚本
基于java的开发源码-在Java中运行Perl脚本 JERL.zip
该实现基于受Apollo启发的GraphQL Java库graphql-java-tools。 graphql-java-common -GraphQL实现,它是GraphQL的模式优先实现。 graphql-spring-boot -GraphQL的Sprinb引导启动器。 Spring Boot 2.x 应用该应用...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
wx-java-miniapp 前言 ...执行sql/wx-java-miniapp.sql脚本文件(推荐使用 Navicat) 1. 克隆项目 git clone https://github.com/gongsir0630/wx-java-miniapp.git 2. 修改配置 修改src/main/resources/a
WebtestRecorder插件---Selenium Webdriver脚本录制工具--For Java
selenium自动化测试Java脚本开发