JavaWeb——day37 jsp 3大指令,6个动作标签,9个内置对象,EL表达式

jsp

本质:servlet
目的:简化页面书写

注释

  • 标记语言注释
    缺点:
    1.会发送到客户端
    2.不能写java代码
  • jsp 注释
    优点:
    1.不会发送到客户端
    2。能注释java代码

3大指令

  • 概念:配置页面属性或者是倒入一些额外的内容
  • 格式:<%@ 指令名 属性名=属性值 &>
  • 分类:
    page:配置jsp页面的属性
    include:静态包含
    taglib:包含额外的内容
1.page
* page指令:
			language :指定jsp页面使用的语言。只有一个值 java
			*import :导入软件包
			*pageEncoding :设置页面编码
				1.指定jsp文件的编码
				2.告诉浏览器页面使用的编码格式
			autoFlush:自动刷新
			buffer:缓冲区大小
			
			*errorPage:指定错误页面,当页面发生异常时,指定跳转的页面
				* 一般在开发完成后,会在web.xml中通过<error-page>标签来配置整个项目的错误页面

				 <error-page>
  					<error-code>500</error-code>
  					<!-- <exception-type></exception-type> -->
  					<location>/500.jsp</location>
  				</error-page>
			<!--    <error-page>
  				<error-code>404</error-code>
  				<location>/404.jsp</location>
 				 </error-page>
  			 -->
			
			isErrorPage:是否是错误页面
				true:是错误页面,可以使用内置对象exception
				false:不是
<%@ page contentType="text/html;charset=utf-8" language="java" pageEncoding="utf-8" import="java.io.FileOutputStream" autoFlush="true" buffer="8kb" errorPage="500.jsp" %>
<%@include file=""%>

1.taglib

导入额外的内容,如:导入jstl标签
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>


<%--导入常用的第三方标签库,比如常用的c标签--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.include
  • include:静态包含
    * 包含后,只会存在一个.class文件。
<%--一个页面会把另一个页面包含进来
静态包含:通过静态代码块把页面包含进来,不会为包含进来的页面单独生成一个java类文件
--%>
<%@include file="index.jsp"%>

6个动作标签

概念:替换java代码,简化书写,提高可读性
签:替换Java代码。简化书写,提高可读性

  • JavaBean:一种符合规范的java类
    1.私有所有的成员变量
    2.提供公共的访问方式 setter 或者 getter
    3.提供空参构造
    domain
    pojo
    entity
    beans
<jsp:useBean> Person p = new Person()
			使用一个ID和一个给定作用范围和同一ID的JavaBean相关联
<jsp:setProperty> p.setName(“zhangsan”)
			设置JavaBean的属性值
<jsp:getProperty> String name = p.getName()
		    取得JavaBean的属性值
<jsp:include> 动态包含
			请求时文件包含
			* 多个.class字节码文件
<jsp:forward> 转发
			接受用户输入并将请求分派给另一页面
<jsp:param> 传递请求参数

<jsp:useBean id="d" class="org.westos.domain.User"  >
    <jsp:setProperty name="d" property="username"></jsp:setProperty>
    <jsp:setProperty name="d" property="password"></jsp:setProperty>

    <jsp:getProperty name="d" property="username"></jsp:getProperty>
    <jsp:getProperty name="d" property="password"></jsp:getProperty>

</jsp:useBean>
<%--动态包含--%>
<jsp:include page="index.jsp"></jsp:include>

<%--内部转发标签--%>
<%--原来--%>
<%
    request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request,response);
%>
<%--现在,记住前面的/不要自己加--%>
<jsp:forward page="WEB-INF/index.jsp"></jsp:forward>

9个jsp内置对象

概念:当JSP转换成Servliet时候,9个内置对象全部都初始化好了
分类

application:ServletContext
session:HttpSession
request:HttpServletRequest
pageContext:PageContext

out:JspWriter
response:HttpServletResponse
config:ServletConfig
page:this
exception: Throwable

pageCotext:
  1. 域对象:页面域
  2. 获得其他八个内置对象,可以在非jsp环境下使用其他的内置对象.
 <%ServletRequest request1 = pageContext.getRequest();
    ServletConfig servletConfig = pageContext.getServletConfig();
    HttpSession session1 = pageContext.getSession();
    pageContext.setAttribute("num", 100);

%>
out和response.getWriter()

在使用对象向页面输出信息时,采用out

EL表达式

概念:

jsp内的一种语法,为了替代脚本,el可以取出来域中的数据

作用

1.获取域中的数据
2.执行运算
3.获取常见的web对象
4.调用java方法

格式

${el表达式}

1.获取域中的数据

${pageScope|requestScope|sessionScope|applicationScope.属性名}
以后经常使用:
${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找
若查找不到,返回" "

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="org.westos.domain.Person" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/9/8
  Time: 16:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--1获取域中的数据,展示在页面上--%>
<%
    pageContext.setAttribute("p","ppppp");
    request.setAttribute("r","rrrrr");
    session.setAttribute("s","sssss");
    application.setAttribute("a","aaaaa");
%>
<%--传统的取法--%>
<%=pageContext.getAttribute("p")%>
<%=request.getAttribute("r")%>
<%=session.getAttribute("s")%>
<%=application.getAttribute("a")%>
<%--用EL表达式进行取--%>
${pageScope.p}
${requestScope.r}
${sessionScope.s}
${applicationScope.a}

<%--用数组存键值的形式存到集合里面,el表达式取出来--%>
<%
    String[] str={"第一个人","第二个人","第三个人"};
    request.setAttribute("arr",str);
    ArrayList<Integer> list = new ArrayList<>();
    list.add(100);
    list.add(200);
    request.setAttribute("jihe",list);
%>
<%--用传统的方法取出来--%>
<%
    //先把大集合取出来
    String[] arr = (String[]) request.getAttribute("arr");
    //再把里面的小集合取出来
    String[] jihe = (String[]) request.getAttribute("jihe");
    //取出来索引一
    Integer integer = list.get(0);
    //打印在页面上
    response.getWriter().write(integer);
    //打印在控制台
    out.write(integer);
%>
<%--用EL表达式取出来--%>
${arr[0]}
${arr[1]}



<%--EL表达式支持运算--%>
${1>2?"大于":"小于"}
${100+200+100*3}
<%--EL表达式支持调用java的方法,将集合中的键值取出来--%>
${"afasfsa".length()}
${jihe.get(0)}
<%
    HashMap<String, String> map = new HashMap<>();
    map.put("你","是谁");
    map.put("我","不认识你");
    request.setAttribute("map",map);
%>
<%--传统方法取出来--%>
<%
    HashMap<String, String> map1 = (HashMap<String, String>) request.getAttribute("map");
    request.getAttribute("map");
    String value = map1.get("你");
    out.write(value);
%>
<%--EL取出map中的数据--%>
${map.你}
${map.get("我")}


<%
    Person person = new Person();
    person.setName("你叫啥");
    person.setAge(50);
    session.setAttribute("p",person);


%>
${p.name}
${p.age}

<%
    Person person5 = new Person();
    person5=null;

    session.setAttribute("p5",person5);
%>
<%--
 empty 可以判断一个对象是否null 也可以判断一个容器的长度是否为0
--%>

${p5==null}

${empty p5}

${not empty p5}

${pp.size()==0}
${empty pp};


<%--通过el表达式动态获取项目路径--%>
<a href="/20190906_JSP__war_exploded/login">login</a>
<%--${pageContext.request.contextPath}--%>
<a href="${pageContext.request.contextPath}/login">login</a>
</body>
</html>

</body>
</html>

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值