目录

  • java脚本代码
  • JSP指令
    • Page指令
    • include指令
    • taglib指令
  • JSP隐式对象
    • out、response
    • JSP作用域隐式对象
  • jsp动作
    • include动作
    • forward动作
    • param动作
    • useBean动作
    • setProperity动作
    • getProperty动作
  • EL(jsp表达式语言)
    • 基本语法
    • 隐式对象
  • jstl标签
    • Core核心标签
      • set标签
      • out标签
      • remov标签
    • 逻辑条件标签
      • **if标签**
      • **choose和when标签(相当于switch,case功能)**
      • 循环迭代标签

JavaServerPage,处理JavaWeb动态页面标准J EE服务器技术,必需运行在JSP/Servlet容器上。
JSP元素:JSP声明、java脚本、JSP表达式、JSP动作、JSP注释

java脚本代码

<% 任意合法代码 %>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><%!int dual = 18;final boolean YES = true;final boolean NO = false;boolean checkAge(int age){if(age > dual){return YES;}else{return NO;}}%>
</head>
<body>
</body>
</html>

表达式
<%= 表达式 %>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><%!int dual = 18;String color = "red";final boolean YES = true;final boolean NO = false;boolean checkAge(int age){if(age > dual){return YES;}else{return NO;}}%>
</head>
<body style="color: <%=color%>"><%=checkAge(2)%>
</body>
</html>

结果:

注释:
跟html一样

JSP指令

Page指令
include指令
taglib指令

Page指令

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" buffer="8kb" %>
<html>
<head><title>Title</title></head><body><%Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat();%>
</body>
</html>

buffer:内存大小
import : 导入包

include指令

将目标资源页面中内容在编译阶段合并到档期那JSP页面中来统一进行编辑(静态包含);目标如果是JSP文件则不生成单独的JDPjava文件;档期那JSP页面可以使用被包含页面的所有资源(java对象以及JS内容)
index.jsp:

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" buffer="8kb" %>
<html>
<head><title>Title</title>
</head>
<body><div class="top" style="height: 120px; width: 100%; "><%@ include file="top.jsp"%></div><div class="left" style="float: left; width: 30%; height: 600px; background: red"></div><div class="right" style="float: left; width: 70%; height: 600px; background: blue"></div>
</body>
</html>

top.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Top</title>
</head>
<body>
<div style='background: gray ; text-align: center ; line-height: 120px' >顶部</div></body>
</html>

结果:

taglib指令

出了点错误,明天解决了再写

JSP隐式对象

目标JSP页面被请求成功后,被创建的Java对象隐式地存在于JSP中
这些隐式对象名称固定,只能再JSP Java脚本中及JSP表达式中使用

out、response

out对象提供向页面输出文本信息功能
response对象实现对用户请求做出响应处理功能

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><% out.println("yes"); %>
</body>
</html>

结果:

response用法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><% out.println("yes"); %><%response.sendRedirect("222.jsp");%>
</body>
</html>

跳转到222.jsp页面

JSP作用域隐式对象

request:请求对象
pageContext:当前页面上下文作用域对象,主要提供本页面作用域中对象的试着及获取方法,pageContext作用域储存的对象只对当前JSP页面有效
session:是web会话最重要对象,表示用户和服务器交互的一个过程,此对象对于每个用户是私有的,只存储当前用户的个人信息,多个用户间的session对象是不透明的
aplication:表示当前整个web应用程序,被所有于web服务器交互用户共享

例子:
request和session实现用户登录
login1.jsp

    <form action="login2.jsp">用户名<input type="text" name="name"><br>密码<input type="text" name="password"><input type="submit"></form>

跳转到login2.jsp

<body><%String name = request.getParameter("name");String password = request.getParameter("password");if(name != null && !name.equals("") && name.equals("admin") &&password != null && !password.equals("") && password.equals("123456")){User user = new User(name,password);session.setAttribute("user",user);}%><a href="index.jsp" >访问主页面</a>
</body>

跳转到index.jsp,在它的top上显示:

<div style='background: white ; text-align: center ; line-height: 30px' ><%=((User)session.getAttribute("user")).getName()%><br><%=((User)session.getAttribute("user")).getPassword()%>
</div>

结果:



pageContext用法


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>pageContext</title>
</head>
<body><%pageContext.setAttribute("name","chen");%>当前从pageContext取出数据 :<%=pageContext.getAttribute("name")%>
</body>
</html>


其它
page,config,exception
用的比较少,下面展示exception的用法


<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp"%>
<html>
<head><title>Title</title>
</head>
<body><%double i = 27 / 0;%>
</body>
</html>

会报错,设置了errorPage=error.jsp,报错了就跳转到这个页面
error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head><title>Title</title>
</head>
<body>粗错了!<%exception.getMessage();exception.printStackTrace();%>
</body>
</html>

isErrorPage这个属性要设为true,否则无法使用exception对象
结果:

jsp动作

include动作

下面展示用include指令和用include动作分别插入一个jsp
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><div class="top"><%--用jsp动作来导入--%><jsp:include page="top.jsp"></jsp:include></div><div class="end"><%--用jsp指令来导入--%><%@include file="end.jsp"%></div></body>
</html>

top.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body style="text-align: center; font-size: 30px">这里是头部
</body>
</html>

end.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body style="text-align: center; font-size: 50px; background: yellow; color: red;">
这里是尾部
</body>
</html>

结果:

但style里的样式没有导入进去啊,也不知道什么原因

forward动作

等效于request对象获取RequestDispatcher并调用其forward方法功能

      <jsp:include page="end.jsp"></jsp:include>

param动作

      <jsp:include page="end.jsp"><jsp:param name="color" value="blue"/></jsp:include><jsp:forward page="end.jsp"><jsp:param name="color" value="blue"/></jsp:forward>

useBean动作

useBean动作实现在jsp页面中创建javaBean对象并设置其作用域范围,以实现javaBean的功能重用
属性:
id:必需,标识bean对象的唯一引用标识符
class:标识bean对象的实际类型
type:标识bean类的父类型名称
scope:试着bean对象的作用域(page,request,session,application)

Java Bean
Java Bean为可重用功能组件
分为 功能bean, 实体bean

定义标准:
1、必需是非抽象类或接口的普通类java组件
2、必需具有公共访问级别无参构造方法定义
3、建议通常将类属性定义private并设置set和get公共方法

<%@ page import="com.domin.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<jsp:useBean id="userObj" class="com.domin.User" scope="page"></jsp:useBean>
<%Object obj = pageContext.getAttribute("userObj");User sysUser = null;if(obj == null){sysUser = (User)obj;
%>
用户名:<%=sysUser.getName()%>
<% }
%>
</body>
</html>

setProperity动作

用来为某个bean对象的属性设置值

<body>
<jsp:useBean id="userObj" class="com.domin.User" scope="page"></jsp:useBean>
<jsp:setProperty name="userObj" property="name" value="liang"></jsp:setProperty>
<%Object obj = pageContext.getAttribute("userObj");User user = (User)obj;System.out.println(user.getName());%>
</body>

结果:控制台输出liang
当然可以通过param来用户给它赋值

<jsp:useBean id="userObj" class="com.domin.User" scope="page"></jsp:useBean>
<jsp:setProperty name="userObj" property="name" param="userName"></jsp:setProperty>
<%Object obj = pageContext.getAttribute("userObj");User user = (User)obj;System.out.println(user.getName());%>

在浏览器中,

控制台输出:

getProperty动作

用来获取某个bean对象的属性值

<jsp:useBean id="userObj" class="com.domin.User" scope="page"></jsp:useBean>
<jsp:setProperty name="userObj" property="name" value="liang"></jsp:setProperty>用户名:<jsp:getProperty name="userObj" property="name"/>

EL(jsp表达式语言)

基本语法

${表达式}

  <body><%String name = "chen";pageContext.setAttribute("user_name",name);Student stu = new Student("yang",23);pageContext.setAttribute("stuObj",stu);%>从作用域中取出对象:${user_name}<br>从作用域中访问复合类型对象:${stuObj.name}</body>

展示:

注意:这里的类中的属性一定要有get,set方法!!
运算符


隐式对象

EL表达式隐式对象是预定义好的EL对象,利用此对象可以访问此对象中的变量
请求参数隐式对象
index.jsp

  <a href="1.jsp?name=liang&age=11">点击访问el</a>

1.jsp

    ${"名字:"}${param.name}<%--判断参数是否为空--%>${empty param.name}

结果:

还有带有checkbox相关的参数的
index.jsp

  <form action="1.jsp" method="get"><input type="checkbox" name="likes" value="basketball">篮球<input type="checkbox" name="likes" value="football">足球<input type="checkbox" name="likes" value="paiqiu">排球<br><input type="submit" value="提交"/></form>

1.jsp

    第一个:${paramValues.likes[0]}<br>第二个:${paramValues.likes[1]}<br>第三个:${paramValues.likes[2]}

展示:
index一个复选框

1.jsp结果

EL cookie隐式对象
EL隐式对象cookie用来获取存储在客户端机器上的cookie信息
index.jsp

  <a href="/myweb/ELServlet">点击创建cookie</a>

ELSerrvlet:创建cookie

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Cookie cookie = new Cookie("user","liang");resp.addCookie(cookie);req.getRequestDispatcher("1.jsp").forward(req,resp);}

1.jsp

判断cookie是否为空:${empty cookie}<br>
cookie中的对象:${cookie["user"]}<br>
cookie中的代号:${cookie["user"].name}<br>
cookie中的值:${cookie["user"].value}

结果:

jstl标签

JSTL
JSP标准标签库,其使用java语言实现,为简化JSP页面制作开发的自定义功能标签,必需在JSP中使用taglib指令设置标签使用信息。
大致分为四类:Core,Format,XML,SQL

tip:在idea貌似要导入相关的jstl包,然后在jsp头顶加上

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

类似的语句

Core核心标签

通用标签:set、out、remove

set标签

用来设置一个变量并指定其作用域范围
var 设置变量的名称
value:设置变量的值,支持合法的表达式
scope:设置变量的作用域,默认为page
target:设置变量为一个对象
property:设置变量对象的属性与target合用

  <body><c:set var="name" value="liang" scope="page"></c:set><%=pageContext.getAttribute("name")%></body>

结果:

set设置复合类型的某个属性

out标签

用来输出一个变量的值,通常此标签使用少,常用EL表达式代替
value:以表达式方式查找目标变量
default:设置未找到时使用的默认值
escapeXml:设置是否解析xml及html标记

  <body><c:set var="name" value="liang" scope="page"></c:set><c:out value="${pageScope.name}" default="chen"></c:out><br><c:out value="${pageScope.age}" default="18"></c:out></body>

结果:

remov标签

    <c:set var="name" value="liang"></c:set>未删除之前:<c:out value="${pageScope.name}"></c:out><br><c:remove var="name"></c:remove>删除后:<c:out value="${pageScope.name}"></c:out>

结果:

逻辑条件标签

if标签

用来实现逻辑条件判断,条件成立则执行if标签内的内容
test必需属性,设置if标签boolean表达式
var设置此if标签计算结果的变量名称
scope设置变量的作用域
做个表格:

      <form action="/myweb/Servlet">姓名:<input type="text" name="name"><br>性别:<input type="radio" name="sex" value="man">男<input type="radio" name="sex" value="woman">女<br><input type="submit" value="提交"></form>

Servlet:

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Student stu = new Student();stu.setName(req.getParameter("name"));stu.setSex(req.getParameter("sex"));req.setAttribute("student",stu);req.getRequestDispatcher("1.jsp").forward(req,resp);}

(Student是一个有sex和name两个属性的自创类,懒得贴了)
1.jsp

<body><c:if test="${requestScope.student ne null}"><c:if test="${requestScope.student.sex eq 'man'}">${"这是个男同学"}</c:if><c:if test="${requestScope.student.sex eq 'woman'}">${"这是个女同学"}</c:if></c:if>
</body>

结果:

choose和when标签(相当于switch,case功能)

修改上面1.jsp代码,用choose和when来代替:

    <c:choose><c:when test="${requestScope.student.sex eq 'man'}">${"这是个男同学"}</c:when><c:when test="${requestScope.student.sex eq 'woman'}">${"这是个女同学"}</c:when></c:choose>

结果功能同if标签中的代码
当然,还有otherwise标签,跟java中default类似

        <c:otherwise>${"未知性别"}</c:otherwise>

循环迭代标签

foreach
index.jsp

    <a href="/myweb/servlet">点击进入servlet</a>

DataBase类:
(其中,Student类是一个由name和sex变量组成的类,不列出来了

package com.domin;
import java.util.ArrayList;
public class DataBase {private static String name;private static ArrayList<Student> carList = new ArrayList<Student>();static {name = "NO1,NO2,NO3,NO4";carList.add(new Student("chen","男"));carList.add(new Student("hell","男"));carList.add(new Student("mike","女"));carList.add(new Student("john","男"));}public DataBase() {}public static String getName() {return name;}public static void setName(String name) {DataBase.name = name;}public static ArrayList<Student> getCarList() {return carList;}public static void setCarList(ArrayList<Student> carList) {DataBase.carList = carList;}
}

1.jsp


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><c:if test="${sessionScope.student ne null}"><table style="width: 100%" border="1"><tr><th>序号</th><th>姓名</th><th>性别</th></tr><c:forEach items="${sessionScope.student}" var="stu" varStatus="sta"><tr><td>${sta.index+1}</td><td>${stu.name}</td><td>${stu.sex}</td></tr></c:forEach></table></c:if>
</body>
</html>

结果:

forTakens
forTakens标签用来对目标字符串按照给定的分隔符进行分割迭代
delims:设置被操作的集合查找表达式
servlet:

        req.getSession().setAttribute("name",DataBase.getName());resp.sendRedirect("1.jsp");

1.jsp

    <c:if test="${sessionScope.name ne null}"><c:forTokens items="${sessionScope.name}" delims="," varStatus="sta">第${sta.count}个人:${sta.current}<br></c:forTokens></c:if>

结果:

java | (二十七) JSP(1)指令,隐式对象,动作,标签,EL表达式相关推荐

  1. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构

    JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...

  2. JSP九大隐式对象详解

    九大隐式对象可以分为四类 第一类:与输入输出有关的request请求对象response响应对象out输出对象第二类:与作用域范围有关的pageContext页面作用域request请求作用域sess ...

  3. 大数据WEB阶段(十三)JSP(一)JSP基础、JSP指令详解、四大域九大隐式对象总结

    JSP基础.指令.四大作用域九大隐式对象总结 (一)JSP基础 一.JSP概述 jsp其实是java动态页面技术 HTML可以用来组织页面但是HTML是一种静态web资源技术无法嵌入动态数据. Ser ...

  4. jsp隐式对象_JSP隐式对象

    jsp隐式对象 JSP Implicit Objects are very useful for developers. This is the second post in the series o ...

  5. java 九大内置对象_JSP九大内置对象(隐式对象)

    一.JSP内置对象简介 JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象. 开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. 1.JSP内置对象 ...

  6. JSP 三 :九大隐式对象

    2019独角兽企业重金招聘Python工程师标准>>> ###细节 每个JSP页面在第一次被访问时,web容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JS ...

  7. 23.JSP 隐式对象

    JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 reque ...

  8. java的隐式对象_java常见面试题:隐式对象有哪些?

    关于java的知识点是非常的多的,这也是学习java的难点所在.今天来为大家分享一些java常见面试题,一起来了解一下吧. 1.java中9大隐式对象有哪些?如下图所示: 2.数据库里面的索引和约束是 ...

  9. Java - 说一下表达式语言(EL)的隐式对象及其作用。

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net EL的隐式对象包括:pageContext.init ...

最新文章

  1. “金主爸爸快回来交学费吧!”疫情让中国留学生难以返校,国外高校面临资金短缺...
  2. [LoadRunner]UTF8字符格式
  3. mysql5.5编译安装参数_mysql-5.5源码编译安装(附参数对照表)
  4. CSS清除浮动的五种常用方法
  5. Windows请求连接 Vmware+Ubuntu14被拒绝 的幽怨诉说
  6. Go实现 爬虫v0.2
  7. 在Array原型链上扩展remove,contain等方法所遇到的坑
  8. 前端将图片等文件变成二进制流再存入数据库,并实现二进制流显示及下载
  9. chrome 如何官网下载谷歌浏览器离线安装包
  10. Acrel-3000电能管理系统保证企业生产人员的生命安全,提高生产人员的工作效率
  11. 3DMAX到底该如何布线?
  12. HEVC(h265)学习
  13. 2017计算机中小学水平考试,2017全国计算机等级考试试题
  14. listen的第二个参数详解
  15. 2022-2028全球丁二磺酸腺苷蛋氨酸行业调研及趋势分析报告
  16. Android Toast控件
  17. 农民伯伯的福利到了,AR技术让种地更加easy
  18. 分析tga图像格式文件
  19. 数学模型tricks | 大M法线性化注意事项
  20. 注音符号与汉语拼音对照表

热门文章

  1. 万门大学PPT课程(二)2.1、2.2
  2. 12306余票及票价查询
  3. 精通正则表达式(第3版)
  4. hdu HDU Today2112
  5. 【原创】用VMware 8安装Ubuntu 12.04详细过程(图解)
  6. 计算机网络 王道论坛2
  7. Ucenter 整合第三方应用
  8. 《TCP/IP协议族》:POP3协议
  9. Java代码给csv文件加水印_闪电PDF虚拟打印机如何给文件加上水印?
  10. 过年帮同学做Windows 7/8系统的心得