当前位置: 首页 > 工具软件 > Active4j-jsp > 使用案例 >

jsp前端小知识

苗学民
2023-12-01

jsp前端小知识

提示:这里使用的几乎都是jsp的内置函数,且都经过本人测试,但要记得jsp页面引入文件头

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


前言

提示:jsp是一个非常强大的前端模板,只不过由于前后端分离,各司其职的概念,这种在前端写后端代码的方式越来越不受欢迎。但尽管如此,使用者群体还是挺大的,而且一开始的初学者也几乎都是从jsp磨炼过来的,所以我在此稍稍总结一下jsp的一些内置方法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简单的if语句与截取字符串

代码如下(示例):使用c标签以及fn标签,轻松实现list.name字段过长就截取固定长度的需求。

<c:if test="${fn:length(list.name) > 15}">  
	${ fn:substring(list.name, 0, 15)}&hellip;
</c:if>
<c:if test="${fn:length(list.name) <= 15}"> 
	${list.name }
</c:if>	

二、简单for循环

代码如下(示例):使用c标签实现的简单的foreach循环,可以指定开始值-begin,最大值-end,每次循环的步数-step(相当于每次循环加几),并且通过varStatus="id"拿到索引-(id.index),以及循环变量的当前值-var。

<c:forEach begin="1" end="${PageInfo.total }" step="1" var="pNumber" varStatus="id">
    <c:if test="${PageInfo.pageNumber == id.index}">
 		<li class="active">
 			<a onclick="javascript:return false;" > ${pNumber} </a>
 		</li>
	</c:if>
	<c:if test="${PageInfo.pageNumber != id.index }">
 		<li>
 			<a href="${pageContext.request.contextPath}/CommentServlet?pageNumber=${pNumber}" > ${pNumber} </a>
 		</li>
	</c:if>
</c:forEach>

三、项目绝对路径

代码如下(示例):像一些静态文件,我们都需要控制它的css以及js,还有一些action的跳转也是如此,如果采用相对路径,就很有可能出现资源访问路径不对的情况,所有我最常用的写法就是:

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/bootstrap.min.css">

<script src="${pageContext.request.contextPath}/js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>

<form id="formid" action="${pageContext.request.contextPath}/AddGoodsServlet?flag=add" enctype="multipart/form-data" method="post" onsubmit="return check()" >

当你在路径的前面都加上**${pageContext.request.contextPath}**时,就再也不用考虑路径的变更了。


四、双重for循环

代码如下(示例):fn:length-这个方法是获取集合的size,第二重循环是简便写法。相当于第一个大循环是简单for循环,第二个循环是foreach循环。第二个循环项为items,其子项为var。

<c:forEach begin="1" end="${fn:length(CategoryList)}" step="1" varStatus="id">
    <c:forEach items="${DecorateList }" var="list" >
 
    	<c:if test="${list.id == id.index }">
			你要实现的代码    			    
		</c:if>
		
	</c:forEach>	
</c:forEach>   

总结

当然,jsp还内置了许多其他的方法,有些我自己也没用过,在此给大家列举一下可能会用到的一些方法,希望大家用得上,也欢迎大家补充,谢谢。

函数名函数说明使用举例
fn:contains判定字符串是否包含另外一个字符串<c:if test="${fn:contains(name, searchString)}">
fn:containsIgnoreCase判定字符串是否包含另外一个字符串(大小写无关)<c:iftest="${fn:containsIgnoreCase(name, searchString)}">
fn:endsWith判定字符串是否以另外字符串结束<c:if test="${fn:endsWith(filename, “.txt”)}">
fn:escapeXml把一些字符转成XML表示,例如 <字符应该转为<${fn:escapeXml(param:info)}
fn:indexOf子字符串在母字符串中出现的位置${fn:indexOf(name, “-”)}
fn:join将数组中的数据联合成一个新字符串,并使用指定字符格开${fn:join(array, “;”)}
fn:length获取字符串的长度,或者数组的大小${fn:length(shoppingCart.products)}
fn:replace替换字符串中指定的字符${fn:replace(text, “-”, “•”)}
fn:split把字符串按照指定字符切分${fn:split(customerNames, “;”)}
fn:startsWith判定字符串是否以某个子串开始<c:if test="${fn:startsWith(product.id, “100-”)}">
fn:substring获取子串${fn:substring(zip, 6, -1)}
fn:substringAfter获取从某个字符所在位置开始的子串${fn:substringAfter(zip, “-”)}
fn:substringBefore获取从开始到某个字符所在位置的子串${fn:substringBefore(zip, “-”)}
fn:toLowerCase转为小写${fn.toLowerCase(product.name)}
fn:toUpperCase转为大写字符${fn.UpperCase(product.name)}
fn:trim去除字符串前后的空格${fn.trim(name)}
 类似资料: