Servlet之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}"></c:out>
       调用 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>






五、在 Eclipse 中使用 Tomcat

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





-

引用:

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

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



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






-

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
    最近项目遇到一个问题     要求项目对外提供的接口要保证每秒接受报文的能力达到  40个/秒(项目架构用的spring mvc),     而目前我这个接口不做任何操作,接受请求后直接返回,也才70个/秒的样子,如果收到报文做一次存储处理的话 就只有30个/秒的样子,求教下哪位有什么好的优化方案,可以从哪些方面做优化

3d文字 - 2016-09-15 17:09:05

最近写了一段代码 /* dkplus专业搜集和编写实用电脑软件教程,搜集各种软件资源和计算机周边(java网络编程,seo网站优化,web开发,lnmp,java网络编程,毕业论文设计),独立制作视频和ppt和音频微信公众号,点击进入 dkplus官方博客http://dkplus.iteye.com 微信搜索dkplus关注公众号可获取海量计算机周边资源。 */import java.applet.Applet;import java.awt.*;public class Text3DApplet ex

学习SSH框架 - 2016-09-15 17:09:05

1.SSH框架的认知 在做相关的java的网页的开发制作时,良好的层次分解是十分有比要的,所以我们在云涌第三方的框架之下来简化还有名了我们相关的网站的开发。 SSH框架实则为Struct + spring + hibernate 的三个组成的,其中 struct ,专注与前台的相关的请求的所对应的ActionForm还有其相关跳转的Action来处理得到相关的JSP页面,从而来更新或是条状到相关用户的请求的服务页面,或是信息页面。而 Hibernate 的作用是体现在数据的持久化的层次中,我们对于页面,通
package com.erp.util;   import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.net.HttpURLC
如题,大家可以参考参考 package lesson12;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class lesson12 {/** * 输入两个正整数m和n,求其最大公约数和最小公倍数 */public static void main(String args[]) {// ListInteger list=new ArrayList();Scanner scan = new S
private File file; private String fileFileName; private String picture; InputStream is = new FileInputStream(file); //引入一个IO流的输入流String root = ServletActionContext.getRequest() .getRealPath("/bookpicture"); //通过REQUEST来得到相对地址,并在后面加上/bookpictureFile f = ne

java-选择排序 - 2016-09-15 14:09:03

public class ChoiceSort {//选择排序public static void choiceSort(int[] a){int i,j,temp;int min=0;for(i=0; ia.length;i++){min=i; //将当前下标定义为最小值下标for(j=i+1;ja.length;j++){if(a[min]a[j]){/* 如果有小于当前最小值的关键字 */ min=j;/* 将此关键字的下标赋值给min */ }}if(i!=min){/* 若min不等于i,说明找

java-插入排序 - 2016-09-15 14:09:03

1、基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。 /** * 插入排序 * * 从第一个元素开始,该元素可以认为已经被排序 * 取出下一个元素,在已经排序的元素序列中从后向前扫描 * 如果该元素(已排序)大于新元素,将该元素移到下一位置 * 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 * 将新元素插入到该位置中 * 重复步骤2 * @param numbers 待排序数组 */ public stati

JAVA和C++区别 - 2016-09-15 14:09:03

Java和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,兄弟连JavaEE培训  ,并且编

配置文件的读取与写入 - 2016-09-15 14:09:03

读取配置文件: public static void main(String[] args) {Properties prop = new Properties();try {InputStream in = new BufferedInputStream(new FileInputStream("src/test/test.properties"));// 读取属性文件a.propertiesprop.load(in); // /加载属性列表System.out.println(prop.getPrope