创建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。

相关推荐
草莓base5 分钟前
【手写一个spring】spring源码的简单实现--bean对象的创建
java·spring·rpc
drebander30 分钟前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
乌啼霜满天24933 分钟前
Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
java·spring boot·spring·mvc
tangliang_cn38 分钟前
java入门 自定义springboot starter
java·开发语言·spring boot
程序猿阿伟39 分钟前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
Grey_fantasy1 小时前
高级编程之结构化代码
java·spring boot·spring cloud
弗锐土豆1 小时前
工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程
java·opencv·安全·检测·面部
Elaine2023911 小时前
零碎04 MybatisPlus自定义模版生成代码
java·spring·mybatis
小小大侠客1 小时前
IText创建加盖公章的pdf文件并生成压缩文件
java·pdf·itext
一二小选手1 小时前
【MyBatis】全局配置文件—mybatis.xml 创建xml模板
xml·java·mybatis