什么是JSP
- JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应,JSP文件命名为xxx.jsp。
- 与Servlet不同,JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容。
- JSP和Servlet一样可以提供动态的HTML响应。不同的是这个以.jsp结尾的文件以THML为主内嵌少量的Java代码而Servlet是纯Java代码。
JSP与Servlet的关系
当浏览器请求JSP时,JSP经过转译形成对应的Java文件,Java文件经过编译链接形成.java文件。.java文件会用来创建Sercvlet对象,这个对象就可以提供动态HTML响应。
JSP 语法结构
声明区
- 作用
用来定义变量 或者定义方法的
- 语法
<%! 在这里 定义变量 或者 定义方法的 %>
表达式
- 作用
用来取变量 的值 或者 方法的返回值 或者对象对应的属性值 并做出展示
- 语法
<%= 表达式 %>
代码块 — 代码片段
- 作用
用来编写Java代码
- 语法
<% %>
JSP 中的注释
<!-- 标记语言注释--> 它是要发给浏览器的
<%-- JSP注释 --> 不发给浏览器
JSP中的指令
- 语法
<%@指令名 属性=“值” 属性2=“值” %>
- JSP 中的 三大指令作用 以及属性 属性的作用
page 指令
作用:用来导包 和 做一些页面属性的设置
属性:
import 用来导包
errorPage 当JSP出现错误时,跳转到显示比较友好的一个页面上
isErrorPage 是不是一个错误 页面 如果是则可以使用exception对象来获取异常信息。
contentType 页面以什么格式和编码进行显示数据
taglib指令
作用:用来导入变迁库的指令
属性:
prefix 前缀 用来指定标签库的代号 短名
uri 统一资源标识 用来指定标签库的位置
include 指令
作用:用来包含特定页面的指令 静态包含
属性:
file 用来指定包含的页面
JSP的动作
-
语法:
<jsp:动作名 属性="值"> </jsp:动作名> 如果中间没有内容 还可以简写成<jsp:动作名 属性="值" />
-
动作 动态包含
<jsp:include> 也是用来包含页面的 只不过和静态包含的区别是先翻译成class文件 再进行包含! 而静态包含 直接把页面包含进来 再翻译成class。 还可以向被包含页面 通过<jsp:param name="" value="" /> 传递参数
JSP内置对象
在JSP中 不用定义 就可以直接使用的对象 叫内置对象。
在JSP中 转换成Servlet 时 会自动追加这些变量的定义。
####### JSP中的九大内置对象
1.out JspWriter 向JSP对应位置输出内容
2.request HttpServletRequest 封装Http请求信息的对象
3.response HttpServletResponse 封装Http响应信息的对象
4.session HttpSession 封装会话信息的对象
5.pageContext PageContext 封装页面上下文信息的对象
6.page Object JSP页面本身
7.application ServletContext 封装servlet上下文信息的对象
8.config ServletConfig 封装servlet配置信息的对象
9.exception Excpetion 封装异常信息的对象
九大内置对象对应的API
out JspWriter 哪里出现写哪里
println write
PrintWriter 不管出现在哪里 都是从头开始写内容
request
request.getParameter("name") 根据name 获取对应的参数值 返回值String
request.getParameterValues("name") 根据name 获取对应的参数值的数组
request.setCharacterEncoding("utf-8") 设置参数的编码
request.setAttribute("key(名字)",Object) 设置属性值
request.getAttribute("key(名字)") 根据key(名字) 获取对应的值 返回值Object
request.removeAttribute("key(名字)") 根据key(名字) 删除对应的值
request.getRequestDispatcher("url") 获取转发器
request.getCookies() 获取请求的对应Cookie数组
request.getMethod() 获取请求方式get post put delete
request.getServletContext() 获取servlet上下文对象
request.getSession() 获取session 如果session 失效则创建新的
request.getSession(false) 获取session 如果session 失效则返回null
request.getServletPath() 获取文件路径 项目名后面的部分
request,getRequestURL() 获取文件编码 问号前面的部分
request.getReuqestURI() /项目名+ServletPath
request,getQueryString() 获取问号后面的部分
request.getLocalPort() 获取服务器端口号
request.getRemotePort() 获取客户端端口号
request.getLoaclAddr() 获取服务器地址
request.getRemotePort() 获取访问服务器的客户端地址
response HttpServletResponse
response.getWriter() 获取向浏览器输出流对象
response.setContentType("text/html;charset=utf-8") 设置相应格式和编码
response.sendRedirect("url") 实现重定向
response.sendError(状态码,"错误消息") 设置错误编码
encodeRedirectURL("url") 恢复jsessionid 传输
session HttpSession
session.setAttribute("key",Object) 设置属性值
session.getAttribute("key") 根据key 获取对应的值
session.removeAttribute("key") 根据key 删除对应的值
session.setMaxInactiveInterval(int seconds) 设置最大不活动周期
session.invalidate() 立即失效
session.getId() 获取session的id
application ServletContext
application.setAttribute("key",Object) 设置属性值
application.getAttribute("key") 根据key 获取对应的值
application.removeAttribute("key") 根据key 删除对应的值
application.getRealPath("WebContext下的文件名") 获取WebContext 真是磁盘路径
application.getInitParameter("name") 获取web,xml 全局初始化参数对应的值
pageContext 页面上下文
pageContext.setAttribute("key",Object) 设置属性值
pageContext.getAttribute("key") 根据key 获取对应的属性值
pageContext.removeAttribute("key") 根据key 删除对应的属性值
pageContezt.getXX() 可以管理其他内置对象 进而获取其它的八个内置对象
page 页面对象本身 Object
config ServletConfig
获取servlet 信息的对象
config.getInitParameter("name") 获取针对某个具体的servlet的初始化参数
config.getServletName() 获取servlet的名字
config.getServletContext() 获取servlet上下文
exception 所有异常的父类是Throwable
exception.getMessage() 获取异常消息
只有isErrorPage="true" 才可以使用exception对象
errorPage 如果发生错误 就跳转到错误页面 局部异常处理
还可以通过 配置web.xml 配置 全局异常处理