JSP 语法
jsp 声明
定义的变量是全局变量
<%! %>
jsp 程序段(jsp 脚本)
在其中声明的变量是局部变量
<% %>
jsp 表达式
在 jsp 页面中执行的表达式
<%= 表达式 %>(注意:表达式不以分号结束)
jsp 注释
html 注释;暴露给客户端
<!-- 注释 -->
jsp 注释:只在编辑代码时可见,不会爆露给客户端
<%-- 注释 --%>
在 jsp 程序段中 java 的注释可以使用
JSP 页面的生命周期
- 若第一次请求此 JSP,JSP 引擎把 JSP 文件转换成为一个 Servlet ,生成字节码文件,并执行 jspInit();解析生成的字节码文件,并执行 jspService();若不是第一次请求,则直接拿字节码文件进行执行;用 jspDestroy() 进行销毁;
- jspService() 方法被用来处理用户请求。每次请求 JSP 引擎会创建一个新的线程进行处理,多线程并发请求处理。
JSP 编译指令
- jsp 设置属性,获取 jsp
Page 指令
主要指定脚本指令、引入外部文件等;可以包含多个 page 指令
<%@ page language="java"(脚本语言) contentType="text/html;charset=UTF-8"(返回给浏览器,指定浏览器解析的类型) pageEncoding="UTF-8"(文档内容类型) import="" errorpage="errorpage.jsp"(当 jsp 抛出错误信息时,返回这个页面) %> <%@ page import="java.util.ArrayList"(引入 java 包) %>
include 指令
- 将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面的 JSP 语句
taglib 指令
- 使用标签库定义新的自定义标签,在 JSP 页面中启用定制行为
JSP 内置对象
内置对象简介
- JSP 内置对象是 web 容器创建的一组对象,不使用 new 关键字就可以使用的内置对象;
out 对象
- out 对象是 JspWriter 类的实例,是向客户端输出内容常用的对象
- 常用方法:
- println()
- clear()
- cleanBuffer()
- flush()
- getBufferSize()
- getRemaining()
- isAutoFlush()
- close()
request 对象
- request 对象是 HttpServletRequest 类的实例。request 对象具有请求域,即完成客户端的请求之前,该对象一直有效
- 常用方法:
- getParameter(String)
- getParameterValues(String)
- setAttribute(String,Object)
- getAttribute(String)
- getContentType()
- getProtocol()
- getServerName()
- getServerPort()
- getCharacterEncoding()
- setCharacterEncoding()
- getContentLength()
- getRemoteAddr()
- getRealPath(String)
- request.getContextPath()
- post 请求乱码问题
- 解决:通过
request.setCharacterEncoding("UTF-8");
- 解决:通过
- 超链接中文乱码
- 解决:配置 Tomcat 的 conf 下的 Server.xml 文件中的 Connector 标签,添加属性
URIEncoding="utf-8"
- 解决:配置 Tomcat 的 conf 下的 Server.xml 文件中的 Connector 标签,添加属性
response 对象
- response 对象是 HttpServletResponse 类的实例。它的作用域是页面,即该页面的 response 对象只能对这次访问有效,其它页面的 response 对象对当前页面无效。
- 常用方法:
- getCharacterEncoding()
- setContentType(String)
- getWriter()
- sendRedirect(String) :重定向客户端的请求
session 对象
1、session 简介
- session 表示客户端与服务器的一次会话
- web 中的 session 指的是用户在浏览某个网站时,从进入网站到浏览器关闭的这段时间
- session 保存在内存中,每个浏览器对应一个 session
2、session 对象
- session 对象是一个 JSP 内置对象;在第一个 JSP 页面被装载时自动创建,完成会话管理。
- session 对象是 HttpSession 类的实例
- 常用方法:
- getCreationTime()
- getId()
- setAttribute(String,Object)
- getAttribute(String)
- getValueNames()
- getManInactiveInterval()
- setManInactiveInterval()
3、Session 的生命周期
- 创建阶段:当客户端第一次访问某个 jsp 或 Servlet 时,服务器会为当前回话创建一个 SessionId,其后再向服务器端发送请求时,会将此 SessionId 携带过去,服务器会对此 SessionId 进行校验。
- 活动阶段:在 web 开发中,浏览器没有关闭,就是一次会话,即同一个 SessionId。若浏览器没有关闭,重新打开访问项目资源,还是同一个会话。
- 销毁阶段:三种方式
- 调用了 session.invalidate() 方法
- Session 过期(超时)
- 服务器重新启动
application 对象
- application 对象实现了用户间数据的共享,可存放全局变量,即 application 的属性是全局的,所有用户都是相同的。
- application 的生命周期,开始于服务器的启动,终止于服务器的关闭。
- application 对象是 ServletContext 类的实例。
- 常用方法:
- setAttribute(String,Object)
- getAttribute(String)
- getAttributeNames()
- getServerInfo()
其它内置对象
- page 对象
- page 对象就是指向当前 JSP 页面本身,是 java.lang.Object 类的实例
- 常用方法(与 Object 类相同):
- getClass()
- hashCode()
- ….
pageContext 对象
- pageContext 对象提供了对 JSP 页面内所有的对象及名字空间的访问
- pageContext 对象可以访问到本页面所在的 Session 和 application 的某一属性值
- 常用方法:
- getOut()
- getSession()
- getPage()
- getRequest()
- getResponse()
- forward(String)
- inclide(String)
Config 对象
- config 对象是在一个 Servlet 初始化时,JSP 引擎向它传递信息用的,此信息包括 Servlet 初始化时所要用到的参数(属性名和属性值构成)以及服务器的有关信息
- 常用方法:
- getServletContext()
- getInitParameter(String)
- getInitParameterNames()
- exeption 对象
- exeption 对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个 JSP 页面要应用此对象,必须把 Page 的属性 isErrorPage 设为 true,否则无法编译。
- Exeption 是 java.lang.Throwable 的对象
- 常用方法:
- getMessage() 返回描述异常的消息
- toString()
- printStackTrace() 显示异常及其栈轨迹
- FillInStackTrance() 重写异常的执行栈轨迹
请求转发与请求重定向
- 请求重定向:客户端行为,response.sendRedirect(“”),等同于两次请求,前一次请求对象不会保存,地址栏的 URL 地址会改变
- 请求转发:服务器行为,request.getRequestDispatcher(“”).forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的 URL 地址不会改变。