当前位置: 首页 > 编程日记 > 正文

关于ognl+struts-tag与el+jstl互相代替,以及el和jstl的学习笔记

昨晚在晚上看了许多文章,众多大牛说OGNL性能不行云云,乍一看似乎惨不忍睹,如下图:

于是考虑是否能使用EL+JSTL代替实现前台的标签。

以最近测试用的简单留言板的查看文章页面为例,以下皆省略getter,setter方法:

ViewArticle:

复制代码
public class ViewArticle extends ActionSupport {

private static final long serialVersionUID = 77L;
private ArticleService as;
private int page = 1;

@Override
public String execute() throws Exception {
ActionContext ctx = ActionContext.getContext();
ctx.put("articles", as.getAllArticle(page));
return SUCCESS;
}
复制代码

前台页面,OGNL+Struts-tags实现:

复制代码
<table>

  <s:iterator value="#request.articles" id="a" status="s">
<tr>
<td><s:property value="#s.index"/></td>
<td class="title"><s:property value="#a.title"/></td>
<td class="content"><s:property value="#a.content"/> </td>
<td class="username"><s:property value="#a.user.username"/></td>
<td><s:a action="deletePro?id=%{#a.id}">删除</s:a></td>
</tr>
</s:iterator>
</table>
复制代码

EL+JSTL实现:

复制代码
<table>

   <c:forEach items="${articles}" var="a" varStatus="s">
<tr>
<td><c:out value="${s.index}"/></td>
<td class="title"><c:out value="${a.title}"/></td>
<td class="content"><c:out value="${a.content}"/></td>
<td class="username"><c:out value="${a.user.username}"/><br></td>
<td><a href="deletePro?id=${a.id}">删除</a></td>
</tr>
</c:forEach>
</table>
复制代码

可以看出,两者的复杂度和可读性并没有多大的差别,可能我这个Demo比较简单,从代码上来看EL+JSTL并没有简洁多少,不过Struts-Tgas若不使用simple风格的话,自动生成的HTML代码有点惨不忍睹,从生成的代码简介角度来看,我并不很倾向于使用Strust-Tags。

但是Sturts-Tags在国际化方面有着很大的优势,如下图:

<s:text name="username"/>
<s:text name="password"/>

可以很方便的读取出国际化文件中的资源,而不使用此方法的话要如何实现还没有深入研究。

考虑到之前的ONGL效率问题,以及EL和JSTL的官方性,在之后的项目中可能更加倾向于使用EL+JSTL的方式构建前台页面。

转载于:https://www.cnblogs.com/qwangwei/p/4997940.html

相关文章:

六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版

《六年级上信息技术教案Word大变身用Word制作网页河大版》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《六年级上信息技术教案Word大变身用Word制作网页河大版(2页珍藏版)》请在人人文库网上搜索。1、第 1 课 Word 大变身用 Word 制作网页教学内容&#xff1a;教学目…

android4.4 添加快捷开关(以截屏为例)

A&#xff0c;frameworks\base\packages\SystemUI\res\values\config.xml 添加&#xff1a; <bool name"quick_settings_show_screenshot">true</bool> B&#xff0c;frameworks\base\packages\SystemUI\res\values\strings.xml 添加&#xff1a;<str…

两台ubuntu虚拟机环境下hadoop安装配置

http://blog.itpub.net/26978437/viewspace-730136/按照上几篇的内容&#xff0c;安装好两台ubuntu虚拟机之后&#xff0c;首先确定好哪台机子做namenode&#xff0c;哪台做datanode&#xff0c;打开终端,输入&#xff1a;$sudo vi /etc/hosts 在打开的文件中输入主机名和IP地址…

记录程序运行时间

long currentTimeMills()返回以毫秒为单位的当前时间 long nanoTime() 返回最准确的可用系统计时器的当前值&#xff0c;以毫微秒为单位. 测试某些代码执行的时间长度&#xff1a; long startTime System.nanoTime();// ... the code being measured ...long estimatedTime S…

绝对定位下margin的作用

以前一直对绝对定位下的margin作用很模糊&#xff0c;今天细看一下 不使用top,left&#xff0c;margin等 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdev…

战地1如何修改服务器地址,《战地1》服务器加入方法一览

《战地1》发布已经有一段时间了&#xff0c;今天小编要为大家带来的是玩家“黑肉佐罗”分享的《战地1》服务器加入方法一览&#xff0c;感兴趣的玩家赶紧一起来看看吧!战地风云系列正统续作战地1问世已经有几个礼拜了&#xff0c;游戏怎么样&#xff0c;我想也不用多说&#xf…

css如何设置dialog,css-dialog提示

内容不完善内容不完善内容不完善内容不完善内容不完善确定BackGround.jsimport styled from styled-components;const BackGround styled.divbackground-color: rgba(19, 21, 26, 0.6);opacity: 1;z-index: 1001;top: 0;left: 0;right: 0;bottom: 0;position: absolute;;expor…

1356服务器性能,Intel发布4款LGA1356插口服务器处理器

Intel发布了4款LGA 1356插口的处理器&#xff0c;它们分别是Xeon E5-2449L和E5-1410、Pentium 1403和1407。Xeon E5-2449L是一款8核16线程的处理器&#xff0c;20MB三级缓存&#xff0c;同时它还具有Xeon E5-2400系列最低的TDP&#xff0c;仅为50W&#xff0c;但为了达到这个功…

二分图匹配匈牙利算法DFS实现

1 /**\2 | 二分图匹配&#xff08;匈牙利算法DFS 实现&#xff09;3 | INIT: g[][]邻接矩阵;4 | CALL: res MaxMatch ();5 | 优点&#xff1a;实现简洁容易理解&#xff0c;适用于稠密图&#xff0c;DFS 找增广路快。6 | 找一条增广路的复杂度为O&#xff08;E &#…

十大Intellij IDEA快捷键转

Intellij IDEA中有很多快捷键让人爱不释手&#xff0c;stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱&#xff0c;想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键&#xff0c;这次就按照我日常开发时的使用频率&#xff0c;简单分类列一下我最喜欢的…

Java和.NET使用DES对称加密的区别

Java和.NET的系统类库里都有封装DES对称加密的实现方式&#xff0c;但是对外暴露的接口却各不相同&#xff0c;甚至有时会让自己难以解决其中的问题&#xff0c;比如Java加密后的结果在.NET中解密不出来等&#xff0c;由于最近项目有跨Java和.NET的加解密&#xff0c;经过我的分…

web.config配置

在config中配置自己项目中的用户控件&#xff1a; <pages> <controls> <add tagPrefix"fish" tagName"MainMenu" src"~/Controls/MainMenu.ascx" /> <add tagPrefix"fish" tagName"PageHeader" src&qu…

字符串最易犯的错误 总是和 那个\0 有关

下面程序有一处错误导致 多错误&#xff1a; View Code 1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 #include <assert.h>5 typedef struct{6 int l, c; // lines, cols7 } pos_t;8 9 typedef struct {10 char *str;1…

12月3号条件控制语句和循环语句

if条件语句 非零即真 0即假 if&#xff08;表达式&#xff09;{ //成立之后要处理的事情 } 以atm小程序为例 //判断用户选择的操作 if &#xff08;operation 1&#xff09;{ //输入密码 printf("输入密码\n"); } if (operation 2){ //取款 printf("取款\n…

获取交换机OID值

附&#xff1a;之前的文章直接给出交换机cpu和内存的OID&#xff0c;下面我叙述下怎么具体去获得OID。下面以H3C内存及cpu部分OID值&#xff1a;&#xff08;可打400电话询问部分值&#xff09;400电话告诉我以下&#xff08;当然万能的网友也行了&#xff09;&#xff0c;缺少…

矩阵变化和坐标

原文地址&#xff1a;http://www.cnblogs.com/winter-cn/archive/2010/12/29/1919266.htmlhttp://www.useragentman.com/blog/2011/01/07/css3-matrix-transform-for-the-mathematically-challenged/在开始之前&#xff0c;首先来复习下一个简单的线性代数知识&#xff1a;矩阵…

Eclipse+SVN搭建开发环境

目前我们开发环境为&#xff1a;windows service 2008 r2 x64 现在开始记录一下eclipseSVN环境搭建过程&#xff1a; 1&#xff0c;&#xff09;下载 VisualSVN-Server-3.4.2-x64:https://www.visualsvn.com/server/download/ 2,)下载与安装&#xff1a;tortoisesvnhttp://tort…

牛客网练习赛44-B(快速幂+模拟)

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/548/B 题意&#xff1a;计算m/n小数点后k1位到k2位&#xff0c;1≤m≤n≤109&#xff0c;1<k1<k2<109,0<k2-k1<105,T<20。 思路&#xff1a;计算小数可以模拟除法一位一位地算&#xff0c;但需要把…

古剑奇谭网络版服务器位置,《古剑奇谭网络版》服务器数据互通调研公告

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼各位仙家弟子&#xff1a;为了给大家提供更好的游戏环境、形成更加稳定的游戏生态&#xff0c;小龙人计划在春节前&#xff0c;在充分参考服务器具体情况、充分尊重大家意愿的基础上&#xff0c;对部分服务器开启数据互通&#xff…

git克隆 不带目录_Git 系统学习笔记

公众号内发送Git获取Git官方PDF教程版本控制 版本控制是一种记录一个或若干个文件内容变化、以便将来查阅特定版本修订情况的系统。本地版本控制系统很久以前就开发了许多本地版本控制系统、大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS、…

Android库so文件及skia函数的调用

为了实现android的二次开发&#xff0c;希望通过编制动态链接库&#xff08;.so&#xff09;的方式实现android native C程序的调用。更为实际的情况则是&#xff1a;编制新库&#xff08;new.so&#xff09;调用android的老库&#xff08;如libskia.so libskiagl.so&#xff0…

关于参数类型的转换问题

有时候遇见方法之间的参数会有冲突&#xff0c;这个时候又不想修改方法的时候&#xff0c;可以考虑一些类型转换的一些技巧&#xff0c;如.toString( ) .toDate( ) .parseInt( ) .valueOf( )等等 转载于:https://www.cnblogs.com/2027437606qq/p/5018710.html

c++框架有哪些_Java Mybatis框架入门教程_v20200726

MyBatis 的前身是 Apache 的开源项目 iBatis。MyBatis 几乎可以代替 JDBC&#xff0c;是一个支持普通 SQL 查询&#xff0c;存储过程和高级映射的基于 Java 的优秀持久层框架。MyBatis 与 JDBC 相比&#xff0c;减少了 50% 以上的代码量。并且满足高并发和高响应的要求&#xf…

logstash写入到kafka和从kafka读取日志

收集nginx日志放到kafka 修改nginx日志格式&#xff1a;[nginx日志格式修改](https://blog.51cto.com/9025736/2373483) input {file {type > "nginx-access"path > "/data/wwwlogs/access_nginx.log"start_position > "beginning"code…

Linux cp命令如何拷贝整个目录下所有文件

复制不包含隐藏文件&#xff1a; cp -R /home/usera/* /mnt/temp 复制包含隐藏文件 &#xff1a; cp -R /home/usera/. /mnt/temp 转载于:https://www.cnblogs.com/appinn/p/5019533.html

Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

吹完了页面有关的话题&#xff0c;今天我们来聊一下页面之间是如何导航的&#xff0c;在更多情况下&#xff0c;我们的应用程序不会只有一个页面的&#xff0c;应该会有N个&#xff0c;就像我们做桌面应 用开发那样&#xff0c;我们一个应用程序中可能不止一个窗体&#xff08;…

POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】

题目描述&#xff1a; 给你一个无向图&#xff0c;问你最少删掉几个点&#xff0c;使这个图成不连通。 解题报告&#xff1a; 概念 (1)一个具有 N 个顶点的图&#xff0c;在去掉任意 k-1 个顶点后 (1<K<N) 所得的子图仍连通&#xff0c; 而去掉 K 个顶点后的图不连通则称…

C++ STL:stack和queue

http://blog.csdn.net/wallwind/article/details/6858634 http://blog.csdn.net/chao_xun/article/details/8037420 http://blog.163.com/jackie_howe/blog/static/19949134720111144714342/ 1、stackstack 模板类的定义在<stack>头文件中。stack 模板类需要两个模板参数…

Day03 - Ruby比一比:Module的include与extend

前情提要在第一天里&#xff0c;我们很激昂地用Ruby的类别、物件、方法&#xff0c;写了开赛宣言&#xff01;在第二天里&#xff0c;我们比较了方法与模块&#xff0c;比的过程中&#xff0c;发现模块多了包含&#xff08;inclusion&#xff09;与延伸&#xff08;extension&a…

5 zabbix 添加host_运维监控实战篇,zabbix自动发现和自动注册图文详解

一、介绍自动发现Zabbix自动发现就是为了解决批量监控而设计的功能之一&#xff0c;什么是自动发现呢&#xff0c;简单来说就是Zabbix Server端可以基于设定的规则&#xff0c;自动批量的去发现局域网若干服务器&#xff0c;并自动把服务器添加至Zabbix监控平台&#xff0c;省去…