zoukankan      html  css  js  c++  java
  • JSP运行原理和九大隐式对象

    一、JSP运行原理

      每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。

      由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。

    二、九大隐式对象

      JSP引擎在调用JSP对应的_jspService时,会传递或创建9个与web开发相关的对象供_jspService使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

    request HttpServletRequest
    response HttpServletResponse
    session HttpSession
    application ServletcContext
    config   ServletConfig
    exception   (特殊情况下使用)
    page    this  (本JSP页面)
    out      JspWriter  (带缓冲的PrintWriter)
    pageContext   (使普通Java类可访问WEB资源,自定义 标签常用)
     
    a)request HttpServletRequest
    b)response HttpServletResponse
     
    1、猜数字游戏
      guess.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>猜数字游戏</title>
      </head>
    <body>
      <form action="/myday09/GuessNumber/returnNumber.jsp" method="post">
        输入要猜的数字:<input type="text" name="number" />[1~10]之间<br />
        <input type="submit" value="我猜">
      </form>
    </body>
    </html>

    returnNumber.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>猜数字游戏</title>
      </head>
    <body>
      <%
        String number = request.getParameter("number");
        int num = Integer.parseInt(number);
        //产生随机数
        Random random = new Random();
        int result = random.nextInt(10)+1;
        response.getWriter().write("当前数字为:"+result+"<hr />");

        if(num==result){
          response.getWriter().write("猜中了,数字为:"+num);
        }else if(0<num && num<result){
          response.getWriter().write("没猜中,小了");
        }else if(num <= 10){
          response.getWriter().write("没猜中,大了");
        }else {
          response.getWriter().write("输入不正确");
        }
      %>
    <a href="/myday09/GuessNumber/guess.jsp">点击返回</a>
    </body>
    </html>

       总结:对于客户端,/代表的是webapps,而不是myday09目录

  • 相关阅读:
    Camunda工作流——第三章 网关
    Camunda工作流——第二章 任务
    Camunda工作流——第一章 参与者
    需求库规划库储备库四库更新区域类型到meta_localinfo表
    备份需求库规划库储备库四库数据到temp模式里
    php 处理高精度计算函数
    php 使用file_put_content将 数据 push 到csv文件中
    忘记rabbitmq账号密码?创建rabbitmq新用户
    docker+nginx+consul+swoft 实现动态负载均衡
    docker 基础操作
  • 原文地址:https://www.cnblogs.com/hacket/p/2952198.html
Copyright © 2011-2022 走看看