J2EE——之JSP篇

2019-05-04  本文已影响0人  大数据阶梯之路

本篇知识点

了解了servlet,接下来进入学习jsp,jsp其实就是特殊的servlet,在Tomcat容器中最后是转化为servlet后再运行的,关于servlet的学习可看我的另外一篇文章

一、JSP相关概念

当前Web开发的两大平台:
①.Net平台:是一组用于建立web服务应用程序和windows桌面应用程序的软件组件构成,包括.Net框架、.Net开发工具和Asp.Net。
②JavaEE平台:Sun公司推出的一项中间件技术,旨在简化和规范多层次企业级应用系统的开发和部署。注:Sun公司现已被oracle公司收购。

Jsp Web开发是JavaEE开发的基础。如下图架构:

图片.png

静态网页与动态网页

什么是静态网页?
就是使用html来编写的,文件后缀由.html来命名,页面无交互性。
优点:访问响应速度快,且容易被搜索引擎收录。
缺点:缺乏交互性,维护工作大。
什么是动态网页?
就是页面可根据用户的选择、输入等操作做出迅速响应和动态的改变内容,页面有交互性。
优点:具有很好的用户交互性,可方便地处理用户请求且访问服务器端的数据库。
缺点:不利于搜索引擎的信息收集。

两者区别如下:
一个动态网页会被服务器当做是一个程序来执行,而其中的静态内容服务器不会当成程序执行,直接输出给客户端,而动态部分的代码会被服务器识别并执行。

动态网页技术

ASP、PHP、JSP三种。本文仅介绍JSP技术。
Jsp的优点:一次编译,到处执行。采用“先编译后执行”的工作方式

Jsp工作原理

在html中嵌入Java脚本代码,由web服务器中的Jsp引擎来编译和执行嵌入的Java代码,然后生成页面返回响应给客户端。

工作流程.png 注意:web容器在处理Jsp文件请求会经过3个阶段
①翻译阶段:.jsp->.java
②编译阶段:.java->.class
③执行阶段

若第二次同样的请求,web服务器会复用编译好的.class字节码,就是所谓的:一次编译,到处执行。不过若改变了jsp文件,web服务器就需要对jsp文件重新翻译和编译。

二、JSP具体使用

图片.png
JSP指令元素:page、include、taglib三个,它们的基本语法为<%@ 指令元素 属性="值" %>
<%@page language="java" import="需要导入的包,多个则用分号分开" info="定义jsp页面的信息,比如版权或者公司名或者编写日期"
pageEncoding="utf-8" contentType="text/html;charset=utf-8" 
isErrorPage="是否为错误页面 true|false" errorPage="发生异常时需要跳转的错误页面 "
%>

在java脚本中可通过<%= getServletInfo() %>获取定义的info信息
pageEncoding与contentType的区别:
①pageEncoding是JSP页面本身的编码,contentType是服务器端发送给客户端时的内容编码。jsp页面的字符编码决定顺序一般由pageEncoding--->contentType里的charset-->前两者都没有再使用默认的ISO-8859-1。
②JSP要经过两次编码,第一阶段“翻译”用的是pageEncoding,此时若设定错可能会出现中文乱码;第二阶段“编译”用的是utf-8统一编码,即在这阶段不管之前jsp页面使用什么字符编码都将转化为统一utf-8的java源码,javac再以utf-8编码读取java代码,编译为.class字节码;第三阶段“执行”,即Tomcat返回的网页用的是contentType。

jsp声明元素 <%! 类成员变量或者方法%>
定义java脚本 <% %>
jsp表达式元素 <%= 一般是结果变量%>

图片.png
<jsp:include page="包含页面" flush="true|false" >
  <jsp:param name="..." value="..." />
</jsp:include>

flush=“true”表示在包含文件前先刷新当前页面的输出缓冲区。<jsp:param>主要是用在为<jsp:forward>、<jsp:include>、<jsp:params>动作传参,用在其他地方会报错。<jsp:include>俗称动态包含,当该jsp动作执行后,是请求转发到被包含页面,并将执行结果输出到浏览器,而静态包含是先把被包含页面原封不动的加到当前页面,然后再一起编译。

三、JSP隐含对象

四、Javabean

什么是Javabean?什么是POJO?

其实就是一种组件技术,也是一个java类。这个java类有一定的规范,而且常用来做封装数据和业务逻辑处理。而POJO类则是一个特殊一个特殊的Javabean,即只用来封装数据对象用。

Javabean的规范

JSP使用Javabean的2种方式

五、4个作用域及资源引用

pageContext作用域:当前页面,作用域最小,解决当前页面内的数据共享问题,获取其他内置对象。
request作用域:一次请求,一次请求的servlet数据共享。通过请求转发,将数据传递给下一个servlet。
session作用域:一次会话,一个用户的不同请求的数据共享,将数据从一次请求流转到其他请求。
application作用域:项目内,不同用户的数据共享。将数据从一个用户流转到其他用户。
关于资源引用?
可采用相对路径,即../这种方式寻找上一级目录,但是缺点是这样的话资源的位置就不可随意修改,而且如果目录层级很多,就会使相对路径书写很繁琐,不建议使用。
采用绝对路径,即/虚拟项目名/项目资源路径,这种方式引用。/表示从服务器根目录开始,在Tomcat中对应着localhost:8080/

六、JSP小回顾

上一篇 下一篇

猜你喜欢

热点阅读