1、什么是 jsp,为什么要学习jsp?
JSP(全称 Java Server Pages是由 Sun 公司专门为了解决动态生成 HTML 文档的技术。
jsp 的全换是 java server pages。Java 的服务器页面。
jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据。
因为 Servlet 程序回传 html 页面数据是一件非常繁锁的事情。开发成本和维护成本都极高
2、Servlet 程序输出 html 页面。
在学习 jsp 技术之前,如果我们要往客户端输出一个页面。我们可以使用 Servlet 程序来实现。具体的代码如下:
1)Servlet 输入 html 页面的程序代码
public class HtmlServlet 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>");
writer.write("<html lang=\"en\"");
writer.write("<head>");
writer.write(" <meta charset=\"UTF-8\">");
writer.write(" <title>Title</title>");
writer.write("</head>");
writer.write("<body>");
writer.write(" 这是HTML页面");
writer.write("</body>");
writer.write("</html>");
}
}
2)在浏览器中输入访问 Servlet 的程序地址得到以下结果
上面的代码我们不难发现。通过 Servlet 输出简单的 html 页面信息都非常不方便。 那我们要输出一个复杂页面的时候,就更加的困难,而且不利于页面的维护和调试。 所以 sun 公司推出一种叫做 jsp 的动态页面技术帮助我们实现对页面的输出繁锁工作。
jsp 页面的访问千万不能像 HTML 页面一样。托到浏览器中。只能通过浏览器访问 Tomcat 服务器再访问 jsp 页面
3、如何创建一个 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
4、JSP的本质
jsp 的本质 ,其实是一个 Servlet 程序。
首先我们去找到我们 Tomcat 的目录下的C:\Users\It.me.IntelliJIdea2019.3\system\tomcat\Tomcat_8_0_50_JavaWeb_4\work\Catalina\localhost 目录。当我们发布09-JSP 工程。并启动 Tomcat 服务器后。我们发现 在 work\Catalina\localhost 目录下多出来一个 09-JSP 目录
一开始 09-JSP 目录还是空目录。
然后,我们在浏览器输入一个 jsp 文件的访问路径访问。 比如 http://localhost:8080/09_JSP/a.jsp 访问 a.jsp 文件
09-JSP 目录马上会生成 org\apache\jsp 目录。 并且在会中有两个文件。
a_jsp.class 文件很明显是 a_jsp.java 源文件编译后的字节码文件。 那么 a_jsp.java 是个什么内容呢?
生成的 java 文件名,是以原来的文件名加上_jsp 得到。 xxxx_jsp.java 文件的名字
我们打开 a_jsp.java 文件查看里面的内容: 发现生成的类继承于 HttpJspBase 类。这是一个 jsp 文件生成 Servlet 程序要继承的基类!!
我们跟踪原代码发现,HttpJspBase 类。它直接地继承了 HttpServlet 类。也就是说。jsp 翻译出来的 java 类,它间接了继 承了 HttpServlet 类。也就是说,翻译出来的是一个 Servlet 程序
总结:通过翻译的 java 源代码我们就可以得到结果:jsp 就是 Servlet 程序。
大家也可以去观察翻译出来的 Servlet 程序的源代码,不难发现。其底层实现,也是通过输出流。把 html 页面数据回传 给客户端。