JSP

Java Server Pages

什么是JSP?

Java服务端页面,也和Servlet一样,用于动态Web技术

最大的特点:

  • 写JSP就像在写HTML
  • 区别
    • HTML只给用户提供静态数据
    • JSP可以内嵌JAVA代码,为用户提供动态数据

JSP原理

  • 代码和HTML基本没有区别
  • 服务器内部工作
    • Tomcat工作空间中的jsp文件夹中,发现页面转变成了Java程序

 

 

    •   浏览器向服务器发送请求,不管访问什么资源,都是在访问Servlet
    •       JSP最终也会被转换成一个Java类

JSP本质上也是一个HttpServlet

  
//初始化
public void _jspInit() { } //销毁 public void _jspDestroy() { } //JSP的服务 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { final java.lang.String _jspx_method = request.getMethod(); if ("OPTIONS".equals(_jspx_method)) { response.setHeader("Allow","GET, HEAD, POST, OPTIONS"); return; } if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) { response.setHeader("Allow","GET, HEAD, POST, OPTIONS"); response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS"); return; } }

1、判断请求(就是上述JSP服务中的判断)

      if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
        return;
      }

2、内置对象

    final javax.servlet.jsp.PageContext pageContext; //页面上下文
    final javax.servlet.ServletContext application;   //applicationContext
    final javax.servlet.ServletConfig config;  //配置
    javax.servlet.jsp.JspWriter out = null;  //out
    final java.lang.Object page = this;  //当前页
    javax.servlet.jsp.JspWriter _jspx_out = null;  //out
    javax.servlet.jsp.PageContext _jspx_page_context = null;

3、输出页面前增加的代码

  •  以下的对象,可以直接在JSP页面中直接使用
      response.setContentType("text/html; charset=UTF-8");  //设置响应的页面类型
//以下的对象,可以直接在JSP页面中直接使用 pageContext
= _jspxFactory.getPageContext(this, request, response, null, false, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); out = pageContext.getOut(); _jspx_out = out;

 

 

posted @ 2021-05-10 17:00  爱吃番茄炒鸡蛋  阅读(58)  评论(0)    收藏  举报