发表于: 2017-09-27 22:28:16

1 817


一、今日完成

今天整理和讲解小课堂知识点:什么是JSP?

1.背景介绍

Java Server pages是一种帮助软件开发人员根据HTMLXML或者其他文档类型来创建动态WEB页面的技术,由Sun Microsystems1999年发布;目前最新版本是2.3,符合JSR245标准。JSP类似PHPPersonal Home Page)和ASPActive Server Pages),但是它使用Java语言编写。

部署和运行JSP需要一台安装servlet container的可兼容的web服务器,常用的servlet container包括Apache TomcatJettyResin等。

2.知识剖析

2.1.JSP的工作原理

当客户端浏览器向服务器请求一个 JSP 页面时,服务器收到该请求后,首先检查所请求的这个JSP 文件内容 ( 代码 ) 是否已经被更新,或者是否该JSP 文件创建后的第一次被访问;如果是,那么这个 JSP 文件就会在服务器端的 JSP 引擎作用下转化为一个 Servlet 类的 Java 源代码文件。紧接着,这个 Servlet 类会在 Java 编译器的作用下被编译成一个字节码文件,并装载到JVM解释执行。剩下的就等同于 Servlet 的处理过程了。

如果被请求的 JSP 文件内容 ( 代码 ) 没有被修改,那么它的处理过程也等同于一个 Servlet 的处理过程。即直接由服务器检索出与之对应的 Servlet 实例来处理。

需要注意的是,JSP 文件不是在服务器启动的时候转换成 Servlet 类的。而是在被客户端访问的时候才可能发生转换的 ( JSP 文件内容没有被更新等,就不再发生 Servlet 转换 )

Tomcat 而言,打开目录%Tomcat% \work\Catalina\localhost\project name /%然后会看到里面有 3个子目录:org/apache/jsp,若没有这 3 个目录,说明项目的 JSP 文件还没有被访问过;在jsp 目录下,会看到一些 *_jsp.java *_jsp.class 文件,这就是 JSP 文件被转换成Servlet 类的源文件和字节码文件了。

2.2JSP的特点

1JSP 作为Java 技术家族的一部分,继承了Java 的“ Write once ,Run anywhere”的特点。

2)可重用组件技术。JSP 可以通过JavaBeanEnterpriseBean 等组件技术来封装较为复杂的应用,开发人员可以共享已经开发完成的组件。

3)标记化页面开发。JSP 将许多常用功能封装起来,以XML 标记的形式展现出来,降低了JSP 的开发难度。此外,标记化的JSP 应用,形式和内容相分离,使得JSP 页面结构更加清晰,有助于日后的维护。

4JSP本身具有丰富的功能,容易整合到Spring MVC等企业级框架中。

3.常见问题

 JSP源文件的保存方式是基于字节流的, JSP编译成class文件过程中,有时候出现乱码,如何解决?

4.解决方案

1.没有在页面里指定使用的字符集编码,JSP页面中出现了中文字符,而默认的ISO-8859-1字符集中无中文字符,在JSP页面头部作如下声明,即可

<%@ page contentType="text/html; charset=utf-8"%>

2. 编码字符集设置不一致导致乱码,

<%@ page language="java" pageEncoding="utf-8"%>指定jsp文件的存储格式。

<%@ page contentType="text/html;charset= utf-8"%>指定JSP文件的解码格式。

<meta http-equiv="Content-Type" content="text/html charset=utf-8">为控制浏览器的解码方式。

前两处必须保持一致,且指定支持中文的字符集。

3. 数据库连接出现乱码

在数据库连接字符串中加入编码字符集 

JdbcUrl=jdbc:mysql://localhost:3306/fortask?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

然后在JSP头部声明

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

5.代码实战 

<%--形如 “<%@ %>”的标记被称为JSP指令,其作用是设定页面级的指令信息、引用
其他外部文件或者定制标记库,它会随JSP页面编译成Servlet,然后由JSP引擎负责
处理。--%>
<!--定义了JSP语言的类型为Java,并且引入了该页面操作所需要的java.util.Calendar类。-->
<%@ page language="java" import="java.util.*" %>
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>
第一个JSP 实例
</title>
</head>
<body>
<h1>第一个JSP 实例</h1>

<%--形如XML标记的部分称为JSP动作(也称JSP行为),它们通常封装了一些常用的功
能。JSP动作利用类似XML的语法来管理各种JavaBean组件。--%>
<jsp:useBean id="clock" class="mycalendar.BaseCalendar" /> <%--用于初始化该JSP页面中需要用到的JavaBean--%>
<ul>
<%--形如“<%= %>”的内容称为JSP表达式,由变量和常量组成。它通常包含了来自
Web服务器端的数据--%>
<li>日期: <%= clock.getDate() %>
<li>年份: <%= clock.getYear() %>
</ul>

<%-- 计算当前时间为 AM 或 PM --%>
<%--形如“<%!  %>”的部分是JSP声明,它和Java中的声明类似,都是用于定义变量以
便在随后的程序中使用。--%>
<%! int time = Calendar.getInstance().get(Calendar.AM_PM); %>

<%--形如“<% %>”的部分被称为程序段(Scriptlet),通常是标准的Java代码,在运行
后可以自动转化成字符串,然后插入到所在JSP页面中的位置显示--%>
<%
if (time == Calendar.AM) {
%>
早上好
<%
}
else {
%>
下午好
<%
}
%>
<!--在JSP文件中包含了一个HTML文件,该HTML文件中的所有内容都会在JSP页面中显示-->
<%@ include file="copyright.html" %>
</body>
</html>

形如“<%-- --%>”的部分被称为注释。JSP中的注释和HTML类似,在被JSP引擎
执行时,它会被剥去,也就是说JSP注释中的内容并不会在客户端浏览器中显示。
与HTML注释不同的是,HTML注释位于“<!-- -->”之间,而JSP注释位于“<%--
--%>”之间。

6.扩展思考

JSP 本质是一个 Servlet,它的运行也需要容器的支持。在 JSP Servlet 文件中都可以编写 Java HTML 代码,不同的是,Servlet 虽然也可以动态的生成页面内容,但更加偏向于逻辑的控制。JSP 最终被转换成 Servlet jvm 中解释执行,在 JSP 中虽然也可以编写 Java 代码,但它更加偏向于页面视图的展现。

MVC 架构模式中,就 JSP Servlet 而言,C 通常由 Servlet 充当,V 通常由 JSP 来充当。

7.参考资料

1.维基百科:JavaServer Pages

2. 博客:JSP/Servlet 工作原理

3.博客:解决JSP中文乱码问题

4.JSP 应用开发技术,贾素玲 王强 张成 编著,清华大学出版社


二、明日计划

把任务四的代码功能完善,达到通过审核的目的。


三、遇到问题

无。


四、收获

以上。


返回列表 返回列表
评论

    分享到