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"]}

获取集合中的对象,例如:${newsList[0]}

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"/>

相关推荐
PythonFun18 分钟前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
Death20022 分钟前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导25 分钟前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
快乐就好ya1 小时前
Java多线程
java·开发语言
IT学长编程1 小时前
计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·二手图书交易系统
CS_GaoMing2 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本
艾伦~耶格尔2 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
2401_858120533 小时前
Spring Boot框架下的大学生就业招聘平台
java·开发语言
S hh3 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习