JSP出现的原因
在Servlet中,我们可以通过PrintWriter输出HTML,例如下面。但是很明显,用PrintWriter输出HTML基本上不太可能。为此我们就可以使用Servlet来简化这一系列PrintWriter的复杂工作。
PrintWriter pw = resp.getWriter();
pw.write("<html>");
pw.write("<body>");
pw.write("<h1>Welcome, " + name + "!</h1>");
pw.write("</body>");
pw.write("</html>");
pw.flush();
JSP初认识
- JSP是Java Server Pages的缩写
- JSP文件必须放到/src/main/webapp下,文件名必须以.jsp结尾
- 访问JSP页面时,直接指定完整路径:例如:http://localhost:8080/hello.jsp
<html>
<head>
<title>Hello World - JSP</title>
</head>
<body>
<%-- JSP Comment --%>
<h1>Hello World!</h1>
<p>
<%
out.println("Your IP address is ");
%>
<span style="color:red">
<%= request.getRemoteAddr() %>
</span>
</p>
</body>
</html>
运行结果:
JSP语法
- 指令
<%–注释–%> 用于注释
<%Java%>用于编写Java代码
<%= xxx%>用于快捷输出一个变量的值
<%@ page import=" %>导包
<%@ include file = “xxx.jsp”" %>引入JSP文件
- 变量
out:表示HttpServletResponse的PrintWriter;
session:表示当前HttpSession对象;
request:表示HttpServletRequest对象;
JSP与Servlet的联系
其实它们没有任何区别,因为JSP在执行前首先被编译成一个Servlet。在Tomcat的临时目录下,可以找到一个hello_jsp.java的源文件,这个文件就是Tomcat把JSP自动转换成的Servlet源码
- JSP原码:
<html>
<head>
<title>Hello World - JSP</title>
</head>
<body>
<%-- JSP Comment --%>
<h1>Hello World!</h1>
<p>
<%
out.println("Your IP address is ");
%>
<span style="color:red">
<%= request.getRemoteAddr() %>
</span>
</p>
</body>
</html>
- 转化为Servlet代码:
public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
...
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
...
out.write("<html>\n");
out.write("<head>\n");
out.write(" <title>Hello World - JSP</title>\n");
out.write("</head>\n");
out.write("<body>\n");
...
}
...
}
九大内置对象
-
内置对象概念
在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。 -
内置对象分类
- 输出输入对象:request对象、response对象、out对象;
- 通信控制对象:pageContext对象、session对象、application对象;
- Servlet对象:page对象、config对象;
- 错误处理对象:exception对象。
- 内置对象作用
Request对象:代表请求对象,主要用于接收客户段数据。
Response对象:代表响应对象,主要用于向客户端发送数据
Out对象:主要用于向客户端输出数据
Session对象:主要用来保持在服务器与一个客户端之间需要保留的数据。当客户端关闭网站的所有网页或关闭浏览器时,session对象中保存的数据会自动清除。比如购物车。
Application对象:用于保存用户信息,并且一个容器中的多个用户共享一个application对象,其保存的信息被所有用户所共享。一个用户用完了,其他用户还可能使用。
PageContext对象:用来管理网页属性,为JSP页面包装页面的上下文。
Config对象:Servlet的配置对象
Page对象:用来处理JSP网页,指的是JSP页面对象本身
Exception对象:处理JSP文件执行时发生的错误和异常只有在JSP页面的page指令中指定isErrorPage = "true"后,才可以在本页面使用exception对象。