java自学之路-----JSP_基础语法

来源:互联网 发布:淘宝商业的竞争环境 编辑:程序博客网 时间:2024/05/02 04:59

JSP{

Java Server Page

1.和Servlet技术一样都是sun公司定义的一种用于开发动态web资源的技术

2.允许在页面内编写java代码,允许获得web开发常用的对象,实现与浏览器的交互

3.jsp就是特殊的servlet,会被翻译成servlet文件(编写jsp时,通过码表将页面存到硬盘中,服务器翻译的时候会查另一个码表转成servlet程序)

4.长期实践中,servlet作为web中的控制组件使用,jsp作为数据显示模板来使用


  <!-- 在jsp中写java代码 ,最终jsp会被翻译成.java文件-->  <%  Date date = new Date();  out.write(date.toLocaleString());   %>

语法:

模板元素:页面中的HTML代码,用于定义页面的结构和外观

脚本表达式:用于将程序数据输出到客户端,实际就是调用了out.print(....)将数据输出。格式:<%=...  %>

脚本片段:用于在jsp页面编写多行java代码,只能出现java代码不能出现其他模板元素,JSP会将片段中的内容原封不动的写到servlet文件中。格式:<% ...%>

一个jsp页面可以由多个脚本片段,并且所有的片段都可以互相访问

声明:jsp页面编写的所有代码,默认会被翻译到servlet的service方法中,如果是使用声明语句,则会被翻译到方法外.格式:<%!   ... %>

作用:用于定义jsp页面翻译后的servlet程序的静态代码块,成员变量和方法

注释:jsp被翻译成servlet程序时,会忽略jsp页面的注释内容。格式:<%--.... --%>

指令:为jsp引擎设计的,不产生任何可见的输出内容,而是告诉该页面如何处理不属于jsp语法的其余部分。格式:<%@指令   属性名=“值”.....%>

page:<%@page contentType="text/html;charset=utf-8" %>,告诉服务器该页面采用的编码。可以防止jsp页面任意位置

language="java",——说明jsp页面嵌套的是什么语言的代码

extends=“package.class”——翻译后的servlet继承那个类(不需要修改)

import=“java.util.Date,java.sql.*”——导入一些java类到jsp页面,jsp引擎会自动导入部分包

session=“true”——是否在该页面获取session对象,false表示该页面不会自动获得session(需要输入代码手动获得)。该属性是由于session生命周期较长,避免浪费服务器资源

buffer=“8kb”——定义jsp页面的缓冲区大小

autoFlush=“true”——是否自动刷新

isThreadSafe=“true”——是否线程安全。指定为false那么久无法同时访问该页面

errorPage=“/errors/error.jsp”——指定出错误时转向的处理页面,属性值为使用的绝对路径,/斜杠开头代表web应用。在web.xml文件中指定整个web应用程序错误处理页面,使用<error-page>,优先级低

isErrorPage="false"——指定该页面是否为错误处理页面。置为true那么该jsp页面就会自动创建exception对象

contentType=“text/html;charset=utf-8”——让服务器告诉浏览器以什么码表打开该文件

pageEncoding=“utf-8”——通知服务器用哪种码表翻译jsp为servlet(eclipse默认将文件保存方式,浏览器打开方式都定义为该码表)

isELIgnored=“true”——默认是否支持el表达式

include:静态包含,用于引入其他jsp页面,如果引入了那么jsp会将两个jsp翻译为一个servlet,编译时包含,性能较好

    动态包含,request.getRequestDispatcher("").include("");多个页面翻译为多个servlet,在访问的时候再进行包含,运行时包含

taglib:导入自定义标签,用于在jsp页面使用自定义的标签


标签:成为jsp动作元素,用于jsp页面中提供业务逻辑的功能,避免在jsp页面直接写java代码

   <!--用于将首页置为某个servlet,因为在配置文件中不能将首页设置为servlet-->  <jsp:forward page="/servlet/ServletDemo">  <!--用于在转发或应用是将参数传递-->  <jsp:param value="name" name="halm"/>    </jsp:forward>   <!--用于包含,动态包含和pageContext.include()一样-->   <jsp:include page="/1.jsp"></jsp:include>

运行原理:

1.每个jsp页面在第一次被访问的时候,web容器会将请求传给jsp引擎(一个java程序)处理。jsp引擎会先将jsp页面翻译为一个jspServlet(就是一个servlet),再按照servlet的调用方式进行调用

2.由于jsp第一次访问需要翻译为servlet,所以会比较慢,但之后的访问,如果jsp引擎发现jsp没有发生变化就会直接调用,不再翻译

3.jsp引擎在调用jsp对应的jspServlet时,会传递或创建9个与web开发相关的隐私对象供servlet使用。

九大隐私对象:

request :请求对象

response :响应对象

application :ServletContext对象

config:ServletConfig对象

out :用于向客户端发送文本数据,通过pageContext的getOut方法返回的JspWriter对象,也是将数据写到response容器中,与response的out对象非常相似。page指令的buffer属性就是设置这个流的缓冲区大小。

page :本jsp页面对象,-》this

session :会话对象

exception:异常对象

pageContext :代表jsp页面的运行环境,封装了对其他八大隐私对象的引用,本身是一个页面范围内的域对象(用于自定义标签开发),最小范围的域对象


  <%  pageContext.getAttribute("name",pageContext.REQUEST_SCOPE); // 获得request内部name的值  pageContext.getAttribute("name");//获得本域对象name的值  pageContext.findAttribute("name");//查找4个域对象name的值。顺序pageContxt.request.session.application    %>


}

0 0
原创粉丝点击