JSP概念、EL表达式与JSTL标签

JSP介绍
全称: Java Server Pages,java服务器页面。和Servlet一样,是sun公司定义的一种动态网页开发技术。
特点: 基于html模版,可以在html模版嵌入java代码和jsp中的标签。

tomcat可以包含的资源:
静态资源:
html:静态页面。
CSS:修饰美化html页面。
JavaScript:动态修改html页面和css样式。
动态资源
Servlet:运行在服务器上的java小程序。适合编写java代码,写网页困难,适合业务处理
Servlet三个用途:
1、接受浏览器发送的数据
2、转发重定向
3、 负责调用业务层
JSP:适合编写动态内容,不适合写java代码,主要用于显示页面。

JSP优势
1、与纯 Servlet 相比: JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句
2 、与JavaScript相比: 虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
3 、与静态HTML相比: 静态HTML不包含动态信息

JSP语法
JSP页面中可以包含指令,Java语句、变量、方法或表达式、静态内容(html、css、javascript)
语法格式:

指令:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

脚本
<% java代码 %>
<% int i=10;%>
脚本表达式:
输出变量: <%=2+3%>等价于输出语句 (注意:不能使用分号来结束表达式)

声明:

<%!
定义方法
%>    

静态资源:HTML、CSS、JS

JSP注释

格式: <%-- 网页注释 --%>:安全,省流量
网页注释:<!-- 网页注释 --> ,特点,不安全,耗流量  
JSP指令

告诉JSP引擎如何解析jsp文件中的内容
语法: <%@ 指令名称 属性名称1=“属性值1” 属性名称2=“属性值2” …%>
示例:

<%@ page language=*"java"* contentType="text/html; charset=UTF-8"  pageEncoding=*"UTF-8"*%>
page指令

作用:用于定义JSP页面的各种属性

import和java代码的含义一样

<%@ page import="java.util.Date,java.util.List"%>

或者:

<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>

session:是否会自动创建session对象,默认值为true;
buffer:JSP中有java.servlet.jsp.JspWriter输出字符流。设置输出数据的缓存大小。默认8kb.
errorPage:如果页面中有错误,跳转到指定的资源 errorPage="/uri" 如果写“/”则代表当前应用的目录 下,绝对路径。 如果不写“/”则代表相对路径
isErrorPage:是否创建throwable对象。默认是false
contentType:等同于response.setContentType(“text/html;charset=utf-8”);服务器发送客户端的内容编码
pageEncoding: Jsp文件本身的编码
isELIgnored: 是否忽略EL表达式。 默认是false,支持表达式;是true表示不支持表达式,${1+1};false输出结果2 true按照原样输出

include指令

静态包含: 把其它资源包含到当前页面中 <%@ include file="header.jsp" %>
动态包含: <jsp:include page=“header.jsp"></jsp:include>

两者的区别: 翻译的时间段不同(可在tomcat工作目录下查看)
静态包含: 在翻译时就把两个文件进行合并,运行时效率高。属于同一个页面。
动态包含: 不会合并文件,当代码执行到include时,才包含另一个文件的内容。不属于同一个页面

taglib指令

作用: 在JSP页面中导入JSTL标签库。JSTL替换jsp中的java代码片段。

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

JSP的6个动作标签
jsp:include 动态包含
jsp:forward请求转发
jsp:param 请求设置参数
注意:主页面中设置编码类型utf-8 jsp:param的value属性才可以使用中文,不然会乱码
jsp:useBean 创建一个对象
jsp:setProperty给指定的对象属性赋值
jsp:getProperty取出指定的对象属值

内置对象

Servlet中内置对象:request 、response、session、application、out(PrintWriter)

Jsp本质是Servlet,包含九个内置对象

对象名 类型 说明
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession 由session=“true”开关
application javax.servlet.ServletContext
config javax.servlet.ServletConfig
exception java.lang.Throwable 由isErrorPage=“false”开关
out javax.servlet.jsp.JspWriter javax.servlet.jsp.JspWriter
pageContext javax.servlet.jsp.PageContext
page java.lang.Object当前对象this 当前servlet实例

r r s a c e o p p

代码演示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP内置对象</title>
</head>
<body>
<%
//页面上下文对象
pageContext.setAttribute("msg", "我是PageContext对象");
System.out.println(pageContext.getAttribute("msg"));
//请求对象
System.out.println("请求对象:"+request);
//响应对象
response.getWriter().print("OK");
//当前页面对象
System.out.println(page.getClass());//输出到控制台
//输出对象
out.print(48);//输出到浏览器:48
out.write(48);//输出到浏览器:0
int no=101;
//会话对象
System.out.println(session);
//全局对象
System.out.println(application.getRealPath("/"));
//配置对象--初始化参数
System.out.println(config.getServletName());
//异常对象
System.out.println(exception);
System.out.println(application);
application.setAttribute("author", "1711");
%>
<h1>jsp脚本:<%=no %></h1>
<h1>jsp脚本:<% out.print(no); %></h1>
</body>
</html>

jsp的out和getWriter()方法的区别
1、out是JspWriter类型,getWriter()是PrintWriter类型
2、out输出到缓冲区中,没有写到response中,getWriter()直接写到response中。
3、out一般用在jsp中,getWriter()用在Servlet中

pageContext对象

pageContext作用:
1、代表页面上下文,获取其他八个内置对象
2、作用容器使用

域对象

jsp中共包含四个域对象分别是request、session、application、page

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值