# StudentSystemHomeWork
**Repository Path**: jackytallow/student-system-home-work
## Basic Information
- **Project Name**: StudentSystemHomeWork
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-11
- **Last Updated**: 2021-04-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## EL和JSTL核心技术
### 1EL表达式 ${ varName }
1. 基本概念:EL(Expression Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据并输出
2. 主要功能:
- 依次访问pageContext、request、session和application作用域对象存储的数据。
- 获取请求参数值。
- 访问Bean对象的属性。
- 访问集合中的数据。
- 输出简单的运算结果
3. 访问请求参数的数据:
- 在EL之前使用下列方式访问请求参数的数据
request.getParameter(name);
request.getParameterValues(name);
- 在EL中使用下列方式访问请求参数的数据
param:接收的参数只有一个值。
paramValues:接受的参数有多个值。
```
${param.name}
${paramValues.hobby[0]}
```
4. 访问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标签
1. 基本概念 : JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库
2. 常用核心标签:
- 输出标签
```
用来将指定内容输出的标签
```
- 设置标签
```
用来设置属性范围值的标签
```
- 删除表单
```
用来删除指定数据的标签
```
- 单条件判断标签
```
满足条件执行
/c:if >
```
- 多条件判断标签
```
满足条件执行
…
不满足上述when条件时执行
```
- 循环标签
```
…
```
- 常用函数标签
```
<%@ 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过滤器
1. 基本概念
- Filter本意为”过滤“的含义,是JavaWeb的三大组件之一,三大组件为:Servlet、Filter、Listener。
- 过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件。
- 过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求
- 进行修改、判断以及拦截等,也可以对响应进行修改、判断以及拦截等。
2. 使用方式
- 自定义类实现Filter接口并重写doFilter方法。
- 在web.xml文件中配置过滤器
3. Filter接口:
- javax.servlet.Filter接口主要用于描述过滤器对象,可以对资源的请求和资源的响应操作进行筛选操作。
- 常用的方法:
|方法声明| 功能介绍|
|---|---|
|void init(FilterConfig filterConfig)|实现过滤器的初始化操作|
|void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)| 执行过滤操作的功能|
|void destroy()| 实现过滤器的销毁操作|
4. FilterConfig接口:
- javax.servlet.FilterConfig接口主要用于描述过滤器的配置信息。
- 常用的方法:
|方法声明| 功能介绍|
|---|---|
|String getFilterName() |获取过滤器的名字|
|String getInitParameter(String name)| 获取指定的初始化参数信息|
|Enumeration getInitParameterNames()| 获取所有的初始化操作名称|
|ServletContext getServletContext()| 获取ServletContext对象|
5. 过滤器优点:
- 实现代码的“可插拔性”,即增加或减少某个功能模块,不会影响程序的正常执行。
- 可以将多个相同处理逻辑的模块集中写在过滤器里面,可实现重复利用、也方便代码的维护
### Listener监听器
** 基本概念**:
- Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。
- 容器产生的事件分类如下:
- 生命周期相关的事件。
- 属性状态相关的事件。
- 存值状态相关的事件。
- 底层原理是采用接口回调的方式实现。
1. 基本分类:
|监听器类型| 功能介绍|
|---|---|
|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数值的钝化和活化|
2. 监听器详解:
- ServletRequestListener监听器
在ServletRequest创建和关闭时都会通知ServletRequestListener监听器。
|方法声明| 功能介绍|
|---|---|
|void requestInitialized(ServletRequestEvent sre)| 实现ServletRequest对象的初始化|
|void requestDestroyed(ServletRequestEvent sre)| 实现ServletRequest对象的销毁|
- ServletRequestAttributeListener监听器
向ServletRequest添加、删除或者替换一个属性的时候,将会通知
ServletRequestAttributeListener监听器。
|方法声明| 功能介绍|
|---|---|
|void attributeAdded(ServletRequestAttributeEvent srae)| 增加属性时触发|
|void attributeReplaced(ServletRequestAttributeEvent srae)| 修改属性时触发|
|void attributeRemoved(ServletRequestAttributeEvent srae)| 删除属性时触发|
- HttpSessionListener监听器
当一个HttpSession刚被创建或者失效(invalidate)的时候,将会通知HttpSessionListener监听器。
|方法声明| 功能介绍|
|---|---|
|void sessionCreated(HttpSessionEvent se)| 当一个HttpSession对象被创建时会调用这个方法|
|void sessionDestroyed(HttpSessionEvent se)| 当一个HttpSession超时或者调用HttpSession的invalidate()方法让它销毁时,将会调用这个方法|
- HttpSessionAttributeListener监听器
HttpSession中添加、删除或者替换一个属性的时候,将会通知HttpSessionAttributeListener监听器。
|方法声明| 功能介绍|
|---|---|
|void attributeAdded(HttpSessionBindingEvent se) |当往会话中加入一个属性的时候会调用这个方法|
|void attributeRemoved(HttpSessionBindingEvent se) |当从会话中删除一个属性的时候会调用这个方法|
|void attributeReplaced(HttpSessionBindingEvent se) |当改变会话中的属性的时候会调用这个方法|
- ServletContextListener监听器
在ServletContext创建和关闭时都会通知ServletContextListener监听器。
|方法声明| 功能介绍|
|---|---|
|void contextInitialized(ServletContextEvent sce)| 当ServletContext创建的时候,将会调用这个方法|
|void contextDestroyed(ServletContextEvent sce) |当ServletContext销毁的时候(例如关闭应用服务器或者重新加载应用),将会调用这个方法|
- ServletContextAttributeListener监听器
向ServletContext添加、删除或者替换一个属性的时候,将会通知ServletContextAttributesListener监听器
|方法声明| 功能介绍|
|---|---|
|void attributeAdded(ServletContextAttributeEvent scae)| 往ServletContext中加入一个属性的时候触发|
|void attributeRemoved(ServletContextAttributeEvent scae)| 从ServletContext中删除一个属性的时候触发|
|void attributeReplaced(ServletContextAttributeEvent scae)| 改变ServletContext中属性的时候触发|
- HttpSessionBindingListener监听器
HttpSession中绑定和解除绑定时,将会通知HttpSessionListener监听器。
|方法声明 |功能介绍|
|---|---|
|void valueBound(HttpSessionBindingEvent event)| 有对象绑定时调用该方法|
|void valueUnbound(HttpSessionBindingEvent event)| 有对象解除绑定时调用该方法|
- 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 |目录名 查看目录下有什么东西|
- 目录切换
|命令 |功能描述|
|---|---|
|cd …| 上一级目录|
|cd dirname |进入目录|
|cd 或 cd ~| 直接回到用户的家目录|
|cd / |回到系统根目录|
- 查看完整路径
|命令 |功能描述|
|---|---|
|pwd| 查看当前目录所在的位置|
- 查看当前用户
|命令| 功能描述|
|---|---|
|whoami |查看当前用户的名称|
- 用户切换
|命令| 功能描述|
|---|---|
|su| 普通用户切换到root用户|
|su root| 切换到root用户|
|su 用户名 |切换到普通用户|
|exit| 退回到原来用户|
- 管理用户
|命令| 功能描述|
|---|---|
|useradd xxx| 创建用户|
|passwd xxx| 为创建的用户设置密码|
|userdel| 删除用户|
- 查看命令的所在目录
|命令| 功能描述|
|---|---|
|which| 命令 查看指定命令所在的路径信息|
- 文件操作
|命令 |功能描述|
|---|---|
|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 |查看文件的行数|
- 目录操作
|命令| 功能描述|
|---|---|
|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(强制)| 删除文件/目录|
- 查找操作
|命令 |功能描述|
|---|---|
|find / -name passwd[完整名称] |查找passwd文件|
|find ./ -name “p*” | 查找带”p”的文件|
|find ./ -type f |查找所有文件|
|grep 内容 fileName| 从指定文件中查找指定的内容|
- 权限管理
|命令| 功能描述|
|---|---|
|chmod 权限 文件/目录名| 管理指定文件的权限信息,r读:4 w写:2 x执行:1|
- 进程管理
|命令| 功能描述|
|---|---|
|ps| 查看当前终端窗口里的进程|
|ps -aux| 查看系统中的所有进程|
|ps -ef| 查看进程列表|
|kill 进程号| 杀死指定的进程|
|kill -9 进程号| 强制杀死指定的进程|
- 其它命令
|命令| 功能描述|
|---|---|
|ifconfig |查看当前系统的IP地址等信息|
|tar zcvf 压缩文件名.tar.gz 路径1 路径2 … |实现一组文件或文件夹的打包|
|tar zxvf 压缩文件名.tar.gz| 实现解压缩解包|
|man [章节号] 命令/函数名 |查询指定的命令或函数|
### vi工具的使用
vi和vim是Linux系统命令行下的文本编辑器,通常格式为:vi 文件名 或 vim 文件名
- 命令模式的编辑命令
|命令 |功能描述|
|---|---|
|i| 在当前位置之前插入|
|a| 在当前位置之后插入|
|o| 在当前行下插入|
- 命令行模式的删除命令
|命令| 功能描述|
|---|---|
|r |替换一个字符|
|cw |替换一个单词|
|cc |替换一行|
|C |替换从光标至行尾|
- 命令行模式的拷贝命令
|命令| 功能描述|
|---|---|
|yw |拷贝词|
|yy |拷贝行(或Y)|
|dd |剪切行|
|p |当前行下粘贴|
|u |撤销|
|ctrl+r| 取消撤销|
- 底行模式的命令
|命令| 功能描述|
|---|---|
|:w |存盘|
|:w newfile| 存成新文件|
|:wq |存盘退出Vi(或ZZ,或:x)|
|:q! |强行退出不存盘|
|:1,2co3| 拷贝行1,行2在行3之后|
|:4,5mo6| 移动行4,行5在行6之后|
|:%s| /源字符串/目标字符串|
|:%s |/源字符串/目标字符串/g 替换每一行中的所有|
- 使用vimtutor 命令用来练习vi命令