zoukankan      html  css  js  c++  java
  • JavaWeb总结(三)—JSP

    一、JSP简介

    1.基本认识
    (1)JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp。
    (2)
    在JSP页面中编写的Java代码需要嵌套在<% %>中,嵌套在<%和%>之间的Java代码被称之为脚本片段,没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。
    (3)JSP中的Java代码可以使用out.println语句将其他Java程序代码产生的结果字符串输出给客户端,也可以使用System.out.println语句将它们打印到命令行窗口。
    (4)JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。
    (5)在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%= 和 %>之中,就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号。

    2.运行原理
    (1)WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。
    (2)每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
    (3)JSP规范也没有明确要求JSP中的脚本程序代码必须采用Java语言,JSP中的脚本程序代码可以采用Java语言之外的其他脚本语言来编写,但是,JSP页面最终必须转换成Java Servlet程序。
    (4)可以在WEB应用程序正式发布之前,将其中的所有JSP页面预先编译成Servlet程序。

    二、JSP九大隐式对象

         每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
    由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
    JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

    1.基本认识

    image

    <html>
      <head>
        
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
      
      	<%
      		//隐含对象: 没有声明就可以使用的对象,JSP一共有九个隐含对象。
      		
      		//1.request: HttpServletRequest对象。
      		String name = request.getParameter("name");
      		System.out.println(name);
      		
      		//2.response: HttpServletResponse对象,在JSP页面不会调用此任何方法。
      		System.out.println(response instanceof HttpServletResponse);//true
      		
      		//3.pageContext: PageContext对象,可以从该对象中获取其他8个隐含对象,也可以获取当前页面的其他信息。
      		ServletRequest request2 =  pageContext.getRequest();
      		System.out.println(request == request2); //true
      		
      		//4.session: 代表浏览器和服务器的会话,是HttpSession的一个对象。
      		System.out.println(session.getId());
      		
      		//5.application: 代表当前Web应用,是ServletContext对象。
      		System.out.println(application.getInitParameter("name"));
      		
      		//6.config: ServletConfig对象,当前JSP对应的Servlet的ServletConfig对象,几乎不用。
      		System.out.println(config.getInitParameter("age"));
      	
      		//7.out: JspWriter对象,调用out.println()可以直接把字符串显示到浏览器中。
      		out.println("这个代码是在JSP打印的");
      		
      		//8.page: 指向当前JSP对应Servlet对象的引用,但为Object类型,开发不用。
      		//9.exception: 页面声明<@ page isErrorPage="true" @>时可以使用。
      		
      		//pageContext、request、session、application 作用域从小到大。
      		//response、out、config、page
      		//exception特殊
      	%>
      
      </body>
    </html>

    三、JSP基本语法

    1.JSP模板元素

         JSP页面的HTML内容称为JSP模板元素。

         JSP模板元素定义了网页的基本骨架,即定义了页面的结构和外观。

    2.JSP表达式

         JSP表达式用于将程序数据输出到客户端。语法: <%= 变量或表达式 %>

         举例:输出当前系统时间.

    <%= new java.util.Date() %>

         JSP引擎在翻译脚本表达式时,会将程序转换成字符串,然后在相应的位置用out.print(…)将数据给客户端。

         JSP脚本表达式中的变量或者表达式后面不能有分号。

    3.JSP脚本片段

    JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。语法:
          <%
             多行java代码
          %>

    在<% %>中可以定义变量、编写语句,不能定义方法。

    <%
        int sum=0;//声明变量
    
        /*编写语句*/
        for (int i=1;i<=100;i++){
            sum+=i;
        }
        out.println("<h1>Sum="+sum+"</h1>");
    %>

    注意事项:

         (1)JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。

         (2)JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。

         (3)在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。

         (4)多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
    (5)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句。

    4.JSP注释

    在JSP中,注释有两大类。

    显式注释: 直接使用HTML风格的注释。eg: <!--注释内容-->

    隐式注释: 直接使用Java的注释。eg: // 、/* */

                 JSP自己的注释: <%--注释内容—%>

    HTML的注释在浏览器中查看源文件的时候是可以看得到的,而JAVA注释和JSP注释在浏览器中查看源文件时是看不到注释的内容的,这就是这三种注释的区别。

    <!--这个注释可以看见-->
    
    <%
        //JAVA中的单行注释
    
        /*
            JAVA中的多行注释
        */
    %>
    
    <%--JSP自己的注释--%>
  • 相关阅读:
    服务器管理注意事项
    帮朋友发个招聘信息
    tcp/ip协议简介
    程序员的本质(转)
    不同部门员工吃饭时聊些什么
    IE用户比Opera和Chrome用户的IQ低
    有一天,程序猿们突然发现他们要涨的工资掉到井里啦!大家都很害怕,连忙一个吊着一个,从树上伸到井里去捞工资。正好他们摸到工资的时候,一个老程序员忽然兴奋的大叫:别蠢了,要涨的工资还好好的挂在天上呢!
    asp.net使用缓存造成iis重启的问题
    Win批量修改文件名&扩展名
    引用变量位于Java虚拟机的运行时数据区的情况分析
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5375011.html
Copyright © 2011-2022 走看看