关于jsp的那点事
来源:互联网 发布:c语言cout 编辑:程序博客网 时间:2024/05/29 13:59
一、JSP简介
1、JSP=HTML+Java
2、JSP的原理(重点):记住JSP中的内容与Servlet的对应关系
JSP就是Servlet,容器会把JSP翻译成Servlet,并编译Servlet源码,执行Servlet。
3、JSP&Servlet
Servlet:作为控制器来用(尽量不要输出内容到界面上)
JSP:显示结果数据(尽量不要写Java脚本)
一、JSP的基本语法(必须理解;实际开发中不用)
1、JSP模版元素:指JSP中的HTML的内容,主要目的:输出排版
2、JSP脚本表达式:
作用:把数据输出到页面上
语法:<%=表达式%>
3、JSP脚本片段:
作用:在JSP中输出Java逻辑代码
语法:<%
语句1;
语句2;
%>
对应Servlet:原封不动的出现在_jspService()方法中
小练习:
4、JSP声明
作用:定义一些类成员(实例变量、静态变量、实例方法、静态方法、静态代码块)
语法:<%!
你的定义
%>
5、JSP注释
作用:注释
语法:<%--这是注释--%>
特点:服务器根本不会把注释掉的内容翻译到对应的Servlet代码中
注意:与HTML注释的区别
二、JSP的指令(一般)
1、指令的作用是什么?
是为JSP引擎(服务器)而设计的,指示服务器该如何处理JSP页面中的内容的。
2、有哪些指令?
page、taglib、include
语法:<%@指令名称 指令属性1=”值1” 指令属性2=”值2” 。。。%>
3、每个指令的具体细节有哪些?
3.1page指令:
作用:定义JSP页面的各种属性
属性:
l import:导入JSP页面中java脚本需要用到的类或包。
<%@page import=”java.util.Date,java.util.UUID”%>
或者
<%@page import=”java.util.Date”%>
<%@page import=”java.util.UUID”%>
注意:服务器会自动导入
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
l session:指示是否产生HttpSession对象。默认值是true。
l buffer:JSP中的HTML的输出都是用的JspWriter的字符输出流。该属性指定输出流的缓存大小。默认8Kb
l errorPage:指定当JSP出现异常时转向(请求转发)的页面地址。该地址如果以”/”开头,“/”代表着当前应用;如果不是以”/”开头,表示的是相对路径。
另外一种方式:配置全局错误提示页面。
修改web.xml
l isErrorPage:指示是否产生exception内置对象。默认值是false
l contentType:和响应消息头Content-Type作用一样。HttpServletResponse.setContentType(); text/html;charset=UTF-8
l pageEncoding:指示服务器在翻译JSP时采用的编码
特点:还有contentType的作用
l isELIgnored:是否忽略EL表达式。默认是false(不忽略)
小技巧:更改JSP采用的默认编码
taglib指令:
作用:引入外部的标签库(JSTL)
属性:
uri:外部标签的名称空间
prefix:前缀
<%@ tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
include指令:
作用:包含。静态包含
属性:
file:被包含的页面的地址。”/”表示当前应用。不以”/”开头,表示相对路径
能用静的不用动的
静态包含:
动态包含: <jsp:includepage="/08.jsp"></jsp:include>
三、JSP的动作元素(了解)
1、动作元素就是JSP内置的标签
2、jsp:include:实现动态包含
page:指定被包含的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
3、jsp:forward:实现请求转发
page:指定转发的目标资源的URL地址。如果以”/”,代表着当前应用。否则表示的是相对路径
4、jsp:param:包含或转发时传递请求参数
四、JSP的九大隐式对象(很重要)
1、JSP对应的Servlet的service方法中的局部变量
2、JSP的九大隐式对象(注意与EL隐式对象的区别)
引用名称
代表的类型
备注
request
javax.servlet.http.HttpServletRequest
response
javax.servlet.http.HttpServletResponse
session
javax.servlet.http.HttpSession
如果page指令的session=”false”则没有该对象
application
javax.servlet.ServletContext
config
javax.servlet.ServletConfig
page
当前的Servlet对象
exception
java.lang.Throwable
如果page指令的isErrorPage=”false”则没有该对象
out
javax.servlet.jsp.JspWriter
和PrintWriter作用一样
pageContext
javax.servlet.jsp.PageContext
3、out内置对象简介(了解)
作用和PrintWriterpw = HttpServletResponse.getWriter()作用一样,都是向客户端输出请求正文数据。
注意:这个流有缓存
4、pageContext隐式对象详解(特别重要)
三大作用:
a、本身是一个域对象(页面范围),还能操作其他三个(ServletRequest HttpSession ServletContext)域对象中的数据
voidsetAttribute(String key,Object value)
voidremoveAttribute(String key)
ObjectgetAttribute(String key)
pageContext页面域(作用域)范围。pageContext.setAttribute("p", "ppp");//只能本页中能取出来
voidsetAttribute(String key,Object value,int scope)
voidremoveAttribute(String key,int scope)
Object getAttribute(Stringkey,int scope)
int Scope:是常量。
PageContext.PAGE_SCOPE.表示页面范围
PageContext.REQUEST_SCOPE.表示请求范围
PageContext.SESSION_SCOPE.表示会话范围
PageContext.APPLICATION_SCOPE.表示应用范围
注意:
<%
pageContext.setAttribute(“p”,”ap”,PageContext.APPLICATION_SCOPE);
//application.setAttribute(“p”,”ap”);和以上代码等价
%>
ObjectfindAttribute(String key):依次从页面、请求、会话、应用范围查找指定名称的数据。找到为止。
b、获取其他八个JSP隐式对象
ServletRequest request =pageContext.getRequest()
....
c、提供了包含和转发的简易方法
pageContext.forward("/1.jsp");
pageContext.include(“/1.jsp”);
五、四大域对象(很重要)
1、四大域对象
PageContext:存放的数据只能当前页面中才能取出来
ServletRequest:存放的数据只能在一次请求中才能取出来
HttpSession:存放的数据只能在一次会话中才能取出来
ServletContext:存放的数据在当前应用中才能取出来(线程安全)
2、作用:在不同的资源之间传递数据
六、EL表达式(特别重要)
1、EL的主要作用:向界面输出数据。替换JSP中的java表达式(<%=%>)
2、基本的语法形式:
${EL表达式}
3、EL能从哪里获得数据呢?
四大域对象中
4、EL具体功能详解
a、获取数据:
a.1运算符:
l 点运算符。就是调用对象的getter方法
l 中括号运算符。[]就是调用对象的getter方法
${p.name}=${p['name']}=${p["name"]}
a.2获取普通Java类的属性的值、List中的元素、Map中的value
b、进行数学或逻辑运算
empty运算符:判断一个对象是否为null,字符串是否为””,还能判断一个集合中是否有元素。
c、11个隐式对象(难点,注意与JSP隐式对象的区别)
EL隐式对象
类型
对应的JSP隐式对象
备注
pageContext
javax.servlet.jsp.PageContext
pageContext
一样
pageScope
java.util.Map
没有
表示页面范围数据
requestScope
java.util.Map
没有
表示请求范围数据
sessionScope
java.util.Map
没有
表示会话范围数据
applicationScope
java.util.Map
没有
表示应用范围数据
param
java.util.Map
没有
单个请求参数。key是名称,value是值
paramValues
java.util.Map
没有
重名请求参数。key是名称,value是String[]
header
java.util.Map
没有
单个请求消息头。key是头名,value是头值
headerValues
java.util.Map
没有
重名请求消息头。key是头名,value是String[]
initParam
java.util.Map
没有
web.xml中配置的全局参数
cookie
java.util.Map
没有
代表是一个Map。key是cookie对象的name,value是cookie对象
d、EL函数
- 关于jsp的那点事
- 关于上司的那点事
- 关于黑客的那点事
- 关于8086的那点事
- 关于程序员的那点事
- 关于计算机的那点事
- 关于CGI的那点事
- 关于彩虹表的那点事
- 关于铁道部的那点事
- 关于JAVA集合的那点事
- 关于模式的那点事
- 关于vs2010的那点事
- 关于connectionstring字符串的那点事
- 关于公司的那点事
- IOS 关于分辨率的那点事
- 关于进程的那点事
- 关于div的那点事。。。
- 关于js datetime的那点事
- HDU ACM 11 2083 简易版之最短距离
- 完全背包问题 ------ java
- x86下的C函数调用惯例
- EL表达式获取值栈数据的源码分析
- ios 编写UIControl子类
- 关于jsp的那点事
- 工程师成长之路:工作1-3年工程师如何突破瓶颈期?--lgg201
- Lucene 6.0中BooleanQuery
- Unity3d和服务器交互
- python_scapy铸造,发送数据包
- php XML 对象数组转换成普通的数组,php取出xml属性
- 51-DHT11实现温湿度的检测显示于Lcd1602
- py2exe转换参数
- 区块链学习笔记(零)Bitcoin开发环境的搭建