【JAVA】Servlet与JSP

前言

  java学习之初,我们经常会看到或使用到Servlet与JSP,本篇博文将详细介绍这二者以及它们之间的关系。
  

一、Servlet

是什么?

  Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于处理各种业务逻辑,生成动态Web内容。

为什么用?

   优点 具体阐述
1 功能强大 可调用java API中的对象和方法,对HTTP请求进行相应的处理等
2 可移植 运行不依赖操作系统平台
3 性能高效 Servlet对象在Servlet容器启动时被初始化,当对象第一次被请求时,Servlet容器将其实例化,如果存在多个请求,该Servlet对象不会再被实例化,每个请求是一个线程
4 安全性高 使用了java的安全框架
5 可扩展 由java语言编写,继承了java的面向对象的优点,可以通过封装、继承扩展业务需要

二、JSP

是什么?

  JSP(Java Server Pages——java服务器页面),其根本是一个简化的Servlet设计,是一种动态网页技术标准。
  JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。

为什么用?

  没有JSP,Servlet可以实现开发需求吗?答案是可以。在JSP产生之前,Servlet负责页面设置及与业务逻辑代码,它可以完全满足对web应用的开发需求。
  那为什么还要使用JSP呢?原因主要有两个方面:
1、Servlet自身的缺点
(1)所有的HTML代码都需要Servlet的固定方法输出,操作复杂
(2) 页面中用到的CSS样式代码、JS脚本代码极大的增加了代码量,不利于代码的阅读和编写
2、JSP独特的优势

   优点 具体阐述
1 跨平台 1、可以应用于不同的系统、操作系统的数据库、web服务器
2、由于应用JSP技术开发的项目可以不加修改的应用到任何不用的平台上,很好的体现了java“一次编写,到处运行”的特点
2 业务代码分离 JSP技术开发的项目,使用HTML语言来设计和格式化静态页面的内容,使用JSP标签和Java代码片段来实现动态部分。业务处理代码可以由JavaBean、Servlet、Struts等实现。因此修改业务代码不会影响到JSP。
3 组件重用 JSP可以使用JavaBean编写业务组件,也可以作为数据存储模型,在JSP页面甚至整个项目、其他java应用,都可以重复使用这个JavaBean。
4 基于Java Servlet功能 Servlet是JSP出现以前的主要JavaWeb处理技术,JSP最终会编译成Servlet才能处理用户请求,因此JSP拥有Servlet的所有功能和特性。
5 预编译 用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并将编译好的代码保存,用户下次访问时,直接执行编译好的代码,无需再次编译。这样可以节约cpu资源,提高客户端访问速度。

怎么用?

(一)JSP页面执行过程

这里写图片描述
1、客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求就可以知道被请求的资源。
2、服务器根据接收到的客户端的请求来加载被请求的JSP文件
3、Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet
4、JSP引擎将生成的Servlet代码编译成Class文件
5、服务器执行这个Class文件
6、服务器将执行结果发送给浏览器显示

(二)Web服务器

  Web服务器是运行和发布Web应用的大容器,只有将开发的Web项目放置到Web容器中,才能使网络中的所有用户通过浏览器进行访问。开发Web应用采用的服务器主要有以下几种:Apache Tomcat、WebLogic服务器、IBM WebSphere应用服务器等。

(三)页面的基本构成

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.SimpleDateFormat"%>

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>JSP——demo</title>
    </head>
    <body>
        <%
            Date date=new Date();  //获取日期对象
            SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置日期时间格式
            String today=df.format(date);   //获取当前系统时间      
        %>
        当前时间:<%=today%>  <!-- 输出系统时间 -->
    </body>
</html>

这里写图片描述

(四)标识

标识内容 分类 备注
脚本标识 JSP表达式 <%= 表达式 %>
表达式可以是任何java语言的完整表达式
   声明标识 <%! 声明变量或方法的代码 %>
   代码片段 <% Java代码 / 脚本代码 %>
指令标识 page指令 1、<%@ page 属性1=“属性值1” 属性2=“属性值2” %>
2、用于定义整个页面的相关属性
3、共有13个属性:language、contentType、pageEncoding、import、autoFlush、buffer、errorPage、extends、info、isELIgnored、isErrorPage、isThredSafe、session具体内容
   inlude指令 1、<%@ include file=“path“ %>
2、用于在一个JSP页面包含另一个JSP页面
   taglib指令 1、<%@ taglib prefix=”tagPrefix” uri=”tagURI” %>
2、prefix:用于指定标签的前缀(不能是jsp、jspx、java、javax、sun、servlet、sunw)
     uri:指定标签库文件的存放位置
动作标识 用途:在JSP的请求处理阶段按照在页面中出现的顺序被执行的,用于实现某些特殊用途   格式:<以下jsp相关内容>
   操作JavaBean jsp:useBean
包括:jsp:setProperty    jsp:getProperty
   包含外部文件 jsp:include
   执行请求转发 jsp:forward
   设置参数的子动作 jsp:param

三、Servlet与JSP的区别

Name Academy
角色 JSP可以存在Java代码和HTML代码并存的情况,Servlet只有调用固定的方法才能将动态内容输出为静态的HTML,因此,JSP是显示层,Servlet是业务逻辑层。
编程方法 JSP需要遵循一定的脚本语言规范,Servlet遵循java的标准。
速度 JSP页面由JSP容器管理,每次执行不同内容的动态JSP页面时,JSP容器都要对其自动编译,效率较低。Servlet在编译完成后,不需要再次编译,可以直接获取及输出动态内容。
运行 JSP文件创建或修改,不需要编译就可以执行,Servlet需要在java编译器编译后才可以运行。

小结

  JSP和Servlet是java学习的基础内容,它们之间的对比学习更是值得我们学习和关注的问题。

猜你喜欢

转载自blog.csdn.net/ljl55555/article/details/79685209