- 浏览: 116378 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
czqjay:
news/index/{pageNum}/{author} { ...
来谈谈REST、RBAC下的URL权限控制 -
csumck:
这也有一个在线时序图工具 http://echoma.git ...
推荐一个不错的在线“画”时序图的软件(通过文字生成图片) -
cpop:
...
如何将自己的jar包Release到Maven中央仓库中 -
yangzai911:
如果 accept-language中有值,那么也是默认取第一 ...
Play framework 国际化 -
wangyong8861850:
[color=darkred][/color][size=x- ...
EWeb4J 1.9.1 新版本发布 基于Servlet/JDBC的轻量级web开发框架
经过奋战,终于有个稳定点的SNAPSHOT版本咯。
较之上个版本1.8.6,本版本1.9-SNAPSHOT有以下几个更新点:
SolidBase 添加菜单显隐权限控制,包括导航菜单(href=xxx.jsp或xxx.html)的控制
SolidBase 对导航菜单(href=xxx.jsp或xxx.html)的处理修改,原先为直接服务端跳转到main/veiw下的xxx.jsp或者xxx.html,现在改为将xxx.jsp/xxx.html整个字符串设置到request.setAttribute("switchEnvPath", "xxx.jsp"),然后统一跳转到main/view/switchEnv.jsp,然后在switchEnv.jsp的内容为:
这样目标xxx.jsp/xxx.html页面是从WebContent中开始寻找并且被包含进来。并且因为这里已经包裹了这段代码:
因此在xxx.jsp/xxx.html中已经不再需要包裹上面这段代码了。
SolidBase的菜单显示增加了session缓存,这样不需要每次都查询数据库,不过带来的问题是菜单的修改不能马上见效,若登陆账号是超能力用户或者没有任何角色信息的话,则不会缓存,否则需要重新登录才能看到最新的菜单修改(包括菜单显隐的权限分配修改)
eweb4j 框架更新了比较多。详细看看下面列表
几个DAO增加对Map的支持,使用map可以不需要写model类
MVC增加7个默认action,约定视图和URI-Mapping,例如 DemoControl
控制器属性若提供getter方法,则会作为http响应视图渲染的一个数据模型。类似Struts2的ModelDriven但不需要继承来获得。
除了使用属性getter方法作为视图模型数据外,还可以在Action方法参数里声明一个没有任何注解的Map model,它可以作为视图模型数据,往里面放数据就相当于request.setAttribute一样的效果。
修改uri格式:xxx@POST => xxx#POST, 即符号 '@' 改成 '#'
改善Action跳转:return "action:xxx",之前是使用response.sendRedirect来实现的,但是这样的方式使得HTTP请求只能是GET方式的,如果要重定向到一个HTTP方法为POST或者PUT或者DELETE话,显然这样是无法满足需求的。于是,对 return "action:xxx"的处理方式改成:
然后使用response.getWriter().print打印上面这段内容,从而实现模拟客户端的请求,这样就支持GET之外的请求了,还可以带参数。
PS:如果指定的Action依然是GET的,则会采用redirect的方式执行,而不是表单的形式
Action方法名支持新的约定格式:doUri1BindParam1AndParam2JoinUri2AtPostOrGetOrPutOrDelete
关键词:do, Bind, Join, And, At, Or
其中每个的意义是:
do:一直到Bind或者At为止的单词都会被解析为 URI
Bind:一直到At或者末尾为止的单词都会被解析为URI中的变量部分/{param1}/{param2}(多个arg用And连接)
Join:一定要跟在Bind之后,例如 doHelloBindNameJoinWorldAtGet = /hello/{name}/world GET
At:一直到末尾为止的单词都会被解析为Http Method(多个method用 Or 连接)
Action增加对FreeMarker模板的支持。
例子一
fmt-list.html
例子二
index.html
将CascadeDAO的 "select *" 修改为 "select xxx,xxx,xxx"
MVC.Action增加XML的视图响应。@Produces(MimeType.XML)
MVC.Action增加对FreeMarker模板的支持
各个模块改善日志功能,提供多日志配置。控制台打印开关等。
各个模块的sacnPackage增加绝对路径,必须以"AP:"开头。主要用于测试
DAO增加分页,DAOFactory.getDAO(Pet.class).selectAll().query(1, 5);
MVC.Action增加ActiveRecord支持。
[*] 待续
较之上个版本1.8.6,本版本1.9-SNAPSHOT有以下几个更新点:
<%@ page contentType="text/html; charset=utf-8" language="java" pageEncoding="utf-8"%> <div class="accordion" fillSpace="sideBar"> <jsp:include page="/${switchEnvPath}"></jsp:include> </div>
这样目标xxx.jsp/xxx.html页面是从WebContent中开始寻找并且被包含进来。并且因为这里已经包裹了这段代码:
<div class="accordion" fillSpace="sideBar"> </div>
因此在xxx.jsp/xxx.html中已经不再需要包裹上面这段代码了。
eweb4j 框架更新了比较多。详细看看下面列表
HTTP Method | URI | Class.Method | Params |
GET | /demo | DemoControl.index | |
POST | /demo | DemoControl.create | |
PUT | /demo/{id} | DemoControl.update | id={id} |
DELETE | /demo/{id} | DemoControl.destroy | id={id} |
GET | /demo/{id} | DemoControl.show | id={id} |
GET | /demo/{id}/edit | DemoControl.edit | id={id} |
GET | /demo/new | DemoControl.editNew | id={id} |
return "action:xxx@PUT?name=weiwei&age=5"; //符号@只能出现一次,框架不再采用response.sendRedirect的方式来处理,而是构建一个 form表单: <form id="form_id" action="xxx" method="post"> <input type="hidden" name="_method" value="PUT" /> <input name="name" value="weiwei" /> <input name="age" value="5" /> <input type="submit" /> </form>
<script>document.getElementById('form_id').submit();</script>
然后使用response.getWriter().print打印上面这段内容,从而实现模拟客户端的请求,这样就支持GET之外的请求了,还可以带参数。
PS:如果指定的Action依然是GET的,则会采用redirect的方式执行,而不是表单的形式
其中每个的意义是:
do:一直到Bind或者At为止的单词都会被解析为 URI
Bind:一直到At或者末尾为止的单词都会被解析为URI中的变量部分/{param1}/{param2}(多个arg用And连接)
Join:一定要跟在Bind之后,例如 doHelloBindNameJoinWorldAtGet = /hello/{name}/world GET
At:一直到末尾为止的单词都会被解析为Http Method(多个method用 Or 连接)
For Example1: public void doRemoveBindIdAtDelete(int id){} 解析后: uri => remove/{id} http => DELETE 访问例子: DELETE /remove/3 For Example2: private String name; public void setName(String name){this.name = name} public void doHelloBindNameAtGet(){} 解析后: uri => hello/{name} http => GET 访问例子: DELETE /hello/weiwei For Example3: public class PetsControl{ public String doBindIdJoinEditAtGet(int id){ return "fmt:pets/view/edit.html"; } } 解析后: uri => pets/{id}/edit http => GET 访问例子: GET /pets/3/edit
public String doHelloAtPost(@QueryParam("user") final User user, Map model) { List<User> list = new ArrayList<User>(); list.add(user); list.add(new User()); model.put("pojos", list); return "fmt:pet/view/fmt-list.html"; }
fmt-list.html
<#list pojos as user> <p>${user.name}-${user.age}</p> </#list>
例子二
public String doTestAtGet() { return "action:pet/hello@POST?user.name=微微&user.age=23"; } @Result(name = { "success" }, type = { "fmt" }, value = { "index.html" }) public String doIndexAtGet(Map model) { model.put("message", "Hello FreeMarker!"); return "success"; }
index.html
<h1>${message}</h1>
@Entity @Table(name="t_pet") public class Pet extends Model{ public final static Pet instance = new Pet(); private String name; private int age; public Pet(){} public Pet(String name, int age){ this.name = name; this.age = age; } //setter and getter } //使用 new Pet("xiaohei", 5).create();//insert new Pet("xiaohei", 5).save();//当没有ID值的时候是insert Pet pet = new Pet("xiaobai",4); pet.create();//insert这时候pet.id已经被注入了 pet.setName("test"); pet.save();//这时候因为pet.id有值,所以是update pet = new Pet(); pet.setId(2); pet.load();//这个时候会通过id值去查询数据库,并将数据注入到pet实例中。 List<Pet> pets = Pet.instance.findAll(); /* 分页 */ List<Pet> page = Pet.instance.find().fetch(10); page = Pet.instance.find().fetch(2, 5); /* 条件查询 */ List<Pet> pets = Pet.instance.find("byName", "xiaohei").fetch(); pets = Pet.instance.find("byNameAndAge", "xiaohei", 5).fietch(); pets = Pet.instance.find("name = ?", "xiaohei").fetch(); Pet p = Pet.instance.find("name = ?", "xiaohei").first(); p = Pet.instance.findById(3); p = Pet.instance.find("byNameAndAge", "xiaohei", 5).first(); /* 删除 */ Pet.instance.delete("byName", "xiaohei"); Pet.instance.deleteAll(); /* 计算 */ long rows = Pet.instance.count();/* select count(*) */ rows = Pet.instance.count("byName", "xiaohei");/* count(*) ... where name='xoapjeo' */
[*] 待续
发表评论
-
EWeb4J 1.9.1 新版本发布 基于Servlet/JDBC的轻量级web开发框架
2012-11-28 22:08 2828EWeb4J 是一个基于 Servlet/Jdbc 构建的轻量 ... -
EWeb4J-SolidBase 发布新版本
2012-07-08 12:41 2134SolidBase项目是采用 DWZ + EWeb4J 开发的 ... -
EWeb4J 框架迁移到 GitHub
2012-07-05 10:02 1889EWeb4J 框架: https://github.com/ ... -
发布一个EWeb4J-1.9的Demo
2012-07-04 16:38 26EWeb4J-1.9框架发布在即,在此之前,发布一个小Demo ... -
EWeb4J-1.9-文件上传下载和生成建表脚本
2012-06-09 12:11 2303毕业了。高兴一下,哈。 一直以来,eweb4j framew ... -
SolidBase 二次开发 GIS 截图
2012-05-07 16:12 1918有位大哥哥使用 EWeb4J 的项目 SolidBase 作为 ... -
EWeb4J 国际化支持出炉啦(有源码看)
2012-05-06 15:31 2058很荣幸也很开心地公布,EWeb4J 支持国际化了。并且有着它独 ... -
Play framework 国际化
2012-05-03 20:04 4307Play的国际化操作还是非常简单的。大概分为四步: 1. ... -
eweb4j在线演示程序更新
2012-04-25 09:25 2101访问地址:SolidBase 增加菜单显示权限 ... -
EWeb4J-1.9-继续改善ActiveRecord支持【级联】操作
2012-04-17 20:58 1487老习惯:约定优于配置 ... -
EWeb4J-1.9-控制器更新
2012-04-13 16:56 1443主要增加以下更新: 验证器 声明式事务 7个默认Acti ... -
eweb4j-1.9-支持ActiveRecord模式
2012-04-06 20:46 1616@Entity @Table(name="t_ ... -
eweb4j演示项目-SolidBase增加对菜单显隐的权限控制
2012-03-28 14:41 1903昨晚捣鼓到两点多才弄好,今天整理了下,大概把菜单权限控制做好了 ... -
(下篇)单例POJO实现CRUD+分页+搜索Demo
2012-03-23 23:14 2本篇程序特点: POJO式的控制器,无需继承、无需实 ... -
体验快速开发2:单例POJO实现CRUD+分页+搜索Demo
2012-03-23 22:54 29程序特点: POJO式的控制器,无需继承、无需实现接 ... -
体验快速开发:只有一个控制类实现的CRUD+分页+搜索Demo
2012-03-22 22:17 182╮(╯▽╰)╭,本来不想谈什么快速开发的,但是最近老是有人拿什 ... -
如何将自己的jar包Release到Maven中央仓库中
2012-03-20 17:17 4438PS:真正要发布到Maven中央库中是首先需要到https:/ ... -
EWeb4J-1.8.6 发布,同时带来一个演示项目
2012-03-08 17:44 2989距离上次1.7的发布已经过去5个月了。首先值得高兴的是EW ... -
eweb4j加进到Maven中央仓库啦,先发个快照版
2012-02-25 23:54 1696挺开心的。 先是注册好了 eweb4j.org。 然后是sv ... -
eweb restful需要考虑的,谨记。
2012-02-20 19:25 1156框架是否遵守一条HTTP消息并非仅仅包含一个URI的原则?也 ...
相关推荐
eweb4j是一个Java开发框架,它专注于提供高效、轻量级且易于使用的Web应用程序解决方案。这个框架的设计理念是简化开发流程,提高开发效率,同时保持代码的清晰性和可维护性。下面我们将深入探讨eweb4j框架的核心...
EWeb4J ? = EWeb4J 是一个基于 Servlet/Jdbc 构建的轻量级 Java Web 开发框架。它可以代替 SSH 来开发一个完整的 Web 应用程序。 它专注于 少侵入、少配置、松耦合、RESTful架构风格的 Web 应用程序开发。 EWeb4J ...
**eweb4j框架详解** `eweb4j`是一个基于Java开发的轻量级Web应用框架,旨在简化Web应用程序的开发过程,提高开发效率。它集成了许多实用功能,如MVC模式、数据访问、安全管理等,为开发者提供了一个高效、易用的...
Rockwell 1756-Eweb模块
1756-EWEB
在描述中提到的“eweb编辑器 要改下db中的后缀为asp”,这可能是指在使用eweb编辑器进行网站开发时,需要将数据库连接文件或动态页面文件的扩展名从原本的格式更改为ASP(Active Server Pages)格式。ASP是一种微软...
本实例将深入探讨EWeb在线编辑器的使用方法和功能,帮助初学者快速掌握其操作。 一、EWeb在线编辑器概述 EWeb是一款强大的Web开发工具,它提供了丰富的代码编辑功能,支持多种编程语言,包括HTML、CSS、JavaScript...
EWeb4J支持多种数据库,并提供了强大的表单验证功能,使得开发者可以轻松创建复杂的数据驱动型Web应用。 #### 3. Spring Roo 1.2.1 **下载链接**: ...
《EWeb编辑器2.80:打造高效网页创作利器》 EWeb编辑器,全称为"EWeb Editor",是一款专业且用户友好的网页编辑工具,尤其以2.80版本备受好评,被誉为“绝对好用”。这款编辑器旨在简化网页制作流程,提升开发效率...
《eWeb Editor客户端:在线文本编辑器的深度解析与应用》 eWeb Editor是一款功能强大的在线文本编辑器,尤其在Web开发领域中被广泛应用。它以其便捷的操作界面和丰富的编辑功能,为网络编程人员提供了极大的便利。...
**eweb网页编辑器**是一款专业且用户友好的软件,专为论坛和公告发布等应用场景设计。它将复杂的网页制作过程简化,使非专业程序员也能轻松创建和编辑网页内容。这款编辑器集成了多种功能,旨在提高用户在互联网上的...
在线编辑HTML,使用户方便使用编码在线编辑HTML,使用户方便使用编码
让 AsciiDoc 成为您的文学编程工具集的一部分。 使用 eWEB,您可以使用嵌入的 WEB 代码片段编织和缠结作为 AsciiDoc 文档编写的文字程序。
ASP常用的后台编辑器,带图片上传功能 调用方法如下例子: <textarea name="nr" ROWS="20" COLS="70">%=Server.HTMLEncode(rs("nr"))%></textarea> <iframe ID="eWebEditor1" src="../...</iframe>
**eWeb Editor 3.8 全面解析** eWeb Editor 3.8 是一款功能强大的在线HTML编辑器,专为网页内容编辑和管理而设计。它提供了丰富的文本格式化选项,让用户无需深入HTML代码就能轻松创建和编辑网页内容。这款编辑器以...
### 高速 Fel表达式引擎知识点详解 #### 一、Fel表达式引擎概述 Fel(Fast Expression Language)是一种高性能的表达式引擎,旨在满足企业级应用对于表达式处理的需求。它具备快速执行的能力,与ognl等其他流行...
eWEB - 对手,Emmanuel Carrère 该网站是作为我们 eWEB 项目的一部分创建的,其目的是创建一个文化站点。 我们的选择落在了 Emmanuel Carrère 的《对手》一书中。 然后我们决定创建一个互联网站点,该站点涉及...
资源分类:Python库 所属语言:Python 资源全名:eweb-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
3.新闻栏目eweb编辑器与IE7、IE8不兼容的问题解决! 4.特别提醒所有客户,网站上传后一定要修改data下在数据库名(改了数据库名,要改conn.asp和adminmaster/conn.asp和iP/conn.asp)! 5.后台管理地址也建议修改,就是...