JSP Java Server Page
JSTL是JSP的标签库,
Jsp 技术允许在页面中嵌套
java
代码,为用户提供动态数据。
Jsp 就是一个
Servlet
,当我们第一次访问
Jsp
的时候,
Jsp 引擎都会将这个
Jsp
翻译 成一个
Servlet
,这个文件存放在 tomcat(源码目录) 中的
work 目录中。 是一种动态网页编程技术。
显式注释
<!--用户界面可以看到-->
<-- JSP隐式注释,用户界面看不到 -->
JSP中一般有三种Scricptlet小程序
第一种:<% %>: java 脚本段在service方法内,可以定义局部变量、编写语句(底层是生成在Servlet类中的service方法中)
第二种:<%! %>:声明,可以定义全局(成员)变量、方法、类(底层是生成在Servlet类中方法外)
第三种:<%= %>:向页面输出信息(可以是表达式)
一般我们使用JSP用做显示页面(解耦思想),虽然它能使用编写java代码,
JSP的指令标签
静态包含页面
<%@include file = "login.jsp"></include%>
静态包含就是将内容进行了直接的替换,就好比程序中定义的变量 一样,是在 servlet 引擎转译时,就把此文件内容包含了进去(两 个文件的源代码整合到一起, 全部放到
_jspService 方法中),所 以只生成了一个
servlet,所以两个页面不能有同名的变量。 运行 效率高一点点。耦合性较高,不够灵活。
动态包含页面
<jsp:include page= "页面.jsp"></jsp:include>
------------------------------------------------------
<jsp:include page= "页面.jsp"></jsp:include>
<%-- 动态包含传递参数--%>
<jsp:include page= "页面.jsp">
<jsp:param name="参数名" value= "<%=参数值%>"/>
</jsp:include>
<%--name不支持表达式,value支持表达式--%>
request.getParameter("name"); //通过指定参数名获取参数值
四大域对象:
page范围:一次页面中有效
request范围:一次请求有效
session范围:在一次范围中有效,无论多少次请求
application范围:在整个服务器上保存
EL表达式:提供了在JSP中简化表达式的作用
(未完成)
EL表达式一般操作的是域对象,默认从page,request,session,application从小到大的顺序查找
格式
<@%page comtentType ="text/html;charset=UTF-8" Language = java>
EL表达式格式 : ${" "}
${empty}:判断域对象是否为空,为空则返回true
<%@taglib prefix= "c" uri=""%>
<%taglib%> 是EL表达式的标签库
当要使用if,foerch等标签则需要引入 <%taglib%>
EL标签:
条件动作标签
if choose、when 和 otherwise 标签
if标签
<c:if test="${num>100}" var="<string>" scope="具体放置的作用域对象"
如果num>100那么执行此段代码
</c:if>
test 为条件
var=为限域变量名(接收if的判断结果)
choose标签
//和java中的swaich分类似
<c:choose>
<c:when test = "${num<90}">
如果符合when标签的条件则执行此段话
</c:when>
<c:when test = "${num=60}">
如果符合when标签的条件则执行此段话
</c:when>
<otherwise>
如果when标签都不执行的话那么执行otherwise中的内容
</otherwise>
</c:choose>
迭代标签
forEach标签
格式化标签
Maven项目构建工具
打包命令行
clean compile package -
Dmaven.test.skip=true
根元素
project
下的
dependencies
可以包含多个
dependence元 素,以声明多个依赖。每个依赖都应该包含以下元素:
1. groupId, artifactId, version : 依赖的基本坐标, 对于任何一个 依赖来说,基本坐标是最重要的,
Maven根据坐标才能找到需 要的依赖。
2. Type
: 依赖的类型,大部分情况下不需要声明。 默认值为jar 3. Scope
: 依赖范围(
compile,test,provided,runtime,system
)compile: 编译依赖范围。 如果没有指定,就会默认使用该依赖范围。使用此依赖范围 的
Maven
依赖,对于编译、测试、运行三种
classpath都有 效。 test: 测试依赖范围。 使用此依赖范围的
Maven
依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依 赖。典型的例子就是
JUnit,它只有在编译测试代码及运行测 试的时候才需要。
provided: 已提供依赖范围。 使用此依赖范围的
Maven
依赖,对于编译和测试classpath有效,但在运行时无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容 器已经提供,就不需要
Maven
重复地引入一遍
(
如:servlet-api)
。
runtime: 运行时依赖范围。使用此依赖范围的
Maven
依赖,对于测试和运行classpath 有效,但在编译主代码时无效。典型的例子是
JDBC驱动实现,项目主代码的编译只需要
JDK
提供的JDBC接口,只有在 执行测试或者运行项目的时候才需要实现上述接口的具体 JDBC
驱动。
system:
系统依赖范围。
该依赖与三种
classpath
的关系,和
provided依赖范围完全 一致。但是,使用
system范围依赖时必须通过systemPath 元素显式地指定依赖文件的路径。由于此类依赖不是通过 Maven仓库解析的,而且往往与本机系统绑定,可能造成构 建的不可移植,因此应该谨慎使用。
4. Optional
:标记依赖是否可选
5. Exclusions
: 用来排除传递性依赖。
Freemarker组件
FreeMarker
概念
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本
(HTML
网页,电子邮件,配置文件,源代码等) 的通用工具。 是一个
Java类库。 FreeMarker
被设计用来生成
HTML Web 页面,特别是基于 MVC 模式的应用程序,将视图从业务逻辑中抽离处理,业务中不再包括 视图的展示,而是将视图交给
FreeMarker 来输出。虽然 FreeMarker
具有一些编程的能力,但通常由
Java 程序准备要显示 的数据,由
FreeMarker 生成页面,通过模板显示准备的数据
FreeMarker
不是一个
Web
应用框架,而适合作为
Web应用框架一 个组件。
FreeMarker与容器无关,因为它并不知道HTTP或Servlet
。
FreeMarker同样可以应用 于非
Web
应用程序环境。
FreeMarker
更适合作为
Model2
框架(如Struts)的视图组件,你也可以在模板中使用 JSP
标记库
FreeMarker
特性
.
通用目标
能够生成各种文本:
HTML
、
XML
、
RTF
、
Java 源代码等等 易于嵌入到你的产品中:轻量级;不需要
Servlet 环境所有常用的指令:
include
、
if/elseif/else、循环结构在模板中创建和改变变量
使用:
pom.xml文件中导入Freemarker坐标依赖
并处理所有以.flt结尾的文件,flt是Freemrker默认的文件后缀
Freemarker有很多常用指令(free.foofun.cn)有对应的API说明