JSP本质是一个servlet。编译时会为jsp动态生成相应的.class文件,里面就是此jsp对应的类,且派生自servlet。
JSP定义:Java Server Page:Java服务器端网页。即:在HTML页面中编写Java代码的页面。
1. 隐含对象
Jsp共有9个隐含对象:
2. 注释:
<%-- JSP注释 --%>
<!-- HTML注释-->
区别:JSP注释可以阻止Java代码的执行
如,在jsp中有如下代码:
<% System.out.println(“…”);%>
如果使用<%-- --%>包起来,则后台不会输出
如果使用<!-- -->包起来,后台还会输出。
1. 请求转发与重定向
请求的重定向:
Response.sendRedirect(“servlet_or_url”);
请求的转发:
RequestDispatcher requestDispatcher = request.getRequestDispatcher(“/”+ “servlet_or_url”);
requestDispatcher.forward(request, response);
2. JSP 指令
一共有三种指令:page include taglib
Page:
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.Date"
session="true"
isElIgnored="true"
errorPage="error.jsp"
isErrorPage="false"
%>
language:只能是”java”
contentType:指定当前JSP的响应类型和页面的编码
pageEncoding:指定编码
pageEncoding是jsp文件本身的编码
contentType的charset是指服务器发送给客户端时的内容编码
import:在页面中使用某些java类时需要引入声明,如:
<% Date date = new Date();%>
注:如果没有引入则类名会报红,将光标放到类最后,按alt+/,会弹出框,选择相应的类即可引入声明。
session:false表示页面中不能使用隐含的session对象,如:
<%= session.getId() %>
isElIgnored:指定当前JSP页面是否可以使用EL表达式,通常为true
errorPage:当页面出错时自动跳转到指定页面,而不是在当前页面报错(给用户不好的体验)如:在页面中添加错误代码:
<% int i = 10/0;%>
isErrorPage:为true表示当前页面为错误页面,就可以直接使用exception对象了:
<h3> 错误页面 </h3>
errorMsg : <%= exception.getMessage() %>
include:
如:在一个页面的body里添加如下代码:
<%@ include file="homePage.jsp" %>
最终的结果是,homePage.jsp在工程编译的时候就被翻译到了当前页面的相应位置,这种引入称为静态引入。
最好的例证就是,在当前页面定义一个java对象,在homePage.jsp中直接使用此对象,结果访问当前页面可以正常使用此对象,访问homePage.jsp则直接报错,因为此对象在它自己的页面中没有定义。
1. JSP标签:
Jsp标签都以小写的jsp作为前缀,如:
<jsp:include> <jsp:forword>等
<jsp:include>:
<jsp:include page="homePage.jsp"></jsp:include>
把另外一个资源的输出内容插入到当前jsp页面的输出内容中。两个页面在翻译时会生成两个相应的类文件,然后通过一个方法的方式把目标页面包含进来,称为:动态引入
注:静态引入和动态引入的本质区别在于jsp生成的源文件个数,开发过程中并不需要格外注意,两者都可以。
<jsp:forword>:
<jsp:forward page="homePage.jsp"></jsp:forward>
在页面中直接进行转发。即页面地址不变,但内容跳转到了homePage.jsp
相当于:
<%
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/homePage.jsp");
requestDispatcher.forward(request, response);
%>
两者的区别在于<jsp:forward>可以使用<jsp:param>子标签给目标页面传参。如:
<jsp:forward page="homePage.jsp">
<jsp:param value="gary" name="username"/>
</jsp:forward>
在homePage.jsp中输出参数:
<h2> 首页</h2>
<%= request.getParameter("username") %>