简介:JavaServerPage,java服务器端网页,本质是一个Servlet,用于简化Servlet编写。
(网页中:动态内容Java代码编写,静态内容采用HTML页面的方式编写)
原理:URL以xxx.jsp的访问请求—— WEB容器(Servlet引擎)接收——交给JSP引擎去处理
JSP引擎将其翻译成Servlet源程序——编译成class类文件——WEB容器调用装载该Servlet
规则:1.Java代码(也可以是其他语言)需要嵌套在<%和%>中,称之为脚本片段(Scriptlets),其他部分称为模板元素
2.JSP文件像HTML文件一样以路径形式访问,需放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中
应用:在大型WEB应用程序的开发中,Servlet与JSP经常要混合使用,各司其职,
Servlet通常用作控制组件,并处理一些复杂的后台业务,JSP则作为显示组件
注:Servlet必须映射(设置被请求地址),JSP可以不映射(做请求页面)也可以映射(修改请求页面地址/被请求地址)
注册与配置JSP页面的访问路径隐式对象
简介:没有声明就可以直接在<% %>代码里使用的9个对象
request:HttpServletRequest 的对象
response:HttpServletResponse 的对象(JSP页面中几乎不会用到)
pageContext:PageContext 的对象,页面的上下文,可获取其他8个对象和页面其他信息(可用于自定义标签)
session:HttpSession 的对象,代表浏览器和服务器的一次会话
application:ServletContext 的对象,代表当前WEB应用
config:当前JSP对应的Servlet的ServletConfig 对象(几乎用不到)
out:JspWriter 的对象,相当于一种带缓存功能的PrintWriter,调用out.println()可以直接把字符串打印到浏览器上
page:Obiect 的对象,指向当前JSP对应的Servlet对象的引用(只能调用Object的方法,开发几乎不用)
exception:声明<%@ page isErrorPage="true" %>时,才可以使用
基本语法
JSP模板元素:JSP页面中的静态HTML内容,定义了网页的基本骨架
JSP表达式:提供了将一个java变量或表达式的计算结果输出到客户端的简化方式,eg:Current time: <%= new java.util.Date() %>
(本质是被翻译成out.print(…)语句,注:JSP表达式中的变量或表达式后面不能有分号)
JSP脚本片断:嵌套在<% 和 %>之中的一条或多条Java程序代码
1.多个脚本片段可以互相访问(就像在一个片段中)
2.脚本片段间可以任意嵌入文本、HTML标记和其他JSP元素
(单脚本片段中java语句可以不完整,整个组合完整就行,本质也是用out.println()进行的输出)
嵌套注释:<%-- JSP注释信息 --%> <!-- html注释信息 -->
JSP声明:将Java代码封装在<%!和 %>之中,它里面的代码将被插入进Servlet的_jspService方法的外面
域对象的属性操作
简介:pageContext、request、session、application(范围从小到大)这几个域对象有属性相关方法
属性方法:setAttribute(String name,Object value)
Object getAttribute(String name)
removeAttribute(String name)...
作用范围:pageContext:属性作用范围仅限于当前JSP页面
request:属性作用范围仅限于同一个请求
session:属性作用范围限于一次会话:浏览器打开直到关闭称之为一次会话(前提在此期间会话不失效)
application:属性作用范围限于当前WEB应用(范围最大的属性作用范围,只要一处设置属性,其他jsp都能获取到)
请求的重定向与转发
转发与重定向JSP指令
简介:为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分
格式:<%@ 指令 属性名="值" %>
JSP 2.0中,定义了page、include和taglib这三种指令
Page指令:用于定义JSP页面的各种属性,作用于整个JSP页面
page指令include指令:用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,
这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。
语法:<%@ include file="relativeURL"%> 指定被引入文件的相对路径(建议使用.jspf扩展名)
过程:先翻译成servlet再进行合并,除了import和pageEncoding属性,其他属性设置的值需一致
JSP标签
简介:在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。
(Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现)
<jsp:include>标签
简介:用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入
语法:<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端
与include指令区别:<jsp:include>动态引入生成会生成两个Servlet源文件,通过命令包含进来
include指令静态引入生成一个Servlet源文件
" flush="true|false">
<jsp:forward>标签
简介:把请求转发给另外一个资源
语法:<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得
几种转发的区别:1.<Jsp:forward>标签的前后都能有JSP模版内容(还能用<jsp:param>标签传参)
2.调用RequestDispatcher.forward方法的JSP脚本代码的前后不能有JSP模版内容
3.调用PageContext.forward方法的JSP脚本代码的后面不能有JSP模版内容
<jsp:param>标签
简介:能在<jsp:include>标签和<jsp:forward>标签下使用子标签用于传参
使用: <jsp:param value="aaa" name="userName"/>
接收与表格接收参数一致 <% String value = request.getParameter("userName"); %>
网友评论