Jsp文件是方便我们写Servlet显示页的一种文件。我们在里面写好页面代码,服务器会在启动之前,自动的把它转换成为Servlet文件,并把网页代码使用输出语句包装起来。
jsp文件构建在WebRoot文件夹下
1.jsp文件中其他语言的写法
注释:
jsp文件是用来转义成Servlet的,说白了就是转换成java代码的,因此在jsp中使用java注释,java注释会被转义到Servlet文件当中。
同样的,如果在jsp当中使用Http,CSS/JavaScript的注释,那么这个注释不仅会转义到Servlet当中,还会被Servlet发送到浏览器那里。因此,jsp文件有一种全新的注释方法:
<%-- 注释内容 --%>
Java代码块(局部):
Java代码使用尖括号加百分号的方式写在jsp文件当中,代码块声明的Java代码会被原样转译到jsp对应的_JspServlet方法当中,也就是说,代码块当中声明的变量都是局部变量。
尽可能不要书写过多的逻辑判断代码在jsp当中,会使代码极为混乱和难以阅读。
<%
String hello = "hello World";
%>
Java代码块(全局):
全局Java代码块会将java代码声明到jsp的Service方法外面。作为全局代码转义到对应的Servlet类当中,因此可以用来声明一些方法。
全局代码块声明的方法,只能在局部代码块当中使用。
<%!
public String HelloWorld()
{
return "HelloWorld";
}
%>
Java脚本段(常用):
快速获取变量或者方法的返回值作为响应给浏览器
<%=HelloWorld() %>
上面的jsp语句会在生成的Servlet文件当中转化为:
out.print(HelloWorld())
建议用来添加变量或者方法
注意:使用此方法时,不要再末尾添加分号了
其他浏览器读取的语言直接写在外面就好╮(╯▽╰)╭
2.page指令
<%@ page language="java" import="java.util.*,java.lang.*" pageEncoding="utf-8"%>
language属性:声明jsp要转义的语言(目前只支持java)
import:声明转译的Java文件需要导入的包,不同的包用逗号隔开即可
pageEncoding:设置jsp文件的数据编码格式(不声明称utf-8就会乱码)
contentType:声明生成的Servlet响应给浏览器的编码格式。(默认和pageEncoding的属性相同)
session:设置转译的Servlet当中是否开启session支持(默认开启)
errorPage:设置当servlet运行出错的时候,跳转的页面(总不能把500错误码给用户吧)
extends:设置jsp转译的java文件继承的父类(格式:包名+类名)(不建议设置)
3.Jsp的静态引入(include指令)
<%@ include file="Static.jsp" %>
静态进入的Jsp文件不会单独转义成Servlet文件。它会把静态引入的代码加入到我们被引入的jsp文件当中。
注意:静态引入的jsp代码和被引入的jsp文件可能会出现java变量同名的情况,需要尽可能的避免。
4.Jsp的动态引入
<jsp:include page="Static.jsp"></jsp:include>
和静态引入不同,动态引入相当于调用我们的jsp文件去打开我们引入的jsp文件,这个动作会创建动态引入的jsp文件。在网页中显示合并后的显示效果。
动态引入允许文件中声明同名变量。
动态引入和静态引入用于降低jsp代码的冗余,便于代码的维护。
5.Jsp的转发标签
<jsp:forward page="Static.jsp"></jsp:forward>
用处和Servlet当中的转发相同,一次请求,不改变地址栏的信息。
6.九大内置对象
jsp转换成为对应的Servlet文件的时候,会自动生成并声明的对象。我们可以直接使用。
(1)pageContext:
页面上下文对象,封存了当前的jsp运行信息,封存了其他内置对象。每个Jsp文件单独拥有一个pageContext对象,正常情况下,作用域只存在于当前Service方法当中。(当前页面)
(2)request:
封存当前请求的对象,由Tomcat服务器创建。
(3)session:
此对象用来存储用户的不同请求的共享数据。
(4)application:
也就是Servlet当中的ServletContext对象,存储整个项目的共享数据
(5)response:
响应对象,可以用来重定向、设置响应头
(6)out:
相应对象,Jsp内部使用。在浏览器输出的效率上高于response对象,但是不具有重定向、转发的能力
(7)page:
代表当前Servlet(Jsp)对象,相当于this关键字。
(8)exception:
异常对象。存储当前运行的异常信息
使用此对象,需要现在page指定中,声明属性isErrorPage = "true"开启。
(9)config:
就是ServletConfig,用于完成获取web.xml文件当中的指令,完成一些初始化的操作
7.jsp的路径跳转
在jsp中资源路径可以使用相对路径进行跳转,但是,资源的位置不能随意挪动。
使用绝对路径(常用,易读):
格式:/虚拟项目名/项目资源路径
Jsp自带的全局路径声明:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
作用:给资源前面添加项目路径,我们跳转的时候不需要再写虚拟项目名了,直接写项目资源路径即可。