JSP

55 篇文章 0 订阅
10 篇文章 0 订阅

JSP

1、简介

  • JSPJava Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。

  • JSPJava代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。

  • JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

2、JSP在运行时转换的Servlet类

  • index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
  • index_jsp.java
  • 我的电脑此文件的路径:C:\Users\73256\.IntelliJIdea2018.2\system\tomcat\Unnamed_javaweb-session-cookie\work\Catalina\localhost\ROOT\org\apache\jsp
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

  /*---------------------------------此处部分代码省略-----------------------------------*/
  //初始化
  public void _jspInit() {
  }
  //销毁
  public void _jspDestroy() {
  }
  //JSPService
  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;
      }
    }

    final javax.servlet.jsp.PageContext pageContext;//页面上下文
    javax.servlet.http.HttpSession session = null;//session
    final javax.servlet.ServletContext application;//applicationContext
    final javax.servlet.ServletConfig config;//config
    javax.servlet.jsp.JspWriter out = null;//out
    final java.lang.Object page = this;//page:当前页面
    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;
        
	  //HTML代码,会被转换为下面的形式。
      out.write("\n");
      out.write("<html>\n");
      out.write("<body>\n");
      out.write("<h2>Hello World!</h2>\n");
      //Java代码原封不动的转换
      System.out.println("Hello World!");
      out.write("</body>\n");
      out.write("</html>\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);
    }
  }
}
  • 9大内置对象可在JSP脚本中直接调用
    • pageContext:可以取得任何范围的参数,保存的数据只在一个页面中有效
    • request:客户端的请求,作用域为一次请求
    • response: 响应
    • session:存数据,保存的数据只在一次会话中有效,即从打开到关闭浏览器
    • application:保存的数据在服务器中有效,从打开到关闭服务器
    • config:主要作用是取得服务器的配置信息
    • out :用于在Web浏览器内输出信息
    • page :代表JSP本身
    • exception:显示异常信息

3、JSP基础语法

3.1、JSP表达式

  • 作用:用来将程序的结果,输出到客户端
  • **格式:<%= 变量或者表达式%>**
  <%= "你好!"%>

3.2、JSP脚本片段

  • 作用:写Java代码

  • 格式:<% Java代码%>

<%
    int sum = 0;
    for (int i = 0; i <=100 ; i++) {
      sum+=i;
    }
    //将sum打印到页面
    out.println("<h1>Sum="+sum+"</h1>");
%>
  • 脚本片段之间也可嵌入HTML元素
<%
    for (int i = 0; i < 5 ; i++) {
%>
	<h1>Hello World!--=<%=i%></h1>
<%
	}
%>
  • 测试访问
    在这里插入图片描述

3.3、JSP声明

  • 作用:JSP声明中的代码会被编译到JSP生成的Java类中,即可以使用JSP声明定义其Java类的成员变量、方法、静态代码块等。

  • 格式:<%! Java代码 %>

<%!
    static {
        System.out.println("<h1>static代码块执行了!</h1>");
    }
    private String name="JSP";
    public String getName(){
        return "<span style=\"font-size: 30px\">"+name+"</span>";
    }
%>

<%
    for (int i = 0; i < 5; i++) {
        out.write(getName());
%>
    <span style="color: red;font-size: 30px">--=<%=i%></span><br>
<%
    }
%>
  • 测试访问:
    在这里插入图片描述

3.4、JSP指令

指令描述
<%@ page … %>定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义
  • 合并网页
<%--@include 合并三个页面,形成一个页面--%>
<%@include file="common/header.jsp"%>
    <h1>网页主体</h1>
<%@include file="common/footer.jsp"%>
  • index_jsp.java中的代码
    在这里插入图片描述
    在这里插入图片描述

3.5、JSP标签

语法描述
jsp:include用于在当前页面中包含静态或动态资源
jsp:useBean寻找和初始化一个JavaBean组件
jsp:setProperty设置 JavaBean组件的值
jsp:getProperty将 JavaBean组件的值插入到 output中
jsp:forward从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element动态创建一个XML元素
jsp:attribute定义动态创建的XML元素的属性
jsp:body定义动态创建的XML元素的主体
jsp:text用于封装模板数据
  • 拼接页面
<jsp:include page="/common/header.jsp"/>
<h1>网页主体</h1>
<jsp:include page="/common/footer.jsp"/>
  • index_jsp.java中的代码
    在这里插入图片描述
  • 测试访问
    在这里插入图片描述

3.6、EL表达式

  • 格式:${}

  • 作用:获取数据、执行运算、获取web开发常用对象

<h1>${"Hello World!"}</h1>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值