栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第五次

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第五次

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号