Java WEB--学习笔记(下)
1.EL和JSTL核心技术
1.1EL表达式 ${ varName }
基本概念:EL(Expression Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据并输出
主要功能:
- 依次访问pageContext、request、session和application作用域对象存储的数据。
- 获取请求参数值。
- 访问Bean对象的属性。
- 访问集合中的数据。
- 输出简单的运算结果
访问请求参数的数据:
-
在EL之前使用下列方式访问请求参数的数据
request.getParameter(name);
request.getParameterValues(name); -
在EL中使用下列方式访问请求参数的数据
param:接收的参数只有一个值。
paramValues:接受的参数有多个值。<!-- 获取指定参数的数值 --> ${param.name} <!-- 获取指定参数中指定下标的数值 --> ${paramValues.hobby[0]}
访问Bean对象的属性:
访问方式: $ { 对象名 [“属性名”] }
常用的内置对象
类别 | 标识符 | 描述 |
---|---|---|
JSP | pageContext PageContext | 处理当前页面 |
作用域 | pageScope | 同页面作用域属性名称和值有关的Map类 |
- | requestScope | 同请求作用域属性的名称和值有关的Map类 |
- | sessionScope | 同会话作用域属性的名称和值有关的Map类 |
- | applicationScope | 同应用程序作用域属性的名称和值有关的Map类 |
请求参数 | param | 根据名称存储请求参数的值的Map类 |
- | paramValues | 把请求参数的所有值作为一个String数组来存储的Map类 |
请求头 | header | 根据名称存储请求头主要值的Map类 |
- | headerValues | 把请求头的所有值作为一个String数组来存储的Map类 |
Cookie | cookie | 根据名称存储请求附带的cookie的Map类 |
初始化参数 | initParam | 根据名称存储Web应用程序上下文初始化参数的Map类 |
常见的运算符:
条件运算符 : ${条件表达式? 语句1 : 语句2}
验证运算符 :
${empty 表达式}
返回布尔值判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值。
JSTL标签
基本概念 : JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库
常用核心标签:
输出标签
<c:out></c:out> 用来将指定内容输出的标签
设置标签
<c:set></c:set> 用来设置属性范围值的标签
删除表单
<c:remove></c:remove> 用来删除指定数据的标签
单条件判断标签
<c:if test =“EL条件表达式”>
满足条件执行
/c:if >
多条件判断标签
<c:choose >
<c:when test =“EL表达式”>
满足条件执行
</c:when>
…
<c:otherwise>
不满足上述when条件时执行
</c:otherwise>
</c:choose >
循环标签
<c:forEach var=“循环变量” items=“集合”>
…
</c:forEach>
常用函数标签
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
常用格式化标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Filter+Listener核心技术
Filter过滤器
基本概念
- Filter本意为”过滤“的含义,是JavaWeb的三大组件之一,三大组件为:Servlet、Filter、Listener。
- 过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件。
- 过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求
- 进行修改、判断以及拦截等,也可以对响应进行修改、判断以及拦截等。
使用方式
自定义类实现Filter接口并重写doFilter方法。
在web.xml文件中配置过滤器
Filter接口:
javax.servlet.Filter接口主要用于描述过滤器对象,可以对资源的请求和资源的响应操作进行筛选操作。
常用的方法:
方法声明 | 功能介绍 |
---|---|
void init(FilterConfig filterConfig) | 实现过滤器的初始化操作 |
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) | 执行过滤操作的功能 |
void destroy() | 实现过滤器的销毁操作 |
FilterConfig接口:
javax.servlet.FilterConfig接口主要用于描述过滤器的配置信息。
常用的方法:
方法声明 | 功能介绍 |
---|---|
String getFilterName() | 获取过滤器的名字 |
String getInitParameter(String name) | 获取指定的初始化参数信息 |
Enumeration getInitParameterNames() | 获取所有的初始化操作名称 |
ServletContext getServletContext() | 获取ServletContext对象 |
过滤器优点:
实现代码的“可插拔性”,即增加或减少某个功能模块,不会影响程序的正常执行。
可以将多个相同处理逻辑的模块集中写在过滤器里面,可实现重复利用、也方便代码的维护
Listener监听器
** 基本概念**:
- Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。
- 容器产生的事件分类如下:
生命周期相关的事件。
属性状态相关的事件。
存值状态相关的事件。 - 底层原理是采用接口回调的方式实现。
基本分类:
监听器类型 | 功能介绍 |
---|---|
javax.servlet.ServletRequestListener | 监听request作用域的创建和销毁 |
javax.servlet.ServletRequestAttributeListener | 监听request作用域的属性状态变化 |
javax.servlet.http.HttpSessionListener | 监听session作用域的创建和销毁 |
javax.servlet.http.HttpSessionAttributeListener | 监听session作用域的属性状态变化 |
javax.servlet.ServletContextListener | 监听application作用域的创建和销毁 |
javax.servlet.ServletContextAttributeListener | 监听application作用域的属性状态变化 |
javax.servlet.http.HttpSessionBindingListener | 监听对象与session的绑定和解除 |
javax.servlet.http.HttpSessionActivationListener | 监听session数值的钝化和活化 |
监听器详解:
(1)ServletRequestListener监听器
在ServletRequest创建和关闭时都会通知ServletRequestListener监听器。
方法声明 | 功能介绍 |
---|---|
void requestInitialized(ServletRequestEvent sre) | 实现ServletRequest对象的初始化 |
void requestDestroyed(ServletRequestEvent sre) | 实现ServletRequest对象的销毁 |
(2)ServletRequestAttributeListener监听器
向ServletRequest添加、删除或者替换一个属性的时候,将会通知
ServletRequestAttributeListener监听器。
方法声明 | 功能介绍 |
---|---|
void attributeAdded(ServletRequestAttributeEvent srae) | 增加属性时触发 |
void attributeReplaced(ServletRequestAttributeEvent srae) | 修改属性时触发 |
void attributeRemoved(ServletRequestAttributeEvent srae) | 删除属性时触发 |
(3)HttpSessionListener监听器
当一个HttpSession刚被创建或者失效(invalidate)的时候,将会通知HttpSessionListener监听器。
方法声明 | 功能介绍 |
---|---|
void sessionCreated(HttpSessionEvent se) | 当一个HttpSession对象被创建时会调用这个方法 |
void sessionDestroyed(HttpSessionEvent se) | 当一个HttpSession超时或者调用HttpSession的invalidate()方法让它销毁时,将会调用这个方法 |
(4)HttpSessionAttributeListener监听器
HttpSession中添加、删除或者替换一个属性的时候,将会通知HttpSessionAttributeListener监听器。
方法声明 | 功能介绍 |
---|---|
void attributeAdded(HttpSessionBindingEvent se) | 当往会话中加入一个属性的时候会调用这个方法 |
void attributeRemoved(HttpSessionBindingEvent se) | 当从会话中删除一个属性的时候会调用这个方法 |
void attributeReplaced(HttpSessionBindingEvent se) | 当改变会话中的属性的时候会调用这个方法 |
(5)ServletContextListener监听器
在ServletContext创建和关闭时都会通知ServletContextListener监听器。
方法声明 | 功能介绍 |
---|---|
void contextInitialized(ServletContextEvent sce) | 当ServletContext创建的时候,将会调用这个方法 |
void contextDestroyed(ServletContextEvent sce) | 当ServletContext销毁的时候(例如关闭应用服务器或者重新加载应用),将会调用这个方法 |
(6)ServletContextAttributeListener监听器
向ServletContext添加、删除或者替换一个属性的时候,将会通知ServletContextAttributesListener监听器
方法声明 | 功能介绍 |
---|---|
void attributeAdded(ServletContextAttributeEvent scae) | 往ServletContext中加入一个属性的时候触发 |
void attributeRemoved(ServletContextAttributeEvent scae) | 从ServletContext中删除一个属性的时候触发 |
void attributeReplaced(ServletContextAttributeEvent scae) | 改变ServletContext中属性的时候触发 |
(7)HttpSessionBindingListener监听器
HttpSession中绑定和解除绑定时,将会通知HttpSessionListener监听器。
方法声明 | 功能介绍 |
---|---|
void valueBound(HttpSessionBindingEvent event) | 有对象绑定时调用该方法 |
void valueUnbound(HttpSessionBindingEvent event) | 有对象解除绑定时调用该方法 |
(8)HttpSessionActivationListener监听器
当有session数值的钝化和活化操作时,将会通知HttpSessionActivationListener监听器。
方法声明 | 功能介绍 |
---|---|
void sessionWillPassivate(HttpSessionEvent se) | 有钝化操作时调用该方法 |
void sessionDidActivate(HttpSessionEvent se) | 有活化操作时调用该方法 |
配置context.xml文件:
Linux系统常用命令
** Shell的概念**:
Shell俗称外壳,是提供用户使用界面的一种软件,叫做命令解释器。
主要负责接受用户输入的命令,然后调用相应的应用程序,最后向用户输出程序运行的结果。
命令 [-选项] [参数]
常用命令:
(1)查看目录下文件/目录
命令 | 功能描述 |
---|---|
ls | list显示文件 |
ls -l 或 ll | list -list显示详细信息 |
ls -a | list -all显示全部(包含隐藏文件)文件 |
ls -al | list -all list 上两个合体 |
ls | 目录名 查看目录下有什么东西 |
(2)目录切换
命令 | 功能描述 |
---|---|
cd … | 上一级目录 |
cd dirname | 进入目录 |
cd 或 cd ~ | 直接回到用户的家目录 |
cd / | 回到系统根目录 |
(3)查看完整路径
命令 | 功能描述 |
---|---|
pwd | 查看当前目录所在的位置 |
(4)查看当前用户
命令 | 功能描述 |
---|---|
whoami | 查看当前用户的名称 |
(5)用户切换
命令 | 功能描述 |
---|---|
su | 普通用户切换到root用户 |
su root | 切换到root用户 |
su 用户名 | 切换到普通用户 |
exit | 退回到原来用户 |
(6)管理用户
命令 | 功能描述 |
---|---|
useradd xxx | 创建用户 |
passwd xxx | 为创建的用户设置密码 |
userdel | 删除用户 |
(7)查看命令的所在目录
命令 | 功能描述 |
---|---|
which 命令 | 查看指定命令所在的路径信息 |
(8)文件操作
命令 | 功能描述 |
---|---|
touch fileName | 创建名字为fileName的文件 |
touch dir/fileName | 在dir目录下创建名字为fileName的文件 |
echo 内容 > fileName | 把内容覆盖写到文件中,若文件不存在则创建 |
echo 内容 >> fileName | 把内容追加到文件中 |
cat fileName | 打印文件内容到终端 |
more fileName | 分屏查看文件各行内容,不支持回看 |
less fileName | 查看文件各部分内容,支持回看 |
head -n fileName | 查看文件的前n行内容 |
tail -n fileName | 查看文件末尾n行内容 |
wc fileName | 查看文件的行数 |
(9)目录操作
命令 | 功能描述 |
---|---|
mkdir 目录名 | 创建普通文件夹 |
mkdir -p 目录/目录/目录 | 递归方式创建多级父子文件夹 |
mv dir1 dir2 | 将dir1移动到dir2中 |
mv dir1/dir2 ./ | 将dir1中dir2移动到当前目录下 |
mv dir1 name | 将dir1改名为name |
cp dir1 name | 将dir1拷贝为name |
cp -r dir1 dir2 | 需要设置参数 -r (recursive递归) 无视目录层次 |
rm 文件 | 删除文件 |
rm -r 目录 | 递归删除目录(无视目录层次) |
rm -rf 文件/目录 | -r force(强制) 删除文件/目录 |
(10)查找操作
命令 | 功能描述 |
---|---|
find / -name | passwd[完整名称] 查找passwd文件 |
find ./ -name | “p*” 查找带”p”的文件 |
find ./ -type | f 查找所有文件 |
grep 内容 fileName | 从指定文件中查找指定的内容 |
(11)权限管理
命令 | 功能描述 |
---|---|
chmod 权限 | 文件/目录名 管理指定文件的权限信息,r读:4 w写:2 x执行:1 |
(12)进程管理
命令 | 功能描述 |
---|---|
ps | 查看当前终端窗口里的进程 |
ps -aux | 查看系统中的所有进程 |
ps -ef | 查看进程列表 |
kill 进程号 | 杀死指定的进程 |
kill -9 进程号 | 强制杀死指定的进程 |
(13)其它命令
命令 | 功能描述 |
---|---|
ifconfig | 查看当前系统的IP地址等信息 |
tar zcvf 压缩文件名.tar.gz 路径1 路径2 … | 实现一组文件或文件夹的打包 |
tar zxvf 压缩文件名.tar.gz | 实现解压缩解包 |
man [章节号] 命令/函数名 | 查询指定的命令或函数 |
vi工具的使用:
vi和vim是Linux系统命令行下的文本编辑器,通常格式为:vi 文件名 或 vim 文件名
(1)命令模式的编辑命令
命令 | 功能描述 |
---|---|
i | 在当前位置之前插入 |
a | 在当前位置之后插入 |
o | 在当前行下插入 |
(2)命令行模式的删除命令
命令 | 功能描述 |
---|---|
r | 替换一个字符 |
cw | 替换一个单词 |
cc | 替换一行 |
C | 替换从光标至行尾 |
(4)命令行模式的拷贝命令
命令 | 功能描述 |
---|---|
yw | 拷贝词 |
yy | 拷贝行(或Y) |
dd | 剪切行 |
p | 当前行下粘贴 |
u | 撤销 |
ctrl+r | 取消撤销 |
(5)底行模式的命令
命令 | 功能描述 |
---|---|
:w | 存盘 |
:w newfile | 存成新文件 |
:wq | 存盘退出Vi(或ZZ,或:x) |
:q! | 强行退出不存盘 |
:1,2co3 | 拷贝行1,行2在行3之后 |
:4,5mo6 | 移动行4,行5在行6之后 |
:%s | /源字符串/目标字符串 |
:%s /源字符串/目标字符串/g | 替换每一行中的所有 |
使用vimtutor 命令用来练习vi命令