1、语法格式
1.1 语法结构
1.1.1 声明区
可以定义全局变量、全局方法、类:
<%!
int i;
public void f(){...}
%>
1.1.2 程序代码区
可以定义局部变量以及放入任何程序代码
<%
int j;
for (int i=0;i<10;i++) {...}
%>
1.1.3 表达式
用来输出/打印,不需要分号结束,只能有一行。
<%="hello world!!"%>
1.1.4 注释
<!-- --> // 在浏览器端查看源代码可见
<%-- --%> // jsp的注释方式
<%// %> // Java语言中的单行注释
<%/* */%> // Java语言中的多行注释
2、指令和动作
2.1 指令格式
<%@指令 属性=“属性值”>,属性可以有多个
2.1.1 page指令
2.1.2 taglib指令
用来扩展jsp的标签,引入其他标签库
<%@taglib uri="tagLibrary" prefix="prefix"%>
2.1.3 include指令
引入其他jsp文件或HTML文件,这种方式称之为静态包含
<%@include file="path">
2.2 动作指令
<jsp:动作指令 属性=“属性值”>,属性可以有多个
2.2.1 include动作
include动作也是用来引入jsp或html文件
include指令和动作的区别:
- 指令是先把文件包含进来,再进行编译
- 动作是只有在执行到include部分时,才会将include文件进行编译,推荐这种方式
<jsp:include page="path" flush="true"/>
<jsp:include page="path" flush="true">
<jsp:param name="key" value="value"/>
<jsp:include>
2.2.2 forward动作
forward动作用来实现转发,将请求转发到另一个jsp或servlet中处理
<jsp:forward page="target.jsp">
<%--可以传递参数,能够通过内置对象取出--%>
<jsp:param name="name" value="value"/>
</jsp:forward>
3、jsp内置对象
如同Java的基本数据类型一样,jsp中有自带的对象,我们称之为内置对象,内置对象使用直接用内置对象.方法即可
jsp转换成servlet后,会自动追加这些变量的定义
3.1 九大内置对象
3.1.1 out对象
out对象用来输出或打印
常用方法:
3.1.2 request对象
request对象实现了HttpServletRequest接口,可以获得所有请求信息
request设置属性信息后,只能在当前请求中有效,但转发可以共享该参数,即转发到其他jsp中,可以通过获取参数的方式获取设置的值
3.1.3 response对象
3.1.4 session对象
是HttpSession的实例
该对象会在一次会话范围中保存,并且存在服务端,只有不关闭浏览器,默认情况下半小时内都可以访问
3.1.5 application对象
application对象是ServletContext类型的一个实例,在服务器上保存数据,所有对象共享,即多个浏览器都能获得该属性值
3.1.6 pageContext对象
只在当前页面可以使用,转发的请求中则无法获取该对象所设置的内容
3.1.7 exception对象
是Throwable的实例,表示jsp的异常信息,用以下方式来设置errorPage的路径信息,以便在该jsp中出现异常可以跳转至异常页面
<%@ page errorPage="pagePath" %>
errorPage需要设置一个属性才可以用exception对象
<%@ page isErrorPage="true" %>
上面我们配置的只是在一个页面中出错会跳转至错误页面,如果想在整个项目中出错均跳转至该页面,需要在web.xml中配置
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
4、jsp引入JavaBean
如下代码所示,id代表引用对象的名称(new出来的名称),可以用该值.方法的方式调用JavaBean中的方法,scope代表该对象的有效范围,有效范围有四个取值(page|request|sessin|application),默认为page
<jsp:useBean id="student" scope="page" class="包名.类名">
也可以用标签设置JavaBean的属性值,param与前端属性name相对应,把该值设置为param参数值6
<jsp:setProperty name="对象名" property="属性名" value="属性值" param="参数名"/>
同理也可以用标签获取值
<jsp:getProperty name="对象名" property="属性名"/>
5、MVC设计模式
M:model,模型,表示的是数据内容
V:view,视图,界面
C:controller,控制器,处理的逻辑和流程