创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解

一、Servlet和jsp

0.创建web项目(无maven):

1.创建一个普通的java项目

2.项目根目录右键,添加模板

3.配置tomcat服务器

4.配置项目tomcat依赖

1.Servlet(Server Applet)服务端小程序

用户通过浏览器发送一个请求,服务器tomcat接收到后,解析web.xml配置文件进行分析执行接口对应的类;

Tomcat服务器支持:支持Servlet规范。而要想让它能找到我们写的处理请求的代码,那我们自己的代码就应该也遵守Servlet规范!

1.1 servlet概念:

Servlet是Server Applet的简称,称为服务端小程序,是JavaEE平台下的技术标准,基于Java语言编写的服务端程序。 Web 容器或应用服务器实现了Servlet标准所以Servlet需要运行在Web容器或应用服务器中。Servlet主要功能在于能够在服务器中执行并生成数据。

Servlet指的是一个接口规范,具体的体现为接口及其接口的实现类。该接口的名字就是Servlet

Servlet是JavaWeb开发的三大组件之一(另外两个是过滤器filter与监听器listener)

1.2 Servlet实现

  1. 继承HttpServlet类,重写service方法

  2. 逻辑处理,并做出响应

  3. web.xml配置接收请求路径

1.3 web.xml配置及注解配置

2.jsp(java服务端页面技术,本质servlet)

有一种特殊的文件,我们可以在它内部编写HTML代码、CSS代码、js代码还有Java代码。编写完之后,再有一个工具,将这个特殊的文件转换成Servlet,在转换好的Servlet中,之前写的Java代码还在,而HTML、css、js代码都使用writer的方式给写好。

​ 这个特殊的文件就是jsp文件。这个工具就是Tomcat服务器中的jsp引擎。

本地服务解析的jsp文件在 work工作目录:

C:\work\Catalina\localhost\java_EE_Demo

2.1 jsp使用

2.1.1 jsp执行原理

JSP看似是HTML代码,看似是页面,但其实是一种后端技术。 本质Servlet

当第一发送请求访问jsp资源时,Tomcat服务器中的JSP加载引擎会将该JSP资源转换成一个 .java 文件(Servlet)。

这个 .java文件其实就是一个Servlet,在这个Servlet中已经将写在JSP中的HTML代码以writer.print()的方式编写好了,然后将数据响应给浏览器的。

JSP本质上就是一个Servlet,JSP中的HTML代码就相当于我们之前在Servlet中写的writer.write()代码。

JSP的执行过程大致可以分为三个时期:转换、编译、执行。

2.1.2执行步骤

转换/翻译(translation):Tomcat中的JSP引擎将JSP网页转换成Servlet,得到一个.java源文件。

编译(compile):通过javac命令将.java文件编译成 .class字节码文件。

运行:运行.class字节码文件,处理请求。

2.2常用指令标签

<%! 定义全局变量或方法 %> 在类中

<% 定义局部变量 %> 在方法中

<%= 变量输出 %> 在方法中

2.2.1 概述

语法:<%@ directive attribute="value" %>

|------------------|-------------------------------|
| <%@ page %> | 定义网页依赖属性,如脚本语言、error页面、缓存需求等等 |
| <%@ include %> | 包含其他文件 |
| <%@ taglib %> | 引入标签库的定义 |

2.2.2 page 指定网页属性指令标签

|---------------------|----------------------------|
| 属性 | 描述 |
| buffer | 指定out对象使用缓冲区的大小 |
| autoFlush | 控制out对象的 缓存区 |
| contentType | 指定当前JSP页面的MIME类型和字符编码 |
| errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
| isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页 |
| extends | 指定servlet从哪一个类继承 |
| import | 导入要使用的Java类 |
| info | 定义JSP页面的描述信息 |
| isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
| language | 定义JSP页面所用的脚本语言,默认是Java |
| session | 指定JSP页面是否使用session,默认是使用 |
| isELIgnored | 指定是否执行EL表达式 |
| isScriptingEnabled | 确定脚本元素能否被使用 |

2.2.3 include 页面指令标签

引入的文件有iframe内联标签的功能, 但是不能配合a标签target属性配合使用

* JSP可以通过include指令来包含其他文件。被包含的文件可以是jsp文件、HTML文件或文本文件。

* 包含的文件就像是jsp文件的一部分,会被同时编译执行。

* 除了使用include指令标签可以实现引入外,使用jsp:include动作也可以实现引入。

静态引入: @include 被引入的网页和当前页生成代码后形成了一个java文件。

动态引入: jsp:include 被引入的JSP页面会生成独立的java代码。

2.3 JSP内置对象(9个)

因为JSP的本质是Servlet,在JSP文件经过转译之后,生成JAVA代码,在运行时,JSP给我们准备好了九个可以直接使用而不用我们自己去new的对象,这九个对象我们称之为内置对象。

内置对象完全由JSP自行去维护, 我们直接使用即可。

pageContext、request、session、servletContext、response、out、config、exception、page

四个域对象

pageContext page域 当前页面内可用。

request reqeust域 一次请求。

session session域 一次会话, 多次请求。

application application域 整个项目运行, 多次请求, 多次会话。

响应对象

response 响应对象。

输出流对象

out 打印流对象。

其他三个对象

servletConfig 由于JSP本身也是一个Servlet,所以容器也会给我们准备一个ServletConfig。

Page 就是JSP转换的Servlet的对象,也就是当前JSP对象本身 。

Exception 异常对象,在错误提示页上使用,当isErrorpage=true 才具有该对象。

总结

联系:

  1. JSP和Servlet都是Sun公司推出的动态网页技术。

  2. 基于Servlet开发页面的繁琐性,推出JSP来简化页面开发。

  3. JSP本质上是一个Servlet,会翻译成一个Servlet。

区别:

  1. JSP使人们把显示和逻辑分隔成为可能,这意味着两者的开发可并行进行;而Servlet并没有把两者分开。

  2. JSP是在HTML代码里写JAVA代码,框架是HTML;而Servlet是在JAVA代码中写HTML代码,本身是个JAVA类。

  3. Servlet需要在web.xml中配置,而JSP无需配置。

  4. 目前JSP主要用在视图层负责显示,而Servlet主要用在控制层负责调度

强调

​ JSP表面上是一个HTML,本质上是一个Servlet。

相关推荐
计算机小白一个23 分钟前
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
java·数据结构·算法·蓝桥杯
White graces36 分钟前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea
菠菠萝宝37 分钟前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
不会Hello World的小苗44 分钟前
Java——链表(LinkedList)
java·开发语言·链表
Allen Bright1 小时前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
柃歌1 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法
柃歌2 小时前
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
java·数据结构·笔记·学习·算法
是姜姜啊!2 小时前
redis的应用,缓存,分布式锁
java·redis·spring
梨落秋溪、2 小时前
输入框元素覆盖冲突
java·服务器·前端
hrrrrb2 小时前
【Java】Java 常用核心类篇 —— 时间-日期API(上)
java·开发语言