1、什么是Jsp?
- JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,Jsp页面是动态页面区别于Html页面
- 一个jsp页面包括,指令标识、html代码、javascript代码、嵌入的java代码、注释、jsp动作标识等。但不都是必须的。
-
Jsp页面本质上是Java页面,最终编译形成class文件
J
s
p
页
面
本
质
上
是
J
a
v
a
页
面
,
最
终
编
译
形
成
c
l
a
s
s
文
件
,这点可以在tomcat安装目录下的work文件夹下看到
上面是写的jsp编译形成的Java文件和class文件
2、指令标识
- 格式:<%@ 指令名 属性1=“属性值1” 属性2=“属性值2”…%>
分类:
page指令:
<%@ page language="java"%> <%@ page extends=""%> //用于设置jsp页面继承的java类 <%@ page import="java.util.*"%> //设置导入类包,嵌入的java代码 <%@ page pageEncoding="GB18030"%> //jsp页面的编码格式,默认为:ISO-8859-1,该编码不支持中文 <%@ page contentType="text/html;charset=UTF-8"%> //设置jsp页面的mime类型和字符编码 <%@ page session="flase"%> //用于设置jsp页面是否使用http的session会话对象 <%@ page buffer="128kb"%> //用于设置jsp的out输出对象的使用的缓存区的大小,单位只能是kb,默认为8kb <%@ page autoFlush="false"%> //用于设置jsp页面缓存满时,是否自动刷新 <%@ page isErrorpage="ture"%> //把当前jsp页面当作错误页面处理 <%@ page errorPage="error/loginErrorPage.jsp"%> //处理当前jsp页面的异常错误的另一个jsp页面,指定的jsp错误页面必须设置isErrorPage属性值为true,errorPage的属性值为url字符串
- include指令:
<%@ include file="path"%> //该指令可以在一个jsp页面中包含另一个jsp页面,静态包含,即原样包含,不会被编译执行
- taglib指令:
<%@ taglib prefix="tagPrefix" url="tagURl"%> //标识页面使用的标签库,并引用, prefix:指定标签的前缀,前缀不可命名为:jsp jspx java javax sun servlet sunw,url:指定标签库文件的存放位置
3、脚本标识
- jsp表达式
<%=表达式%> //表达式:可以是任何java语言的完整表达式
- 声明标识:
<%!声明变量或方法的代码%> //声明标识用于定义全局变量或方法
- 代码片段
<%java代码或者是脚本代码%>
4、注释
- //
- /…./
- <%–注释内容–%>
- 这是隐藏注释
5、动作标识
<jsp:include>
- 包含文件标识,向当前页面包含其他文件,静态或者动态文件
- 格式:
<jsp:include page="url" flush="false|true">
或<jsp:include page="url" flush="false|true">子动作标识<jsp:param></jsp:include>
- page:路径;
- flush:可选属性,缓存区是否刷新;
- 子动作标识:传递参数
<jsp:forward>
- 请求转发标识将请求转发到其他web资源
- 格式:
<jsp:forward page="url"/>
或<jsp:forward page="url">子动作标识<jsp:param></jsp:forward>
- page:请求转发的目标页面
- 子动作标识:传递参数
<jsp:param>
- 传递参数标识
- 格式:
<jsp:param name="参数名" value="参数值"/>
- name:参数名
- value:设置对应的参数值
6、Jsp九大内置对象
类型 | 内置对象 | 说明 | 作用域 |
---|---|---|---|
javax.servlet.http.HttpServletResponse | response | 表示响应对象,设置响应头信息以及编码格式,客户端跳转,获取响应的流 | request |
javax.servlet.http.HttpServletRequest | request | 即一次请求,表示请求对象,用于接收客户端请求数据以及服务器端跳转; | request |
javax.servlet.http.HttpSession | session | 即一次会话,从访问服务器项目开始该对象被创建,浏览器关闭,会话断开但是后台session依然存在,直到该对象自动销毁(失效)或手动销毁,会话结束;常用于:标识访问的用户 | session |
javax.servlet.ServletContext | application | 该对象在服务器启动时被创建,该对象被整个项目共享,作用于整个项目;数据被整个项目共享; | application |
javax.servlet.jsp.pageContext | pageContext | 获取当前页面jsp上线文环境:即jsp运行的环境(运行编译的位置)以及该jsp相关内置对象 | page |
javax.servlet.ServletConfig | config | 即在执行doGet和doPost前,进行数据参数传递 | page |
java.servlet.jsp.JspWriter | out | 用于页面输出显示数据,重写页面数据 | page |
java.lang.Object | page | 即当前页面对象(Servlet)即this | page |
java.lang.Throwable | exception | 用于页面抛出的异常信息 | page |
7、四个作用域
作用域 | 说明 | 生命周期 |
---|---|---|
application | 全局作用范围,整个应用程序共享, | 应用程序启动到停止 |
session | 会话作用域,通俗的理解就是打开浏览器访问到,会话销毁 | 访问到会话超时,或者服务器端强制使会话失效 |
request | 请求作用域,就是客户端的一次完整请求。 | 通常是请求过程中附带的参数,在这个请求被响应后这些参数的生命周期结束 |
page | 仅作用于当前页面 | 页面运行完成后就会结束 |
8、JavaBean
- 什么是JavaBean?
- JavaBean是一个遵循特定写法的Java类,它必须遵循下列规则:
- 1、这个Java类含有一个无参构造函数
- 2、属性私有化。
- 3、get() set()方法。
- JavaBean是一个遵循特定写法的Java类,它必须遵循下列规则:
- Jsp中如何使用JavaBean?
- Jsp技术提供了三个关于JavaBean组件的动作元素,即Jsp标签,它们分别为:
<jsp:useBean>
标签:用于在JSP页面中查找或实例化一个JavaBean组件。相当于实例化该JavaBean(Java类)的对象,之后就可以使用该对象调用方法<jsp:setProperty>
标签:用于在JSP页面中设置一个JavaBean组件的属性。
- 语法格式:
<jsp:setProperty name="beanName" property="propertyName" value=""/>
其中name就是JavaBean的类名,property就是私有属性的名字,value就是赋给私有属性的值(value中可以嵌套<%Java代码%>) - 其实就是相当于前面usebean以后,对象.set方法。
- 语法格式:
<jsp:getProperty>
标签:用于在JSP页面中获取一个JavaBean组件的属性。
- 语法格式:
<jsp:getProperty name="beanInstanceName" property="PropertyName" />
前面setProperty以后,可以get到,name是JavaBean的名字,property就是属性名字
- 语法格式:
- Jsp技术提供了三个关于JavaBean组件的动作元素,即Jsp标签,它们分别为:
- javabean技术的应用,提高了程序的可读性,易维护性,而且提高了代码的重用性
9、Servlet
- servlet即运行在服务器端的程序,是一个处理客户端请求的组件或者容器;
- servlet执行过程:
- 1、服务器启动加载web.xml, 客户端发送请求,
- 2、 根据url访问相关Servlet,执行init方法初始化该Servlet容器,
- 3、通过service或者dopost、doget 处理业务,
- 4、当服务器关闭停止,destory方法销毁该容器;
- servlet代码结构:在java中通常所说的servlet是指HttpServlet对象,在声明一个对象为servlet时,需要继承HttpServlet类,HttpServlet类是Servlet接口的一个实现类,继承该类后,可以重写HttpServlet类中方法对HTTP请求处理
- servlet技术的特点:功能强大,可移植(不依赖与操作系统),性能高效,安全性高,可扩展
- servlet api常用的接口和类:
- Servlet接口
- ServletConfig接口
- HttpServletRequest接口
- HttpServletResponse接口
- GenericServlet类
- HttpServlet类
10、MVC
在JSP + Servlet + JavaBean的开发中,经常使用Servlet接收请求,将数据保存到JavaBean中,然后将JavaBean保存到request对象,再通过请求转发到负责显示的JSP页面,最终通过标签将JavaBean中保存的数据显示在JSP页面内。
11、细节知识点
-
servlet与jsp的区别?
s
e
r
v
l
e
t
与
j
s
p
的
区
别
?
- servlet是使用java servlet接口(API)运行在web应用服务器上的java程序,jsp是在servlet规范之上的动态网页技术
-
表单get和post提交的区别?
表
单
g
e
t
和
p
o
s
t
提
交
的
区
别
?
- get:以明文的方式通过URL提交数据,在URL中可以看到,提交的数据不超2KB,安全性比较低,效率比post高,适合提交数据量不大,安全性不高的数据
- post:将用户提交的信息封装在HTML,HEADER内。URL地址栏中不可见适合提交数据量大,安全性高的信息。
请求转发和请求重定向? 请 求 转 发 和 请 求 重 定 向 ?
- 请求重定向:客户端行为,response.sendRedirect(),从本质上将等同于两次请求,前一次的请求对象不会保存,地址栏的URL会改变,刷新页面数据不会重新查询,无法获取request作用范围的数据
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL不会改变,刷新页面数据会重新查询,可以获取request作用范围的数据;
开发时大多数情况都是用服务器端跳转
扩展阅读!
-
HTML和JSP的区别?
H
T
M
L
和
J
S
P
的
区
别
?
- HTML是静态页面
- JSP是动态页面,简化了servlet的设计