第五次

第五次,第1张

第五次 JSP技术 jsp概述

JSP 全名是 Java Server Pages,它是建立在 Servlet 规范之上的动态网页开发技术。在 JSP文件中,HTML 代码与 Java 代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java 代码用来实现网页中动态内容的显示。为了与传统 HTML 有所区别,JSP 文件的扩展名为jisp。
JSP 技术所开发的 Web 应用程序是基于 Java 的,它可以用一种简捷而快速的方法从 Java程序生成 Web 页面,其使用上具有如下几点特征。
•跨平台:由于 JSP 是基于 Java i语言的,它可以使用 Java API,所以它也是跨平台的,可以应用于不同的系统中,如 Windows、Linux 等。当从一个平台移植到另一个平台时,JSP和JavaBean 的代码并不需要重新编译,这是因为 Java 的字节码是与平台无关的,这也应验了 Java语言“一次编译,到处运行”的特点。
•业务代码相分离:在使用 JSP 技术开发 Web 应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用 HTML 来设计界面,使用 JSP 标签和脚本来动态生成页面上的内容。在服务器端,JSP 引擎(或容器,本书中指 Tomcat )负责解析 JSP 标签和脚本程序,生成所请求的内容,并将执行结果以 HTML 页面的形式返回到浏览器。
•组件重用:JSP 中可以使用 JavaBean 编写业务组件,也就是使用一个JavaBean 类封装业务处理代码或者作为一个数据存储模型,在 JSP 页面中,甚至在整个项目中,都可以重复使用这个 JavaBean。同时,JavaBean 也可以应用到其他 Java 应用程序中。
•预编译:预编译就是在用户第 1 次通过浏览器访问 JSP 页面时,服务器将对 JSP 页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的 CPU 资源,还大大地提升了客户端的访问速度。

jsp运行原理

jsp的运行过程
(1)客户端发出请求,请求访问JSP 文件。
(2 )JSP客器先将 JSP 文件转换成一个 Java 源文件( Java Serylet源程序),在转换过程中。如果发现JSP 文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
(3)如果转换成功,则JSP 容器将生成的 Java 源文件编译成相应的字节码文件*.class。该class 文件就是一个 Servlet,Servlet 容器会像处理其他 Servlet 一样来处理它。
(4)由 Servlet 容器加载转换后的 Servlet 类(.class 文件)创建一个该 Servlet(JSP 页面的转换结果)实例,并执行 Servlet 的 jisplnit()方法。jspInit()方法在 Servlet 的整个生命周期中只
会执行一次。
(5)执行 jspService()方法来处理客户端的请求。对于每一个请求,JSP 容器都会创建一个新的线程来处理它。如果多个客户端同时请求该 JSP 文件,则 JSP,容器也会创建多个线程,使得每一个客户端请求都对应一个线程。JSP 运行过程中采用的这种多线程的执行方式可以极大地
成的 Servlet 是常驻内存的,所以响应速度非常快。降低对系统资源的需求,提高系统的并发量并缩短响应时间。需要注意的是,由于第(4)步生成的servlet是常驻内存的,所以响应速度非常快。
(6)如果 JSP 文件被修改了,则服务器将根据设置决定是否对该文件重新编译。如果需要重新编译,则使用重新编译后的结果取代内存中常驻的 Servet,并继续上述处理过程。
(7)虽然 JSP 效率很高,但在第 1 次调用的时候往往由于需要转换和编译,所以会产生—些轻微的延迟。此外,由于系统资源不足等原因,JSP 容器可能会以某种不确定的方式将 Servet从内存中移除,发生这种情况时首先会调用 jspDestroy()方法,然后 Serviet 实例会被加入“垃圾收集”处理。
(8)当请求处理完成后,响应对象由 JSP 容器接收,并将 HTML 格式的响应信息发送回客户端。

jsp基本语法 jsp脚本元素

JSP 脚本元素是指嵌套在<%和%>之中的一条或多条 Java 程序代码。通过 JSP 脚本元素可以将 Java 代码嵌入 HTML 页面中,所有可执行的 Java 代码,都可以通过 JSP 脚本来执行。
JSP 脚本元素主要如下 3 种类型。
• JSP scriptlets
• JSP 声明语句
. jsp 表达式

jsp声明语句 jsp表达式 jsp注释 jsp指令

设置jsp页面中的一些信息,sun公司提供了jsp指令,jsp2.0中定义了page、include等指令,每种指令都定义了各自的属性。

page指令

在jsp页面中,经常需要对页面的某些特性进行描述。例如页面的编码方式,jsp页面采用的语言等,这时可以通过page指令来实现。

include指令

incloud指令只有一个file属性,该属性用来指定插入到jsp页面目标位置的文件与资源。
在实际开发时,有时需要在jsp页面静态包含一个文件,例如html文件,文本文件等。这时可以通过include指令来实现。

jsp隐式对象 隐式对象的概述

在jsp页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象,则会非常麻烦,为了简化web应用程序的开发,jsp2.0规范的提供了九个隐式对象,他们是jsp默认创建的,可以直接在jsp页面中使用。

out对象

在 JSP 页面中,经常需要向客户端发送文本内容,这时,可以使用 out 对象来实现。out对象是 javax.servlet.jisp.JspWriter 类的实例对象,它的作用与ServletResponse.getWriter()方法返
回的 PrintWriter 对象非常相似,都是用来向客户端发送文本形式的实体内容。不同的是,out 对象的类型为 JspWriter,它相当于一种带缓存功能的 PrintWriter。接下来,通过一张图来描述 JSP页面的 out 对象与 Servlet 引擎提供的缓冲区之间的工作关系。

page Context对象

• pageContext.PAGE_SCOPE:表示页面范围
• pageContext.REQUEST_SCOPE:表示请求范围
• pageContext.SESSION_SCOPE:表示会话范围
•pageContext.APPLICATION_SCOPE:表示 Web 应用程序范围

exception对象

在jsp页面中经常需要处理一些异常信息,这时可以通过exception对象来实现。

代码及成果展示
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.Date" %>




Insert title here


date.jsp页面用来输出当前时间:
<% out.print(new Date().toLocaleString()); %>


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>




Insert title here


	用来显示错误信息:
	<%=exception.getMessage()%>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%!
   int a=1;
   int b=2;
   %>
 <%!
   public String dashuju(){
	 String str="dashuju";
	 return str;
 }
   %>
   <% out.print(a+b); %>
   
<% response.getWriter().print("dashuju"); %>
<% out.print(dashuju()); %>



<%=a+b %>
<%=dashuju() %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="true"%>




Insert title here


    html内容
    
    <% 
    //java注释
      System.out.print("java注释");
    new Date();
      %>
      <%--jsp注释 --%>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>




Insert title here


<%
   int a=3;
   int b=2;
%>
输出<%=(a/b)%>>


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


大数据2005
<% response.getWriter().print("2020080605045+袁雪华"); %>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


我是include页面,下面是我包含进来的页面:
<%@ include file="date.jsp"%>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <% 
      response.getWriter().print("2020080605045袁雪华first line 
"); out.print("second line
"); %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


 	<%
 		HttpServletRequest req=(HttpServletRequest) pageContext.getRequest();
 		//req.setAttribute("yuanxuehua","dashuju");
 		pageContext.setAttribute("yuanxuehua", "pagecontext", PageContext.PAGE_SCOPE);
 		pageContext.setAttribute("yuanxuehua", "REQUEST", PageContext.REQUEST_SCOPE);
 		pageContext.setAttribute("yuanxuehua", "SESSION", PageContext.SESSION_SCOPE);
 		pageContext.setAttribute("yuanxuehua", "APPLICATION", PageContext.APPLICATION_SCOPE);
 		
 	%>
 	<%=pageContext.findAttribute("yuanxuehua")%>
 	
<%=(String) req.getAttribute("yuanxuehua")%>








2020080605045 袁雪华 大数据2005

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5482515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存