关于JSP学习中一些记录

【JSP探究】

一、JSP转换后的源文件的位置

  • 由于不同版本的IDEA的默认路径不同,所以我们无法统一按照网上所给路径进行查找
  • 我们可以创建一个JavaWeb项目并运行,查看日志就能找到运行时文件所放位置

关于JSP学习中一些记录

然后就可以找到了!

关于JSP学习中一些记录

二、JSP声明变量的位置

在JSP中用两种声明变量的方法,一种是在


    $Title$

  Welcome! You are visitor number

  Welcome! You are visitor number

刷新页面运行结果:

关于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 {

 int count = 0; //声明在中的变量
  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map _jspx_dependants;

  private static final java.util.Set _jspx_imports_packages;

  private static final java.util.Set _jspx_imports_classes;

  static {
    _jspx_imports_packages = new java.util.HashSet<>();
    _jspx_imports_packages.add("javax.servlet");
    _jspx_imports_packages.add("javax.servlet.http");
    _jspx_imports_packages.add("javax.servlet.jsp");
    _jspx_imports_classes = null;
  }

  private volatile javax.el.ExpressionFactory _el_expressionfactory;
  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;

  public java.util.Map getDependants() {
    return _jspx_dependants;
  }

  public java.util.Set getPackageImports() {
    return _jspx_imports_packages;
  }

  public java.util.Set getClassImports() {
    return _jspx_imports_classes;
  }

  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
    if (_el_expressionfactory == null) {
      synchronized (this) {
        if (_el_expressionfactory == null) {
          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        }
      }
    }
    return _el_expressionfactory;
  }

  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
    if (_jsp_instancemanager == null) {
      synchronized (this) {
        if (_jsp_instancemanager == null) {
          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
        }
      }
    }
    return _jsp_instancemanager;
  }

  public void _jspInit() {
  }

  public void _jspDestroy() {
  }

  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;
    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("\n");
      out.write("\n");
      out.write("\n");
      out.write("  \n");
      out.write("    $Title$\n");
      out.write("  \n");
      out.write("  \n");
      out.write('\n');
      out.write('\n');

      out.write(' ');
      out.write(' ');
 count++;
      out.write("\n");
      out.write("  Welcome! You are visitor number\n");
      out.write("  ");
      out.print( count );
      out.write("\n");
      out.write("  \n");
      out.write("\n");
      out.write("  \n");
      out.write("  ");
 int i = 0; //声明在中的变量
      out.write('\n');
      out.write(' ');
      out.write(' ');
 i++;
      out.write("\n");
      out.write("  Welcome! You are visitor number\n");
      out.write("  ");
      out.print( i );
      out.write("\n");
      out.write("  \n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("\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);
    }
  }
}

通过观察代码后我们发现,原先声明在

我们学习JAVA的时候就知道成员变量会被多个对象共享,而局部变量单独对象访问。所以count会自动增加,i不递增。

在这里还有个问题需要说明,如果在

Original: https://www.cnblogs.com/HuihuiGoforIt/p/16200333.html
Author: 小hui同学
Title: 关于JSP学习中一些记录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608597/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring中的Interceptor拦截器中使用@Autowired注解,在运行时会出现空指针

    问题描述 我们一般在拦截器中会写一些逻辑处理,比如获取用户的登录信息,将信息存入ThreadLocal等等。而获取用户信息的时候就有多种方式了。比如:在session中获取,或者使…

    Java 2023年5月30日
    089
  • 优秀体现在细微处

    上面是团队内小王同学整理的需求评审计划,我们看最后一列的细节之处,即,加上了与这个需求相关的资料。 希望我们都能像上面的小王同学一样。 我们的信息,从不同角度来看,总会分散在不同的…

    Java 2023年6月15日
    073
  • vmware16pro许可证密钥最新分享 vmware16pro官方可用激活码

    vmware16pro是一款强大的虚拟机软件,但是该软件的免费使用期限只有30天。今天小编就给大家分享一下2022最新官方可用的vmware16pro许可证密钥,小编多台机器测试激…

    Java 2023年6月5日
    0257
  • eclipse配置JDK和设置编译版本的几种方法

    注:截图时使用的eclipse4.6、jdk1.8、jdk1.7 一、eclipse配置JDK 打开window–>preferences,弹出的页面里选择Java–>…

    Java 2023年5月30日
    0202
  • java Math类

    java.lang.Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单 常用…

    Java 2023年5月29日
    077
  • Nginx配置之负载均衡、限流、缓存、黑名单和灰度发布

    一、Nginx安装(基于CentOS 6.5) 1.yum命令安装 yum install nginx –y(若不能安装,执行命令yum install epel-release)…

    Java 2023年5月30日
    083
  • 寿司店问题 PV操作 pthread表示

    寿司店问题。假设一个寿司店有 5 个座位,如果你到达的时候有一个空座位,你可以立刻就坐。但是如果你到达的时候 5 个座位都是满的有人已经就坐,这就意味着这些人都是一起来吃饭的,那么…

    Java 2023年6月13日
    068
  • Vue router-link点击事件不生效

    在学习路由时,想给 贴个代码: index.html 命名视图 <router-link v-on:click=&qu…

    Java 2023年6月13日
    089
  • Fiddler高级用法

    Fiddler高级用法 1. 简单用法 Fiddler作为一个基于http协议的抓包工具,一直在业界有广泛使用。很多测试或者前端在使用Fiddler时,仅仅用于查看前端和服务端之间…

    Java 2023年6月13日
    058
  • Java运行过程和跨平台原理

    一、Java的运行过程 步骤:编译->运行 将.java源文件进行编译,生成.class字节码文件 java虚拟机对字节码文件进行解释执行 例如:运行HelloWorld.j…

    Java 2023年6月9日
    073
  • 性能优于JDK代理,CGLib如何实现动态代理

    按照代理的创建时期,代理类可以分为两种。静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用…

    Java 2023年5月30日
    083
  • MySQL十八:写语句的执行过程

    转载~ 当我们需要修改一个记录时,数据库会先根据条件找到要修改的数据,然后执行修改写入操作,因此我们再分析写操作的执行过程时,其实是包含读语句的执行过程的。 一、读语句的执行过程 …

    Java 2023年6月8日
    086
  • 手写个注册中心

    注册中心,主要作用就是做服务注册和发现; 常见注册中心 Eureka:Eureka是Spring Cloud Netflix中的重要组件,主要作用就是做服务注册和发现。2.0遇到性…

    Java 2023年6月7日
    073
  • idea使用教程-安装

    【1】将安装包进行解压–》选择固态盘符【2】发送到桌面快捷方式,生成一个快捷方式【3】打开: 选择主题: 先进入再说,免费试用: 创建一个项目: 选择JDK: 找到je…

    Java 2023年6月5日
    065
  • 新一代分布式实时流处理引擎Flink入门实战操作篇

    @ 安装部署 安装方式 Local(Standalone 单机部署) Standalone部署 Standalone HA部署 Flink On Yarn演示案例 概述 会话(Se…

    Java 2023年6月5日
    064
  • 四大函数式接口

    四大函数式接口 Fuction 函数型接口,有一个输入参数,有一个输出参数 函数型接口:输入一个参数,输出输入的参数 //Function 函数型接口 public class D…

    Java 2023年6月5日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球