`

Servlet之JSP_01概述

    博客分类:
  • JSP
阅读更多
一、什么是JSP

JSP (Java Server Pages) 提供一种简便、快速的方式以生成动态的(dynamic)网页内容。

JSP运行原理
JSP 是 Servlet 的模板文件。
JSP最终由 Web 容器解析生成 Servlet 类( .java 文件),并编译成为 .class 文件,最后执行。

植入 JAVA 代码
可以告诉解析器,JSP 模板中的哪一部分是原生的 JAVA 代码,不需要解析。
在JSP中使用 <% %> 嵌入 JAVA 代码。

被 web 容器基于 JSP 文件而解析生成的 Servlet 类,具有特定的格式。在这个类中放入了几个可以直接方便使用的 java 内置对象。可以在 <% %> 中直接使用。这需要了解 jsp ,这种特定的 servlet 的生命周期与构成。详细的请参阅[1]

二、JSTL 标签 与 EL 表达式

JSTL 标签
把一些具有特殊功能的方法(比如:打印 java 对象的值、遍历一个序列、条件判断 等),封装成为类库。
并在 JSP 中以标签的的形式使用。这就是 JSTL (JSP Standard Tag Library)。

当Web容器解析JSP时,遇到 JSTL 标签,Web容器会将 JSTL 标签转换为 调用其对应类库的方法的 java 代码。这些类库的方法,会根据传递过来的变量,对变量进行处理(或 输出其值,或循环遍历、或条件判断 等等),最后返回 String 类型的 html 样式的字符串。
—— 这样,JSTL 标签就把输入的 JavaBean 对象,变成了JSP 想要的 HTML 文本。
—— JSTL 标签是代替 <% %> 而简写的 function 。

使JSP呈现动态结果的,正是这些基于服务端的(server-based resources) JavaBean 对象。因为它们的值可以动态的改变。

EL(Expression Language)表达式
EL 表达式,${},最初在 JSTL 标签内部使用(JSTL 1.0 - 2002/06)。
用于向 JSTL 标签输入一个 JavaBean 对象,并调用其 get 方法。

例如:
       <c:out value="${user.name}"/>
       调用 user 对象的 getName() 方法,并将返回值赋值给 c:out 标签的 value 属性。

后来 EL 表达式脱离 JSTL,被移动到 javax.servlet.jsp.el 包下,可以在 .jsp 文件中单独使用(JSP 2.0/JSTL 1.1 - 2003/11)。

三、使用 JSP 需要用到哪些类库?

JSP 最终被解析为 servlet 类,所以当然需要 servlet 的类库。
如果在 JSP 中使用 JSTL 标签库,也需要导入相应的 JSTL 类库。

需要的类库:
        1. servlet 的类库
        2. jstl 标签类库

四、在 eclipse 中配置类库

● 在eclipse中使用jsp,不需要导入任何包。
    因为负责解析 jsp 的是 web 容器。
    如 Tomcat 已把 jsp-api.jar 和 servlet-api.jar 内置到 lib 文件夹中。

● 在 jsp 中使用 JSTL 标签,需要导入的包:
       
    1. jstl 标签库

        jstl 1.0, 1.1:  ( servlet-api 2.0 及以前版本)
                standard.jar (JSTL API)   
                jstl.jar     (JSTL Implementation)

        jstl 1.2:( servlet-api 2.5/3.0)
                jstl-1.2.jar (JSTL API & JSTL Implementation)
     

通常我们还要自己写很多的 Servlet 类,也需要导入 servlet-api:

    1. servlet 的类库
        javax.servlet-api-3.1.0.jar


使用 maven:
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>



web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
  <display-name>Archetype Created Web Application</display-name>
</web-app>



五、在 Eclipse 中使用 Tomcat

    1. 在 windows -> show view -> servers 中,可以打开 servers 视图。   
    2. 在 server 视图空白处,单击鼠标右键,选择: new -> server
    3. 添加好后,Tomcat 就会出现在 servers 视图中。
    4. 双击添加好的 Tomcat,可以打开 Tomcat 配置面板,对其进行参数设置。
   
   


六、部署运行

上面只是在 eclipse 开发环境下配置好了类库的路径。

当web容器运行时,如何去引用那些类库?
原来有这么一项规定[2]:运行时所需要的类库都需要放在 WEB-INF/lib 下面。

其实 eclipse 已经为我们设置好了(运行时自动部署):
右键点击工程名称 -> Properties -> Deployment Assembly 进行查看。




-

引用:

[1]
JSP Architecture:
https://www.tutorialspoint.com/jsp/jsp_architecture.htm

JSP Implicit Objects:
https://www.tutorialspoint.com/jsp/jsp_implicit_objects.htm


[2]
Web Application Directory Structure - DefaultWebApp/WEB-INF/lib:
https://docs.oracle.com/cd/E17904_01/web.1111/e13712/configurewebapp.htm#WBAPP162

jsp -
http://www.oracle.com/technetwork/java/javaee/jsp/index.html

jstl & EL -
http://stackoverflow.com/questions/15848251/exact-difference-and-relation-between-jstl-and-expression-language
http://stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el

jstl -
https://jstl.java.net


-
转载请注明
原文出处:http://lixh1986.iteye.com/blog/2324557






-
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics