JSP(JavaServer Pages)
2021/7/29 14:06:10
本文主要是介绍JSP(JavaServer Pages),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
Jsp注释
1.显式注释
2.隐式注释
Scriptlet脚本小程序
1.Java脚本段,可以写Java代码、定义局部变量、编写语句等
2.声明,声明全局变量、方法、类等
3.输出表达式,可以输出变量或字面量
include包含
include静态包含
include动态包含
JSP的四大域对象
1.page域对象
2.request域对象
3.session域对象
4.application域对象
JSP跳转方式
1.服务端跳转
2.客户端跳转
EL表达式
获取List
获取Map
获取JavaBean
empty
Jsp注释
JSP中一共有两种类型的注释
1.显式注释
能够在客户端查看的注释
继承HTML风格的注释
<!-- HTML注释 -->
2.隐式注释
不能在客户端查看的注释
1.JSP自己的注释
<%--JSP自己的注释--%>
2.继承Java风格的注释(Java脚本段中)
//单行注释
/* 多行注释 */
Scriptlet脚本小程序
JSP中一共有三种Scriptlet脚本小程序:
1.Java脚本段,可以写Java代码、定义局部变量、编写语句等
<%
//这里可以写Java代码
%>
生成的代码在servlet的service方法体中
2.声明,声明全局变量、方法、类等
<%!
//声明全局变量
%>
生成的代码在servlet的类体中
3.输出表达式,可以输出变量或字面量
<%=数值%>
生成的代码在servlet的service方法体中,相当于out.print()输出
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Scriptlet脚本小程序</title> </head> <body> <%-- 1.Java脚本段,可以写Java代码、定义局部变量、编写语句等--%> <% //定义局部变量 String str="Hello JSP"; //输出内容到控制台 System.out.println(str); //输出内容到浏览器 out.print(str); out.write("---------"); //输出全局变量 out.write("全局变量:"+num); out.write("---------"); %> <%-- 2.声明,声明全局变量、方法、类等--%> <%! int num=10; %> <%-- 3.输出表达式,可以输出变量或字面量--%> <%=str%> </body> </html>
include包含
header.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>头部</title> </head> <body> <h2>头部内容</h2> </body> </html>
footer.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>底部</title> </head> <body> <h2>底部内容</h2> <% //获取动态包含传递的参数 String uname=request.getParameter("uname"); String msg=request.getParameter("msg"); out.println("uname:"+uname+",msg:"+msg); %> </body> </html>
include静态包含
格式:
<%@include file="要包含页面的地址"%>
特点:
1.将内容进行直接的替换
2.静态包含只会生成一个源码文件,最终内容全部在_jspservice方法体中(源码文件中)
3.不能出现同名变量
4.运行效率高一点点,耦合度较高,不够灵活。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>include静态包含</title> </head> <body> <%@include file="header.jsp"%> <h2>主体内容</h2> <%@include file="footer.jsp"%> </body> </html>
include动态包含
格式:
<jsp:include page="要包含的页面地址"></jsp:include>
注意:page属性支持表达式
特点:
1.动态包含相当于方法的调用
2.会生成多个源码文件
3.可以定义同名变量
4.效率高,耦合度低
注意:
当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格
使用动态包含传递参数
<jsp:include page="要包含的页面地址">
<jsp:param name="参数名" value="参数值"/>
</jsp:include>
注意:name属性不支持表达式,value属性支持表达式
获取参数:
request.getParameter(name);通过指定参数名获取参数值
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>include动态包含</title> </head> <body> <jsp:include page="header.jsp"></jsp:include> <h2>主体内容</h2> <jsp:include page="footer.jsp"></jsp:include> <%--使用动态包含传递参数--%> <% String str="Hello"; String url="footer.jsp"; %> <jsp:include page="<%=url%>"> <jsp:param name="uname" value="admin"/> <jsp:param name="msg" value="<%=str%>"/> </jsp:include> </body> </html>
JSP的四大域对象
1.page域对象
在当前页面有效,跳转后无效
2.request域对象
在一次请求中有效,服务端跳转有效,客户端跳转无效
3.session域对象
在一次会话中有效,服务端客户端跳转都有效
4.application域对象
在整个应用中有效
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>设置域对象</title> </head> <body> <% //设置page范围的域对象 pageContext.setAttribute("name1","zhangsan"); //设置request范围的域对象 request.setAttribute("name2","lisi"); //设置session范围的域对象 session.setAttribute("name3","wangwu"); //设置application范围的域对象 application.setAttribute("name4","zhaoliu"); %> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>获取域对象的值</title> </head> <body> <% //获取域对象中的值 out.print("page范围"+pageContext.getAttribute("name1")+"<br/>"); out.print("request范围"+request.getAttribute("name2")+"<br/>"); out.print("session范围"+session.getAttribute("name3")+"<br/>"); out.print("application范围"+application.getAttribute("name4")); %> </body> </html>
JSP跳转方式
1.服务端跳转
<jsp:forward page="跳转的页面地址"></jsp:forward>
2.客户端跳转
超链接
<a href=""></a>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>JSP的跳转</title> </head> <body> <%--JSP中服务端跳转--%> <jsp:forward page="index.jsp"></jsp:forward> <%--超链接跳转--%> <a href="index.jsp">跳转</a> </body> </html>
EL表达式
作用:
简化JSP代码
格式:
${域对象的名称}
操作对象:
EL表达式一般操作的是域对象,不能操作局部变量
操作范围:
page范围
当前页面
request范围
一次请求
session范围
一次会话
application范围
整个应用程序
注:
1.如果EL表达式获取域对象的值为空,默认显示空字符串
2.EL表达式默认从小到大范围去找,找到即止,如果四个范围都未找到,则显示空字符串
查找数据时可以使用四个域对象对应的空间对象,分别是
pageScope
requestScope
sessionScope
applicationScope
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式</title> </head> <body> <%-- 设置数据 --%> <% //设置page范围的域对象 pageContext.setAttribute("uname","zhangsan"); //设置request范围的域对象 request.setAttribute("uname","lisi"); //设置session范围的域对象 session.setAttribute("uname","wangwu"); //设置application范围的域对象 application.setAttribute("uname","zhaoliu"); //设置局部变量 String str="Hello"; %> <%--获取数据--%> 获取局部变量:${str}<br> 获取域对象:${uname}<br> 获取指定范围的域对象:<br> page范围:${pageScope.uname}<br> request范围:${requestScope.uname}<br> session范围:${sessionScope.uname}<br> application范围:${applicationScope.uname}<br> </body> </html>
获取List
获取List的size:${限域变量名.size()}
获取List的指定下标的值:${限域变量名[下标]}
获取Map
获取Map指定key的value值:${限域变量名.key}或${限域变量名["key"]}
获取JavaBean
获取JavaBean中的属性:${JavaBean对象.属性名}或${JavaBean对象.get属性名()}
注:JavaBean中属性字段必须提供get方法
<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Map" %> <%@ page import="com.xxx.po.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL表达式的使用</title> </head> <body> <% //list List<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); request.setAttribute("list", list); //Map Map map = new HashMap<>(); map.put("aaa","1111"); map.put("bbb",222); map.put("ccc",333); request.setAttribute("map",map); //JavaBean对象 User user=new User(); user.setUserId(1); user.setUname("zhangsan"); user.setUpwd("123456"); request.setAttribute("user",user); %> <h4>获取List</h4> 获取List的size:${list.size()}<br> 获取List的指定下标的值:${list[1]}<br> <h4>获取Map</h4> 获取Map指定key的value值:${map.aaa}--------${map["bbb"]} <h4>获取JavaBean</h4> ${user}<br> 获取JavaBean中的属性:${user.uname}-----${user.getUpwd()} </body> </html>
empty
判断域对象是否为空
为空,返回true;
不为空,返回false;
如果域对象中是字符串:
不存在的域对象:true
空字符串:true
null:true
如果域对象中是List:
null:true
没有长度(size):true
如果域对象中是Map:
null:true
空Map对象:true
如果域对象中是Map:
null:true
空对象:false
这篇关于JSP(JavaServer Pages)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20RabbitMQ教程:新手入门指南
- 2024-11-20Redis教程:新手入门指南
- 2024-11-20SaToken教程:新手入门指南
- 2024-11-20SpringBoot教程:从入门到实践
- 2024-11-20Java全栈教程:从入门到实战
- 2024-11-20Java微服务系统教程:入门与实践指南
- 2024-11-20Less教程:初学者快速上手指南
- 2024-11-20MyBatis教程:新手快速入门指南
- 2024-11-20QLExpress教程:初学者快速入门指南
- 2024-11-20订单系统教程:从入门到实践的全面指南