JSP小结
jsp可以说是一个简化的servlet,在html文件中加入java程序片段和jap标记,就构成可jsp页面
jsp和servlet的联系和区别
联系:servlet用来执行业务流程,jsp来生成动态页面
区别:
- 创建方式不同(jsp本质就是servlet);jsp运行时会编译java文件;servlet完全由java程序代码组成,擅长于流程控制
- jsp由html代码和jsp标签构成,用来编写动态页面
- jsp侧重视图,servlet主要用于逻辑控制
jsp指令元素
jsp可以通过指令元素影响服务器编译生成的java类的整体结构
语法: <%@ 指令名 {属性名=“值”}*%>
常用指令:page,include,taglib
page指令元素:
import属性用来引入JSP文件需要使用的类。如下代码所示:
<%@page import="java.util.*,java.io.*" %>\
可以使用逗号同时引入多个包,也可以在一个JSP文件中多次使用import。
值得注意的是,import是page指令中
唯一
一个可以在一个JSP文件中多次出现的属性,其他属性在一个JSP文件中只能出现一次。
include指令元素:
用来静态包含其他页面。
所谓静态包含,指的是在编译期间,把包含的页面也编译到当前页面的Java文件中,Java源文件就实现“二合一”。
<%@include file="copyright.jsp"%>
**动态包含:**在jsp页面中动态包含另一个资源
<jsp:include page=“filename”/>
Page
=“为一个相对路径,或者是代表相对路径的表达式”
<sp:include>
是动态包含,即在运行期访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终响应。
jsp内置对象
jsp页面中的九大内置对象分别是:
1.out 向客户端输出
out对象是javax.servlet.jsp.JspWriter的实例
out = pageContext.getOut();
该实例代表JSP页面的输出流,用于向客户端输出数据。
例子:
<% out.print(“<p> helloOut<p>”);%>
<% String srt=“helloOut”;%>
<%out.print(“<p>”+ srt +”<p>”);%>
2.request 封装用户请求
• request是javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里。
•response是
HttpServletResponse
类的实例,response对象包含了响应客户请求的有关信息。
• 请求转发是指将请求再转发到另一资源。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变。
• 请求转发使用RequestDispatcher接口中的
forward()
方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应。
•request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理
setAttribute(“name”,value)
getAttribute(“name”)
removeAttribute(“name”)
3.response 向客户端响应
•重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址。
• 重定向是通过
HttpServletResponse
对象的
sendRedirect()
来实现,该方法相当于浏览器重新发送一个请求
4.session 会话对象
•Session对象是
javax.servlet.http.HttpSession
的实例
它在
第一个JSP页面被装载时自动创建
,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,
到客户关闭浏览器离开这个服务器结束
,被称为一个会话。
•Servlet API中,定义了
HttpSession
接口,用来封装会话对象。
•
HttpSession
是接口,会话对象是Web容器创建的,在Servlet中使用
HttpServletRequest
中的方法获得会话对象。
public HttpSession getSession()
:获取跟当前请求相关的session,如果不存在session,就创建一个新的session对象返回。
•JSP文件中使用会话对象的方法
–JSP文件中有内置对象session,可以直接调用HttpSession接口中任意方法
使用session实现会话机制的过程
- 当容器创建一个新的HttpSession对象后,即生成一个随机数,称为会话ID,并将ID值封装成一个名字为JSESSIONID的session,返回给客户端。
- 调用request.getSession方法获得会话对象时,容器先从request中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,返回使用。
- 如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话对象,重复步骤1
会话对象生命周期
•会话对象是
容器
创建的,并保存在容器中,如果客户端连接到服务器后,却置之不理,不做任何操作,那么容器维护这些会话对象将占用很多资源。因此,容器都会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。
•除了根据有效时间使会话对象失效外,还可以调用HttpSession中的
invalidate
方法,使会话失效,立即销毁会话对象
5.application 服务器开始时开始运行,用来存放全局变量,在用户间共享
6.pageContext 用于访问各种page的各种对象
7.exception 异常
是
java.lang.Throwable
的实例
该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用。
常用的方法有
exception.getMessage();
返回异常信息字符串
exception.toString();
异常信息简单描述
8.config 初始化要用的参数
9.page jsp页面本身
page是
java.lang.Object
类的对象
创作不易,大佬们留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)