jsp1

简介: jsp1

1. 什么是jsp,它有什么用?

jsp的全换是java server pages。Java的服务器页面。

jsp的主要作用是代替Servlet程序回传html页面的数据。

因为Servlet程序回传html页面数据是一件非常繁锁的事情。开发成本和维护成本都极高。
演示

新建08_jsp模块,并且建立Tomcat服务器实例,注意导入Tomcat/lib下的service.api.jar

新建src/com.servlet/PringHtml.java ,并在web.xml配置

PringHtml

package com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
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");
    }
}

运行Tomcat,结果


在web下新建a.jsp

a.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 上午 11:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    这是html页面数据
</body>
</html>

运行Tomcat,结果


jsp小结

1、如何创建jsp的页面


输入文件名敲回车即可!


2、jsp如何访问:

jp页面和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字节码程序。

我们跟踪原代码发现,HttplspBase类。它直接地继承了HttpServlet类。也就是说。jsp翻译出来的java类,它间接继承了HttpServlet类。也就是说,翻译出来的是一个Servlet程序


我们打开java源文件不难发现其里面的内容是:


总结:通过翻译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(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
      return;
    }
    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;
    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
            null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
      out.write("\r\n");
      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("    <title>Title</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("    a.jsp页面\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
相关文章
|
7月前
|
JavaScript Java
jsp使用
jsp使用
|
Java 数据库
Jsp应用
Jsp应用
56 0
|
Java 容器
15JavaWeb基础 - JSP介绍
15JavaWeb基础 - JSP介绍
54 0
|
Java
jsp3
jsp3
136 2
|
存储 Java 应用服务中间件
JSP详解
JSP详解
|
存储 缓存 Java
jsp2
jsp2
50 0
|
前端开发 Java 应用服务中间件
深入理解JSP(一)
深入理解JSP(一)
124 0
【JSP】jsp的组成
在上一篇博客【jsp】为什么出现JSP?,讲了jsp出现的原因,接下来这篇博客,将向大家讲述jsp中都有哪些内容。
|
开发框架 Java 数据库连接
为什么使用JSP?
为什么使用JSP?
314 0
|
Java 数据库连接 API
使用jsp
使用jsp
129 0

相关课程

更多