JSP
来源:互联网 发布:上海通用维修编程系统 编辑:程序博客网 时间:2024/06/13 05:22
JSP基本原理
JSP本质是Servlet,使用JSP时,Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。
就Tomcat而言,JSP页面生成的Servlet放在work路径对应的web应用下。
JSP的4种基本语法
JSP注释
<%-- --%>
不会出现在源码中(HTML注释<!-- -->
)
JSP声明
<! 声明部分 >
JSP声明将会转换成对应Servlet的成员变量或成员方法
输出JSP表达式
<%= 表达式%>
表达式语法后不能有分号
JSP脚本
<% %>
JSP脚本将转换成_jspService方法里的可执行性代码,所以JSP脚本里不能定义方法
JSP的三个编译指令
`<%@ 编译指令名 属性名=“属性值” %>’
page指令
属性:language 当前JSP页面的语言,默认Java,无需设置
extends 指定JSP页面编译所产生的Java类所继承的父类,或所实现的接口
import 导入包,默认倒入的包有java.lang.*、
session 设定这个页面是否需要HTTP Session
buffer 指定输出缓冲区的大小
autoFlush 当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容
info 设置该JSP程序的信息,即说明。getServletInfo()方法获取该值
errorPage 指定错误处理页面
isErrorPage 设置本JSP页面是否为错误处理程序
contentType 用于设定生成网页的文件格式和编码字符集,即MIME类型和页面字符集类型,默认text/html,ISO-8859-1
pageEncoding 指定生成网页的编码字符集
include指令
<%@ include file = "xxx.jsp"%>
将外部文件嵌入到当前JSP文件中,包含编译指令
taglib指令
用于定义和访问自定义标签
JSP的7个动作指令
- jsp:forward : 执行页面转向,将请求的处理转发到下一个页面
<jsp:forward page="{relativeURL|<%=expression%>}"> {jsp:param.../}</jsp:forward><jsp:forward page="xxx.jsp"> {jsp:param name="age" value="18"/}</jsp:forward>
jsp:param:用于传递参数
jsp:include:动态引入JSP页面,只是页面的body内容
静态导入是将导入页面的代码完全融合,合成一个整体Servlet;动态导入在Servlet中使用include方法jsp:plugin:用于下载JavaBean或Applet到客户端执行
jsp:usebean:创建一个JavaBean的实例
jsp:setProperty:设置JavaBean实例的属性值
jsp:输出JavaBean实例的属性值<jsp:useBean id="name" class="classname" scope="page|request|session|application"/>
id:实例名 class:实现类 scope:指定实例的作用范围
page:在该页面有效
request:在该次请求有效
session:在本次session有效
application:在本应用内有效
<jsp:usebean id="p1" class="lee.Person" scope="page"/><jsp:setProperty name="p1" property="name" value="yyk"/><jsp:setProperty name="p1" property="age" value="18"/><jsp:getProperty name="p1" property="name"/><jsp:getProperty name="p1" property="age"/>
JSP脚本的9个内置对象
application
让多个JSP、Servlet共享数据
application.setAttribute("id",1)<!--jsp中-->application.getAttribute("id")<!--servlet中,servlet中没有application对象-->ServletContext sc = getServletConfig().getServletContext();sc.getAttribute("id")
获得Web应用配置参数
web.xml<context-param> <param-name>driver</param-name> <param-value>com.mysql.jdbc.driver</param-value></context-param>jspString driver = application.getInitParameter("driver")
config
exception
exception对象是Throwable的实例,代表JSP脚本中产生的错误和异常,是JSP页面异常机制的一部分
<%@ page contentType="text/html; charset=GBK" language="java" isErrorPage="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title> 异常处理页面 </title> <meta name="website" content="http://www.crazyit.org" /></head><body>异常类型是:<%=exception.getClass()%><br/>异常信息是:<%=exception.getMessage()%><br/></body></html>
out
out对象代表一个页面输出流,通常用于在页面上输出变量值及常量。
<%= %>
out.write()
page
代表页面本身,通常没有太大用处。即Servlet中的this
pageContext
代表页面上下文,用于访问JSP之间的共享数据。使用pageContext可以访问page,request,session,application范围的变量
getAttribute(String name) (page)getAttribute(String name, int scope)scope1、page 2、request 3、session 4、application
request
每个request对象封装着一次用户请求,包括所有请求参数
response
代表服务器对客户端的响应。
常使用的对象 out out是JspWriter的实例,JspWriter是writer的子类,writer是字符流
1、response响应生成非字符响应(图片,PDF)
2、重定向(会丢失所有请求参数) response.sendRedirect(String path)
3、增加Cookie(不设置生存期限,Cookic随浏览器关闭而自动消失)
Cookie c = new Cookie("username" , name);// 设置Cookie对象的生存期限c.setMaxAge(24 * 3600);// 向客户端增加Cookie对象response.addCookie(c);
session
代表一次用户会话,从客户顿浏览器连接服务器开始,到客户端浏览器与服务器断开
跟踪用户的会话信息
session里的属性值必须是可序列化的
配置JSP属性
使用<jsp-property-group/>
元素配置 <el-ignored/>
是否允许使用表达式语言,默认false,允许 <scripting-invalid/>
是否允许使用JSP脚本,默认false,允许 <page-encoding/>
声明JSP页面的编码 <include-prelude/>
隐式包含,页面头 <include-coda/>
隐式包含,页面尾
<!-- 关于JSP的配置信息 --> <jsp-config> <jsp-property-group> <!-- 对哪些文件应用配置 --> <url-pattern>/noscript/*</url-pattern> <!-- 忽略表达式语言 --> <el-ignored>true</el-ignored> <!-- 页面编码的字符集 --> <page-encoding>GBK</page-encoding> <!-- 不允许使用Java脚本 --> <scripting-invalid>true</scripting-invalid> <!-- 隐式导入页面头 --> <include-prelude>/inc/top.jspf</include-prelude> <!-- 隐式导入页面尾 --> <include-coda>/inc/bottom.jspf</include-coda> </jsp-property-group> </jsp-config>
表达式语言
语法格式:${ expression}
支持算术运算符和逻辑运算符
所有数值都当成浮点数处理
表达式语言的11内置对象
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
initParam
cookie
${param.name}${param["name"]}${cookie["name"].value}
表达式语言的自定义函数
Tag File支持
自定义标签的简化用法,无需定义标签处理类和标签库文件
5个编译指令
taglib
include
tag:作用类似于JSP文件中的page指令
attribute:标签属性
variable:标签变量
先导入标签库,再使用标签
- JSP
- JSP
- jsp
- JSP
- JSP
- jsp
- Jsp
- JSP
- jsp
- jsp
- jsp
- JSP
- JSP
- jsp
- jsp
- JSP
- jsp
- jsp
- 19. 数据结构进阶十九外部排序相关概念
- Sysfs实现原理
- 1018. 锤子剪刀布 (20)
- jQuery+Ajax实现用户登录
- 20. 数据结构进阶二十文件相关概念
- JSP
- python SyntaxError: Non-ASCII character '\xe4' in file
- Kotlin可以拯救Java程序员,但Java9程序员不用!
- 动态规划--01背包问题
- 【笔记+模板】 数论
- 4.面向对象三大特征:封装、继承、多态。
- 蓝桥杯摩尔斯电码
- 面向对象中(重点)之object类的使用
- linux命令学习总结