JSP 和 JSTL的简单使用

JSP 和 JSTL

jsp

注释:

1// 注释,单⾏注释 /* 多⾏注释*/
2<!-- HTML⻛格的注释 -->
3<%-- JSP注释 --%>

Scriptlet:
Scriptlet的作用是可以在jsp中写java代码:

第⼀种:<% %>: java 脚本段,可以定义局部变量、编写语句
第⼆种:<%! %>:声明,可以定义全局(成员)变量、⽅法、类
第三种:<%= %>:表达式,数据⼀个变量或具体内容

实例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Scriptlet</title>
</head>
<body>
<%
String str = "Hello JSP";
System.out.println(str);
response.getWriter().write(str);
%>
<%!
String memberStr = "a member String";
%>
<%=memberStr%>
<h1>This is a JSP page!!</h1>
</body>
</html>

JSP的指令标签:
用法是为了 JSP ⻚⾯(HTML)都包含⼯具栏、头部信息、尾部信息、具体内容拼接在一起,防止冗余。
include 静态包含:

<%@ include file="要包含的⽂件路径" %> <!-- 相对路径 -->

include 动态包含:

<jsp:include page="include.html"></jsp:include>
<%
String a = "hello.jsp";
%>
<jsp:include page="<%=a %>"></jsp:include>

第一个页面:

<jsp:include page="hello.jsp" flush="true">
<jsp:param name="uname" value="zhangsan"/>
</jsp:include>

第二个页面:

<!-- 接收参数 -->
<%=request.getParameter("uname")%>

EL表达式的使⽤

语法结构⾮常简单: ${expression}

EL表达式的使⽤

<%
pageContext.setAttribute("uname","zhangsan"); // page作⽤域
request.setAttribute("uname","lisi"); // request作⽤域
session.setAttribute("uname","wangwu"); // session作⽤域
application.setAttribute("uname","zaholiu"); // application
%>

拿取值

${pageScope.uname} <!-- page作⽤域 -->
${requestScope.uname} <!-- request作⽤域 -->
${sessionScope.uname} <!-- session作⽤域 -->
${applicationScope.uname} <!-- application作⽤域 -->
<%--
获取Map中指定值
${map["key"] } 或 ${map.key }
注:
map代表的是存在域对象中的变量名(限域变量名)
--%>
${map.aaa }
${map["bbb"]}

<%-- JavBean中的属性字段需要提供get⽅法 --%>
${user} <%-- 获取对象 --%>
${user.uname} <%--获取对象中的属性--%>

empty

<%--
empty
判断域对象是否为空。为空,返回true;不为空返回false;
${empty 限域变量名 }
判断对象是否不为空。
${!empty 限域变量名 }
--%>
${empty uname}
${empty list}
${empty map}
${empty user}

JSTL

标签的加入为了方便一些常见的问题:比如迭代⼀个映射或者集合、条件测试、XML 处理,甚⾄数据库和访问数据库操作等。
需要的jar包:
在这里插入图片描述

官⽅下载地址:jar包
实例:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

条件动作标签:
if 标签:

<c:if test="<boolean>" var="<string>" scope="<string>">
...
</c:if>

choose、when 和 otherwise 标签:

<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>

迭代标签:

<c:forEach
items="<object>"
begin="<int>"
end="<int>"
step="<int>"
var="<string>"
varStatus="<string>">
</c:forEach>

实例:

<%
List<String> list = new ArrayList<String>();
for (int i = 1; i <= 10; i++) {
list.add("A:" + i);
}
pageContext.setAttribute("li", list);
%>
<!-- 循环集合 -->
<c:forEach items="${li }" var="item">
${item }
</c:forEach>
<hr>
<table align="center" width="800" border="1" style="border-collapse:
collapse;">
<tr><th>名称</th>
<th>当前成员下标</th>
<th>当前成员循环数</th>
<th>是否第⼀次被循环</th>
<th>是否最后⼀次被循环</th>
</tr>
<c:forEach items="${li }" var="item" varStatus="itemp">
<tr>
<td>${item }</td>
<td>${itemp.index }</td>
<td>${itemp.count }</td>
<td>${itemp.first }</td>
<td>${itemp.last }</td>
</tr>
</c:forEach>
</table>
<!-- 循环对象集合 -->
<%
List<User> userList = new ArrayList<User>();
User user = new User(1,"zhangsan","123456");
User user2 = new User(2,"lisi","123321");
User user3 = new User(3,"wangwu","654321");
userList.add(user);
userList.add(user2);
userList.add(user3);
// 将数据设置到作⽤域中
request.setAttribute("userList", userList);
%>
<c:if test="${!empty userList }">
<table align="center" width="800" border="1" style="border-collapse:
collapse;">
<tr>
<th>⽤户编号</th>
<th>⽤户名称</th>
<th>⽤户密码</th>
<th>⽤户操作</th>
</tr>
<c:forEach items="${userList }" var="user">
<tr align="center">
<td>${user.userId }</td>
<td>${user.uname }</td>
<td>${user.upwd }</td>
<td>
<button>修改</button>
<button>删除</button>
</td>
</tr>
</c:forEach>
</table>
</c:if>
<!-- 遍历Map -->
<%
Map<String,Object> map = new HashMap<String,Object>();
map.put("map1", "aaa");
map.put("map2", "bbb");
map.put("map3", "ccc");
pageContext.setAttribute("map", map);
%>
<c:forEach items="${map }" var="mymap">
键:${mymap.key }-值:${mymap.value } <br>
</c:forEach>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值