1.什么是jsp,它有什么用?
jsp 的全称是 java server pages。Java 的服务器页面。
jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。
因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高。
Servlet 回传 html 页面数据的代码:
public class PringHtml extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 通过响应的回传流回传 html 页面数据
resp.setContentType("text/html; charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("<!DOCTYPE html>\r\n");
writer.write(" <html lang=\"en\">\r\n");
writer.write(" <head>\r\n");
writer.write("
<meta charset=\"UTF-8\">\r\n");
writer.write("
<title>Title</title>\r\n");
writer.write(" </head>\r\n");
writer.write(" <body>\r\n");
writer.write("
这是 html 页面数据 \r\n");
writer.write(" </body>\r\n");
writer.write("</html>\r\n");
writer.write("\r\n");
}
}
jsp 回传一个简单 html 页面的代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
这是 html 页面数据
</body>
</html>
jsp 的小结:
1、如何创建 jsp 的页面?
输入文件名敲回车即可!!
2、jsp 如何访问:
jsp 页面和 html 页面一样,都是存放在 web 目录下。访问也跟访问 html 页面一样。
比如:
在 web 目录下有如下的文件:
web 目录
a.html 页面
访问地址是 =======>>>>>> http://ip:port/工程路径/a.html
b.jsp 页面
访问地址是 =======>>>>>> http://ip:port/工程路径/b.jsp
2.jsp 的本质是什么
JSP本质上是一个Servlet程序,当我们第一次访问jsp页面的时候,Tomcat服务器会帮我们把jsp页面翻译成一个java源文件,并对他进行编译为.class字节码程序,我们打开java文件不难发现其里面的内容是
public final class a jasp extends org.apache.apache.jasper.runtime.HttpJspBase
我们跟踪源代码发现HttpJspBase 类。它直接继承了HttpJspBase 类。也就是说.jsp翻译出来的java类,它间接继承了HttpJspBase 类。也就是说翻译出来的是一个Servlet程序。
总结:通过翻译的.java源代码我们就可以得到结果:jsp就是Servlet程序。
观察翻译出来的Servlet程序源代码不难发现,其实它的底层实现也是通过输出流把html页面数据传给客户端。
public void _jspService(final javax.servlet.http.HttpServletRequest request, final
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)
&& !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {response.sendError(HttpSe