定义:它在HTML代码中嵌入java代码片段和jsp标签,构成jsp网页,在接受到用户请求时,服务器会处理Java代码,然后生成处理结果的HTML页面返回给客户端,客户端的浏览器将呈现最终页面效果。
jsp工作原理图.jpg
JSP技术特征
- 跨平台:
一次编写,到处运行 - 业务代码分离:
程序开人员可以将业务处理代码全部放在javabean中,或者把业务代码交给Servlet,Struts等其他业务控制层来处理。 - 组件重用:
使用一个javaBean类封装业务处理代码或者作为一个数据存储模型。 - 继承了Java Servlet功能:
jsp最终编译成servlet才能处理用户请求 - 预编译 :
第一次访问进行编译并保存,下次在访问直接执行编译好的代码。
二.Jsp语法
- Jsp指令
page指令
<%@page contentType="text/html;charset=utf-8"
pageEncoding="utf-8"
import="java.util.Date" %>
说明:pageEncoding:按照哪种方式读取JSP文件
contentType:按照哪种方式输出网页内容
-
import :导入相关的类
- include指令
<%@ include file="被包含文件url" %> - taglib指令
<%@ taglib url="/struts-tags" prefix="s" %>
- include指令
- 插入java代码:语句以分号结束
<% Java代码;%> - 声明
<%! 定义全局变量%> - 输出结果:不能有分号
<%=expression %> - 注释
客户端通过查看源代码是能够看的到的
<%--注释-->客户端通过查看源代码是能够不能够看到的
三.动作标签
- <jsp:include>:用于动态将另一个jsp页面包含进来
<jsp:include page="url" /> - <jsp:forward> :请求转发,将请求的处理转发给其他web资源
<jsp:forward page="url" /> - <jsp:param>:该标签为其他标签的子标签,为其他标签传递参数
<jsp:param name="userName" value="mingri" />
四.JSP五个内置对象
- request对象(HttpServletRequest)
- 概念
- 主要用来接受通过HTTP协议传送到服务器的数据(包括头信息,系统信息,请求方式和请求参数等)
- request对象的作用域为一次请求
- 方法
- 获取请求参数值
request.getParameter("id") - 对于复选框及多选列表框被选定的内容就要使用这个
request.getParameterValues("like") - 可以在request对象的属性列表中添加一个属性
request.setAttribute(String name,Object obj); - 然后在request对象的作用域范围内通过使用getAttribute()方法将其属性取出
request.getAtrribute(String name); - 移除属性
request.removeAttribute()
- 获取请求参数值
- response(HttpServletResponse)
- 概念:response代表的是对客户端的响应,主要是将jsp容器处理过的对象传回到客户端。response也具有作用域,它只在jsp页面内有效。
- 方法
- 重定向网页
response.sendRedirect("www.baidu.com"); - 设置输出缓冲
通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区;只有以下的3种情况,才会把缓冲区的内容写到客户端
- jsp的页面的输出信息已经全部写入到缓冲区
- 缓冲区已满
- 在jsp页面种调用了flushbuffer()或者out对象的flush()方法
response.setBufferSize(0) - session对象(HttpSession)
- 概念
是由服务器自动创建的与用户请求相关的对象,服务器为每个用户都生成一个session对象,用来保存该用户的信息。session对象内部使用Map类来保存数据,因此保存数据的格式是key/value。session对想的value可是复杂的对象类型,而不仅仅是字符串类型。 - 方法
- 将信息保存在session范围内
session.setAttribute(String key,object obj) - 获取保存在session范围内的信息
session.getAttribute(String key); - 移除相关属性
session.removeAttribute(String key); - 销毁session
session.invalidate() - 会话超时管理
- 方法
- 返回客户端最后一次与会话相关联的请求时间
getLastAccessedTime() - 以秒为单位返回一个会话内两个请求最大的时间间隔
getMaxInactiveInterval() - 以秒为单位设置session的有效时间
setMaxInactiveInterval()
- 返回客户端最后一次与会话相关联的请求时间
- 概念
- application对象(ServletContext)
- 概念
可将信息保存在服务器中,直到服务器关闭。生命周期更长。 - 方法同上
- out对象 (JspWriter)
- 概念
主要用来像客户端输出数据 - 方法
out.println()