Servlet与过滤器

1.Servlet做了什么

本身不做业务处理,只是接受请求并决定电泳·调用哪个JavaBean去处理请求

确定用哪个页面来显示处理返回的数据

2.Servlet是什么

Servlet+Applet,服务器端的Java应用程序

只有服务器端的应用程序使用了Servlet API的时候,这个服务端的程序才能称为Servate

3.Servate API

1、javax.servlet.Servlet接口:基础接口,所有实现类的方法集

2、javax.servlet.GenericServlet:是Servlet的通用版本,与协议无关的Servlet

4.创建Servlet创建方式

创建类实现javax.servlet.Servlet接口

创建类继承javax.servlet.GenericServlet类

创建类继承javax.servlet.http.HttpServlet类

5.Servlet的主要方法

init():Servlet的初始化方法,仅执行一次

service() 处理请求和生成响应

destroy()Servlet对象不再使用时调用,仅执行一次

6.ServletRequest

相当于JSP内置对象request

7.ServletResponse

相当response

8.ServletConfig

包含Servlet的初始化参数信息

9.Servlet生命周期

|----------|--------------------|------------------------------------------------------------|
| 生命周期 | 谁来做 | 何时做 |
| 实例化 | Servlet 容器 | Servlet容器启动或者容器检测到客户端请求时 |
| 初始化 | Servlet 容器 | 实例化后,容器调用Servletinit()初始化对象 |
| 处理请求 | Servlet 容器 | 得到客户端请求并做出处理时 |
| 销毁 | Servlet 容器 | **当程序中的
Servlet
对象不再使用的时候, 或者Web**服务器停止运行的时候
|

10.Servlet部署运行

修改web.xml(部署描述文件)

添加<servlet>:把Servlet内部名映射到一个Servlet类名

添加<servlet-mapping>:把用户访问的URL映射到Servlet的内部名

<servlet-mapping>与<servlet>中的<servlet-name>必须一致

通过URL访问Servlet

配置<servlet>元素

<servlet>

<servlet-name>myServlet3</servlet-name>

<servlet-class>demo.web.servlet.MyServlet3</servlet-class>

</servlet>

配置<servlet-mapping>元素

<servlet-mapping>

<servlet-name>myServlet3</servlet-name>

<url-pattern>/myServlet3</url-pattern>

</servlet-mapping>

12.初始化参数设置

配置<init-param>元素

<servlet>

......

<init-param>

<param-name>charSetContent</param-name>

<param-value>utf-8</param-value>

</init-param>

</servlet>

public void init(ServletConfig config) throws ServletException {

String initParam=config.getInitParameter("charSetContent");

System.out.println(initParam);

}

13.MVC

14.过滤器

是向Web应用程序的请求和响应添加功能的Web服务组件

统一处理请求和响应

15.配置过滤器的初始化参数

配置<init-param>元素

<filter>

<init-param>

<param-name>Encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>

读取过滤器的初始化参数

init(FilterConfig fConfig) {

String encoding=fConfig.getInitParameter("Encoding");

}

16.多个过滤器会形成过滤链

17.EL表达式

${EL表达式}

操作符'.' 获取对象的属性

\[\] 获取对象的属性 ${news"title"}

获取集合中的对象,例如:${newsList0}

18.访问作用域

request.setAttribute("news", news);

两种方式取数据:

使用Java小脚本:request.getAttribute("news");

使用EL表达式: { news } 或者 { requestScope.news }

|-----------|----------------------------------------------------------|-----------------------------------------------|
| 作用域 | Java****代码取值 | EL****取值 |
| 请求作用域 | request.getAttribute("news"); | {****request****Scope****.news****}** | | **会话作用域** | **session.****getAttribute****("username");** | **{sessionScope.username} |
| 程序作用域 | application.getAttribute("count"); | {****application****Scope****.count****}** | | **页面作用域** | **pageContext.****getAttribute****("****userNum****");** | **{pageScope**.userNum****}** |

19.JSTL

JSP标准标签库

实现JSP页面中的逻辑控制

20.JSTL使用步骤

下载jstl.jar和standard包

下载jstl.jar和standard.jar包

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

将这两个包复制到WEB-INF\lib目录

在JSP页面中添加指令

21.JSTL标签分类

|------------------------|--------------------------------------------|------------------------|
| 标签库名称 | 资源标示符(uri | 前缀(prefix |
| 核心标签库 | http://java.sun.com/jsp/jstl/core | c |
| 国际化**/格式化标签库 | http://java.sun.com/jsp/jstl/fmt | fmt |
| **XML
**标签库** | http://java.sun.com/jsp/jstl/xml | x |
| 数据库标签库 | http://java.sun.com/jsp/jstl/sql | sql |
| 函数标签库 | http://java.sun.com/jsp/jstl/functions | fn |

22.JSTL标签

|-----------------------------------|------------------------------------------|
| 标签名称 | 作用 |
| <c:out /> | 输出文本内容到out对象,常用于显示特殊字符,显示默认值 |
| <c:set/> | 在作用域中设置变量或对象属性的值 |
| <c:remove/> | 在作用域中移除变量的值 |
| <c:if/> | 实现条件判断结构 |
| <c:forEach/> | 实现循环结构 |
| <c:url/> | 构造url地址 |
| <c:param/> | url后附加参数 |
| <c:import/> | 在页面中嵌入另一个资源内容 |
| <fmt:formatDate/> | 格式化时间 |
| <fmt:formatNumber/> | 格式化数字 |

<c:out value="value" default="default" escapeXml="true|false" />

<c:set var="name" value= "value" scope="scope" />

<c:set value= "value" target="target" property="propertyName" />

<c:forEach var="varName" items="items" varStatus="varStatus">

......

</c:forEach>

<c:if test="condition" var="varName" scope="scope">

......

</c:if>

<c:url value="url" />

<c:param name="name" value="value"/>

<c:import url="URL" />

<fmt:formatDate value="date" pattern="yyyy-MM-dd HH:mm:ss"/>

相关推荐
咖啡八杯16 小时前
GoF设计模式——策略模式
java·后端·spring·设计模式
用户128526116021 天前
我把祖传Java项目重构后,接口响应从3s砍到了200ms,只改了这几行代码
java
Linsk1 天前
组件 = 模板 + 业务逻辑
java·前端·vue.js
星沉远浦1 天前
用Gemini高效解决Java代码报错难以定位的问题
java
用户298698530141 天前
Word 文档字符级格式化:Java 实现方案详解
java·后端
笨鸟飞不快1 天前
从单个服务到集群:一次完整的性能排查复盘
java·前端
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
SamDeepThinking1 天前
Java微服务练习方式
java·后端·微服务
朦胧之2 天前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅2 天前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java