Jsp学习
-
Jsp简介:Java Server Pages
1、Jsp本质就是一个Servlet,因为Servlet是通过Java+html实现的,而Jsp页面也是通过html+Java,Jsp页面在翻译成java文件时,底层源码是继承HttpJspBase,HttpJspBase又继承HttpServlet
2、Jsp是一个动态网页,必须运行在服务器中 -
Jsp运行原理
1、第一次运行Jsp文件时,会经历以下步骤:
①服务器会将.jsp文件翻译成 .Java文件
②将该.Java文件编译成.class文件
2、以后再访问该Jsp文件时:
①文件内容未改变时不会翻译和编译
②当文件内容改变时会重新编译和翻译 -
Jsp基本语法(6个)
1、指令
语法:<%@ %>
2、模板元素:也就是html
3、脚本片段:
语法:<% %>
作用:在页面上的脚本片段中书写的代码会被编译在源码的_jspService()方法中
3、表达式
语法:<%= %>
作用:把数据在页面上显示出来
4、注释
Java中的注释://、/**/、/***/
html中的注释:<!--注释内容-->
在html源码中可以看到
Jsp中的注释:<%-- 注释内容 --%>
在html源码中看不到 -
常用指令
1、page指令
语法:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
language:有且仅有Java语言
contentType:与response.setContentType()作用一致
pageEncoding:设置当前jsp的字符集
import:导包
errorPage:当前页面有误时,跳转的目标页面。
isErrorPage:设置当前页面,是否为错误页面,参数为true或者false
2、include指令:静态包含
语法:<%@include file="被包含的文件路径" %>
特点:被包含的文件,不会被翻译和编译 -
动作标签
注意:使用jsp动作标签时,如果不传参数时,不能在标签之间添加任何内容(包括空格)
1、转发
语法:<jsp:forward page="路径"></jsp:forward>
2、动态包含
语法:<jsp:include page="被包含的页面路径"></jsp:include>
特点:动态包含中被包含的文件会被翻译和编译 -
Jsp九大隐含对象
隐含对象:不需要我们实例化,直接就可以使用的对象
对象明细:
1、pageContext
类型:PageContext
作用:域对象
2、request
类型:HttpServletRequest
作用:与Servlet中的request作用一致
在Servlet中的获取方式:在doGet()或doPost()方法中直接使用
3、session
类型:HttpSession
作用:域对象
在Servlet中的获取方式:request,getSession();
4、response
类型:HttpServletResponse
作用:与Servlet中的response作用一致
在Servlet中的获取方式:在doGet()或doPost()方法中直接使用
5、page
类型:Object
作用:this(当前类的对象)
6、application
类型:ServletContext
作用:域对象
在Servlet中的获取方式:this.getServletContext();
7、config
类型:ServletConfig
作用:与Servlet中的ServletConfig作用一致
在Servlet中的获取方式:this,getServletConfig();
8、out
类型:JspWriter
作用:与Servlet中的PrinteWriter作用类似
9、exception
类型:Throwable
作用:处理异常 -
Jsp四大域对象
1、pageContext
范围:在当前页面有效
2、request
范围:在当前请求有效(转发);如果使用重定向则无效
3、session
范围:在当前会话有效(与浏览器有关,只要不换或者关闭浏览器就有效
4、application
范围:只在当前web应用程序(项目)有效,重启服务器无效 -
域对象共同点
都有方法:
setAttibute();
getAttibute();
removeAttibute(); -
域对象的注意事项
能用小域尽量不适用大域