java--jsp(Java Server Page)_1

11 篇文章 0 订阅
6 篇文章 0 订阅

JSP技术简介
JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护。
JSP是HTML代码与Java代码的混合体。
JSP文件通常以JSP或JSPX的扩展名。
JSP拥有自己的语法。
JSP形式上像HTML,但本质上是Servlet。
JSP的出现,使得将Web开发中的HTML与业务逻辑代码有效分离成为可能。通常JSP只负责生成动态的HTML文档,而业务逻辑由其他Java组件如JavaBean来实现。JSP可以通过Scriptlet来访问这些组件。
< % %>
ContentType与pageEncoding的区别:
pageEncoding是jsp文件本身的编码 ,把jsp文件编译成java的时候给编译器用的 。
contentType的charset是指服务器发送给客户端时的内容编码 ,是浏览器解析网页的时候用的
如果两个任意设置了其中一个,另一个即会与此保持一致。但,contentType除可以设置charset外,还可以设置MIME类型,如text/html
Tomcat首次访问JSP的过程:
当浏览器(客户端)首次请求时,如果没有此jsp对应的servlet的class文件,tomcat会把jsp文件翻译成servlet源文件.java,再编译成servlet的.class文件,把.class 文件发送给浏览器,让浏览器解析.class文件。如果有,就调用。
容器按照以下顺序处理JSP请求

1、查找与JSP文件对应的Servlet,如果已经存在,就调用它的服务方法。
2、如果与JSP对应的Servlet不存在,就解析文件系统中的JSP文件,将它翻译成Servlet源文件,接着把Servlet源文件编译成Servlet类,然后再去初始化并运行Servle。
下是经过翻译的JSP文件,可见在它的服务方法中存在以下对像
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;

JSP语法:
SP指令 < %@ 指令名 属性=“值”%>
JSP声明 成员变量,或是成员方法。<%! …. %>
Java程序片段 不论有多少这样的代码块,都将包含_jspSerivice方法中。<% … %>
Java表达式 快速输出信息. _jspSerivice。<%= …%>
JSP隐含对像 pageContext.request,response,session,confing,application

JSP指令-page:

语法:<%@ 指令名 属性=“值”%>
Page指令-用于指定所使用的语言,及导入的包。
属性说明:
language – 示例:language=“java”
import -如: (注意多个引用之间使用逗号分开。)
<%@ page import=“java.util.,java.sql.”%> contentType – 指定响应结果的MIME类型。默认为text/html;charset=ISO-8859-1
session = true | false –指定jsp页面是否使用session.
errorPage = url – 指定当发生异常时转发到哪一个页面。
isErrorPage = true|false, - 表示此页是处理异常的页面。
pageEncoding – 设置页面的编码方式,此编码方式,会自动应用到contentType中的charset上,如果没有设置content-Type的话。显示时以content-Type为准。建议这两个值应该设置一个或至少应该一致。建议设置content-Type
buffer = none | 8kb | sizeb – 设置页面缓冲区大小。-建议不要修改此值。

JSP指令-taglib—标签库:
taglib指令,用于在页面上声明要使用的自定义标签。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri – 指定自定义的标签的引用URI。
Prefix-指定使用时的前缀。
如:
此内容将在讲自定义标签时具体讲。
JSTL :java Standard Tag Lib
URL – 统一资源定位符
URI – 统一资源标识符.—XML namespace=“http://hncu.cn
这里写图片描述

这里写图片描述

<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" import="java.util.*,java.awt.*" errorPage="jsps/error.jsp" pageEncoding="UTF-8"%>
<!-- jsp中的导报:1.import   2.","+包 -->
<!-- isErrorPage="true":错误页面 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>JSP技术演示</title>
  </head>

  <body>
    <h2>这是主页</h2>
    cForEach:<c:forEach begin="0" end="10">
        这里相当于for循环...<br/>
    </c:forEach>
    <%
         for(int i=3;i<10;i++){  //注意JSP表达式不能用;号结束
     %>
           <%=i %><br/>
     <%
         }
     %>

    <%//JSP的Java程序片段和JSP表达式:
        //可以声明多个Java片段,它们都位于_jspService方法中。
        int a=100;
        out.println(a+"<br/>");//JspWriter
        //jsp八个隐藏对象--用PageContext()可以获取


        Button b=new Button("测试导报");//在page指令中import属性添加,java.awt.*
        Date d=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time=sdf.format(d);
        out.println(time+"<br/>");

        //JSP中的局部变量---在底层函数 _jspService()内都有效
        String str="湖南城院";

        //错--底层函数_jspService()内不可嵌套函数
        //void hello(){
        //}

        //pageContext.setAttribute("name", "page1111");
        //request.setAttribute("name", "req22222");
        //session.setAttribute("name", "session33333");
        application.setAttribute("name", "app44444");


     %>

     <%!//JSP声明
     //声明函数或者变量,JSP中的成员变量或方法----在index_jsp.java中和  _jspService()并列的方法
        //语法:
        int t=1;
        String hello(){
            return "hello";
        }
        //可以声明静态变量,也可以声明静态方法。可以多个JSP声明的代码块。
      %>

      <%out.println("out.println_str:"+str+"<br/>");//在底层函数 _jspService()内访问它的的局部变量 
        out.println("out.println_hello():"+hello()+"<br/>");//在底层函数 _jspService()内访问它的的成员变量


        //依次从pageContext开始request,session,application,从小到大寻找一个name属性的值
        String name=(String)pageContext.findAttribute("name");
        out.println("out.println_name:"+name+"--pageContext.,request,session,application中之一的name属性值<br/>");

        String name2=(String)pageContext.findAttribute("name2");
        out.println("out.println_name2:"+name2+"<br/>");//null
      %>

      $_name:${name}--pageContext.,request,session,application中之一的name属性值<br/><!-- el表达式 -->
      $_name2:${name2}若4个容器中都不存在该属性,什么也不输出(不会输出null)<br/><!-- 若4个容器中都不存在该属性,什么也不输出(不会输出null) -->

      <!-- 快速输出, 小细节: %=两者紧挨着,结尾处不要添加";"号 -->
      <%="快速输出str:"+str+"<br/>" %>
      <%="快速输出hello():"+hello()+"<br/>" %>
      <%="快速输出name:"+name+"<br/>" %>
      <%="快速输出name2:"+name2+"<br/>" %><!-- 输出null -->

     <% //exception.getStackTrace();//必须在page指令中添加属性isErrorPage="true" 
        //使用exception,必须在Page指令中添加属性:isErrorPage="true"
     %>

     <%
     //以下用于测试erroPage属性
     //int i = 100/0;   
   %>

  </body>
</html>
<%@ page session="false" language="java" import="java.util.*,java.awt.*" isErrorPage="true" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>错误...</title>
  </head>

  <body>
    <h1>这是错误页面</h1>

     <%
        out.println(exception);
        //session.getAttribute("aa");
      %>
  </body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值