jsp java server pages java 服务器页面 既可以书写java代码又可以书写html标签 为了简化开发 本质上是一个servlet
jsp的原理:
1.浏览器访问 http://localhost:8080/tomcat_1/demo1.jsp tomcat_1为项目虚拟目录 demo1.jsp为资源路径
2. 找到demo1.jsp文件 将其生成java类,编译成class文件后执行. 查看发现生成的java文件是一个servlet的实现类
jsp java代码的书写方式
1.<% java代码 %> 此部分代码在service方法内
2.<%! %> 此形式用于定义成员
3.<%= %> 此格式用于输出到页面,内容可以是文字或变量
jsp指令 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>
指令有3种
page 配置页面的信息 属性有:import 导包,errorPage 指定错误页面,isErrorPage 标识当前页面是否是错误页面(是错误页面才可以使用exception内置对象),contentType 指定MIMEtype和字符集
include 导入页面资源文件 属性有file 比如在home.jsp 中导入 top.jsp
taglib 导入资源 比如标签库 <%@taglib prefix=“c” uri=“http://java.sun.com/jstl/core” %> prefix自定义 uri 资源路径
jsp有9个内置对象
变量名 真实类型
首先4个域对象
application ServletContext 共享所有用户数据
session HttpSession 共享一次会话对个请求间的数据
request HttpServletRequest 共享一次请求间的数据
pageContext PageContext 共享当前页面数据并且可以获取其他8个内置对象
其他
response HttpServletResponse 响应对象
out JspWriter 输出对象
exception Throwable 异常对象
page Object 当前页面对象
config ServletConfig servlet的配置对象
在使用jsp的时候建议输出统一使用jsp的内置对象out,因为它和response.getWriter()类似但是不一样. 服务器在输出时会先输出response缓冲区的内容,再输出out缓冲区的内容,混合使用并不会按代码先后顺序执行
jsp的过度使用导致前后端代码混杂在一起难于维护,难以分工协作,所以出现了MVC模式 jsp负责展示,那么尽量不写java代码,而是用EL 和JSTL进行数据的获取和展示
Model 实现业务逻辑,封装数据
View 展示数据
Controller 接收用户请求,调用Model封装数据,将Model返回的数据传递给View展示
EL Expression Language 表达式语言 用于简化 jsp中java代码的开发
语法 ${表达式}
\ ${xxx} 可以忽略EL表达式,进行\后面内容的原样展示
EL中 域对象分别为 applicationScope sessionScope requestScope pageScope
EL表达式只可以从四个域对象中获取数据,格式为: ${域对象.键名} 如果键不存在 则什么也不展示
${键名} 不写域对象 默认按照域对象的范围为从小到大开始找
获取list
${域对象.键名[索引].属性} 如果索引越界了不会报错,什么也不显示
JSTL java server pages tag libiary jsp标准标签库 标签的属性值里接收的是EL表达式
常用的标签有
if 属性 test可以接收结果为boolean类型的EL表达式
choose 里面 when 标签 test属性 里面 otherwise标签 代表其他情况
foreach 相当于for循环 两种情况 一种是普通循环 一种是遍历对象