不得不使用jstl时注意事项

本文探讨了在Struts2项目中使用JSTL遇到的问题及解决方案,包括如何引入必要的JSTL标签库,并介绍了一些实用的JSTL标签用法,如c:forTokens、fmt:formatDate等。
在项目开发的过程中,不得以使用jstl,原因是stuts2不支持for 循环,只支持iterator,因为本人喜欢使用struts2表达式,用jstl的过程中出现了很多细节问题比较闷,比如说我们习惯使用<s:if test=""><:/s:if>很多习惯写法,在<c:if test="">中无效,baidu了不少,还不好解决,后来终于找到了一条合适的方法,就是在 test 条件中 使用fn:函数 去做一些判断
强烈推荐不要使用jstl,用起来不爽,实在不行,请引入下面三个文件(函数库,格式化,核心库),会帮你解决不必须要的问题:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>



c标签库的使用不做介绍,简单写下不常用的几个

1、c:forTokens
类似于js及java中的split函数,将一个字符串用某个字符分割成数组,然后逐个处理。items是需要处理的原始字符串,delims是分隔符
<c:forTokens var="item" items="www.trs.com.cn" delims=".">
${item }<br/>
</c:forTokens>



2、fmt.tld中比较有用的fmt:parseDate, fmt:formatDate, fmt:parseNumber, fmt:formatNumber,用来格式化时间与数字,例子如下:
<fmt:formatDate value="${item.createdTime }" pattern="yyyy-MM-dd HH:mm" />



3、fn.tld,jstl的函数,其中有
fn:contains 判断一个字符串是否含有另外一个字符串,eg <c:if test="${fn:contains(str, searchString)}">;
fn:containsIgnoreCase 同上面的tag,只是不区分大小写;
fn:endsWith 判断一个字符串是否以某个字串结束,eg <c:if test="${fn:endsWith(filename, ".txt")}">
fn:escapeXml 将字符串转换为没有xml无法识别字符的字符串,eg ${fn:escapeXml(info)}
fn:indexOf 判断某个字符在一个字符串中的位置,eg ${fn:indexOf(name, "-")}
fn:join 同jsjoin,将数组用字符拼接,eg ${fn:join(array, ";")}
fn:length 计算字符串的长度
fn:replace 替换某个字串, eg ${fn:replace(text, "-", "•")}
fn:split join的反过程,eg ${fn:split(customerNames, ";")}
fn:startsWith 是否以某个字串开始, eg <c:if test="${fn:startsWith(product.id, "100-")}">
fn:substring 获取字串,eg ${fn:substring(zip, 6, -1)}
fn:substringAfter 从某个字串开始取字串,eg ${fn:substringAfter(zip, "-")}
fn:substringBefore 上一条的反过程
fn:toUpperCase 把字符串中的字符全部转为大写
fn:trim 去掉字符串两边的空格,eg ${fn.trim(name)}
一、 语言和环境 1. 实现语言:JAVA语言(JDK8)。 2. 环境要求: Idea/Tomcat/MySQL。 3. 使用技术:Spring MVC + Spring + MyBatis。 4. 功能要求:不得使用第三方工具生成实体类、持久层代码,否则不得分。 二、 实现功能 某高校食堂为方便管理采购的食材信息,需要随统计筛查食材,以明确现有食材和需要采购食材信息,要求开发一套食材采购系统,实现对食材信息统一化管理,具体实现要求如下: 1. 首页上方显示为查询表单,包括:所属类别、食材名称两个查询关键字条件,下方显示所有已经录入的食材信息列表,默认要求按照采购间降序排列,如图1所示。 (1) 按“采购间”降序排列。 (2) 底部显示共为您查询到XX条符合条件的信息。 图1 所有已采购食材列表信息 2. 输入类别、名称关键字,点击“搜索”按钮可以根据这二个字段条件进行模糊搜索(多个条件按并且关系处理),将搜索的信息展示在列表中,如图2(单条件查询)、图3(多条件同查询)所示。 图2 单条件查询食材信息 图3 多条件查询食材信息 3. 点击列表每行末尾的“删除”链接,将当前食材信息进行删除操作。 a) 删除前需要给予提示,如图4所示 b) 删除后需要刷新列表信息,此列表中应不包含已经删除的信息,如图5所示 图4 删除采购信息提示 图5 删除成功列表刷新 三、 数据库设计 1. 创建数据库(buyer_db)。 2. 创建数据表(tb_foods),结构如下。 字段名 说明 字段类型 长度 备注 id 编号 int 主键,自增,增量为1 name 名称 varchar 50 不能为空 type 类别 varchar 50 不能为空 price 价格 decimal 9,1 可以为空 buyer 采购人 varchar 20 不能为空 buy_time 采购间 datetime 20 添加间默认当前间 四、 具体要求及推荐实现步骤 SSM版本推荐实现步骤如下: (1) 创建数据库和数据表,添加测试数据(至少添加4条测试数据)。 (2) 创建Web工程并创建各个包,导入工程所需的jar文件。 (3) 添加相关SSM框架支持。 (4) 配置项目所需要的各种配置文件(mybatis配置文件、spring配置文件)。 (5) 创建实体类FoodsInfo。 (6) 创建MyBatis操作数据库所需的Mapper接口及其Xml映射数据库操作语句文件。 (7) 创建业务逻辑相应的接口及其实现类,实现相应的业务,并在类中加入对DAO/Mapper的引用和注入。 (8) 创建Controller控制器类,在Controller中添加对业务逻辑类的引用和注入,并配置springMVC 配置文件。 (9) 创建相关的操作页面,并使用CSS对页面进行美化。 (10) 实现页面的各项操作功能,并在相关地方进行验证,操作要人性化。 (11) 调试运行成功后导出相关的数据库文件并提交。 五、 评分标准 题目:食堂食材采购系统 使用SSM框架实现该项目评分标准(满分100): 5 数据库(以数据库脚本方式提交)(5分):创建并测试数据库脚本(3分);添加测试数据(2分) 5 正确创建和编写实体类,包含所有属性(3分),及getter/setter方法(2分) 20 SSM整合 Spring配置文件(5分):正确完成数据源DataSource相关配置(3分);正确完成Spring中所有Bean的扫描及开启依赖注入注解(2分) Mybatis相关配置(5分):正确完成spring配置文件中mybatis-config.xml、各个Mapper以及实体类的相关配置 (3分);正确完成SqlSessionFactory相关配置(2分) SpringMvc配置(5分):正确完成视图解析器的配置(3分);正确打开依赖注入相关配置(2分) Web.xml相关配置(5分):正确完成SpringMVC核心控制器及监听器配置(3分);正确完成Spring配置文件及 SpringMVC配置文件路径位置的配置(2分) 65 业务功能实现 查询功能持久层设计(12分):正确完成创建并编写Mapper.xml以及完成编写Select节点完成查询(3分);多条件模糊查询(3分);正确编写Mapper接口并定义查询方法(3分);数据排序(3分) 查询业务功能层设计(8分):正确创建业务逻辑层类(2分);正确实现Mapper持久层的对象注入(3分);正确编写业务层类完成Mapper接口查询方法调用并返回查询的结果集(3分) 查询功能控制器设计(13 分):正确定义控制器类,并定义属性完成业务层接口实现类的注入(2 分);在控制器类中定义查询方法用于处理查询请求,并完成正确注解(3分);正确定义接收查询表单传递的参数(3分);正确完成针对业务层查询方法的调用并获取到查询结果(3分);正确完成将查询结果存入到作用域并完成转发(2分) 查询功能列表展示页面设计(12分):正确定义查询条件表单,包括表单action地址(2分);正确设计数据展示表格(2分);正确使用JSTL+EL表达式完成查询结果展示(2分);正确实现每个“删除”超链接,包括href地址正确(2分);正确实现点击“删除”链接进行确认提示(2分);底部展示结果数量(2分) 删除功能持久层设计(6分):正确完成持久层Mapper接口根据ID删除数据方法定义(3分);正确完成Mapper.xml中删除数据Sql语句编写(3分) 删除功能业务层设计(5分):正确定义业务逻辑层中删除方法(2分);正确调用Mapper实现删除方法(3分) 删除功能控制器设计(9分):正确完成控制器中删除方法定义及注解(1分);正确获取请求的编号(2分);正确完成业务层方法调用(3分);正确实现删除成功后页面自动刷新最新数据(3分) 5 总体编程技术(5分):编码命名规范(2分);程序正常运行,无异常(3分)
06-17
基于部落竞争与成员合作算法(CTCM)融合动态窗口法DWA的无人机三维动态避障方法研究,MATLAB代码 动态避障路径规划:基于部落竞争与成员合作算法(CTCM)融合动态窗口法DWA的无人机三维动态避障方法研究,MATLAB 融合DWA的青蒿素优化算法(AOA)求解无人机三维动态避障路径规划,MATLAB代码 基于动态环境下多智能体自主避障路径优化的DWA算法研究,MATLAB代码 融合DWA的青蒿素优化算法AOA求解无人机三维动态避障路径规划,MATLAB代码 基于DWA的多智能体动态避障路径规划算法研究,MATLAB代码 融合动态窗口法DWA的粒子群算法PSO求解无人机三维动态避障路径规划研究,MATLAB代码 基于粒子群算法PSO融合动态窗口法DWA的无人机三维动态避障路径规划研究,MATLAB代码 基于ACOSRAR-DWA无人机三维动态避障路径规划,MATLAB代码 基于ACOSRAR-DWA无人机三维动态避障路径规划,MATLAB代码 基于DWA的动态环境下无人机自主避障路径优化,MATLAB代码 基于DWA的动态环境下机器人自主避障路径规划,MATLAB代码 基于城市场景下RRT、ACO、A*算法的无人机三维路径规划方法研究,MATLAB代码 基于城市场景下无人机三维路径规划的导航变量的多目标粒子群优化算法(NMOPSO),MATLAB代码 导航变量的多目标粒子群优化算法(NMOPSO)求解复杂城市场景下无人机三维路径规划,MATLAB代码 原创:5种最新多目标优化算法求解多无人机协同路径规划(多起点多终点,起始点、无人机数、障碍物可自定义),MATLAB代码 原创:4种最新多目标优化算法求解多无人机协同路径规划(多起点多终点,起始点、无人机数、障碍物可自定义),MATLAB代码 高维超多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值