JSP整理

JSP是一种简化了的servlet技术,最终也会被编译成Servlet类。与servlet相比,JSP更加适合与HTML代码进行交互,因为JSP中可以包含HTML代码,方便输出。JSP中内置一些隐藏对象,例如outrequestresponsesessionpage等等,常用于显示结果。Servlet则多用于处理业务逻辑。

 

以下为JSP技术的讲解。

1、JSP简介

JSP是为了简化servlet的工作而出现的替代品。它是一种servlet,可以完成Httpservlet能完成的所有事情。

新建一个JSP文件,可以按照下图(使用eclipse oxygen

 

 

 

需要注意的是,需要将charset改为utf-8,防止发生中文乱码。

 

JSP工作原理:

JSP是先部署源代码,然后编译为class文件,也就是说它第一次运行之前,需要将文件部署到服务器,而且第一次运行时会比较慢,再次运行则会快的多。

 

JSP生命周期:

JSP也是Servlet的一个子类,JSP实例初始化、销毁时,也会调用Servletinitial()和destroy()方法。同时,JSP有自己的初始化和销毁方法,分别是_jspInit(),_jspDestroy()

 

 

 

 

 

2、JSP语法

JSP中,可以使用JavaHTML语法,注释也可以使用Java风格或者HTML风格。

JSP代码可以分为:

模板数据:JSP中的HTML代码,内容是固定的,不会影响程序的运行结果。

元素:JSP中的Java部分,包括脚本(Scriptlet),JSP指令(Directive)和JSP标签(Tag)。元素决定程序的流程。

 

JSP脚本:

格式为<% 脚本%>。脚本内遵从Java语言格式,例如以下的例子。例子中out.println()方法使用了JSP的隐藏对象,将结果直接输出到页面中。

 

也可以用<%=表达式%>来输出,注意表达式后面没有分号!例如

 

 

JSP方法或者全局变量的格式是<%! 方法或者全局变量%>,其余使用方式和Java语法一致。

 

JSP中使用ifforwhile语句时,可以夹杂HTML语句。语句块必须用{}包裹。例如以下例子(只要是Java语句,都必须在<% %> 内,例如例子中的“{”和“}”)

 

3、JSP指令

JSP指令用来声明JSP页面的一些属性,格式为<%@ 指令%>。常见的指令有pagetaglibinclude等等。

 

Page指令:是最常用的指令,JSP指令的多个属性可以写在一个page指令中。

 

Include指令:在本应用程序内加入一个JSP页面。使用include指令时,新加入的JSP页面代码被加入到原来的JSP页面代码中,例如

 

Taglib指令:JSP支持标签技术,使用标签功能可以实现视图代码重用,以达到复杂的显示效果。标签库是JSP最常用的功能。

 

4、JSP行为

<jsp:include />行为:用于运行时包含某个文件,包含的是文件的结果,应该与include指令相区别。语法为<jsp:include page=”xxx.jsp” />

使用Java Bean<jsp:useBean id=”name” class=”javaname” />

使用Java Bean可以将显示与业务逻辑分开,提高可读性。例如以下例子

 

 

由于每次使用的Java Bean都是一个新的实例(根据id来区分),所以可以利用scope的范围来灵活运用。

 

<jsp:forward page=”xxx.jsp”/>行为:页面转发,地址栏不变,还在同一个session中。相当于request.getRequestDispatcher(“xxx.jsp”),实际上是这个方法的封装。

 

<jsp:directive />行为:相当于JSP指令(pageincludetaglib),比JSP指令更加整洁,易懂。如下面例子

<jsp:directive.page language=”java” contentType=”text/html”;  charset=”utf-8” />

完全等价于

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

 

5、JSP隐藏对象

outrequestresponseconfigsessionapplicationpagepageContextexception

 

6、JSP配置

如果页面只有HTML、图片等等静态元素时,JSP甚至可以不用配置web.xml文件。

如需配置,则是用<jsp-config>标签

 

7、EL表达式

用来读取对象,不能用在<% %>脚本中。语法格式为${表达式},

EL表达式可以进行简单的运算,包括四则运算和逻辑运算,三目运算符等等。