一、JSTL标签和EL表达式
1.EL表达式
(一)主要功能
EL表达式简化了JSP的表达式写法,可以使得我们更方便地去访问和获取各种数据。
主要功能有:
- 依次访问(依次尝试获取)pageContext、request、session和application作用域对象存储的数据。
- 获取请求参数值。
- 访问Bean对象的属性。
- 访问集合中的数据。
- 输出简单的运算结果
(二)访问类型
(1)内置对象
特意标黑 是为了表明两者的对应关系
- JSP传统表达式:<%=request.getAttribute(“ varName”)%>
- 用EL实现: ${ varName }
为方便大家理解,给出以下执行流程图(图片来自于拉勾教育):
(2)请求参数
- 在EL之前使用下列方式访问请求参数的数据
request.getParameter(name);
request.getParameterValues(name); - 在EL中使用下列方式访问请求参数的数据
param:接收的参数只有一个值。
paramValues:接受的参数有多个值
示例:
<!-- 获取指定参数的数值 -->
${param.name}
<!-- 获取指定参数中指定下标的数值 -->
<!-- 如复选框组和下拉列表组等-->
${paramValues.hobby[0]}
(3)JavaBean对象
- 方式一: $ { 对象名 . 属性名 },例如:${user.name}
- 方式二: $ { 对象名 [“属性名”] },例如:${user[“name”]}
- 方式二与方式一效果相同,但是,当属性中的值包含一些特殊字符如非字符或数字的字符时,我们一定要使用方式二去访问。
- 方式二可以实现动态取值:
<%
Student s=new Student();//属性有 姓名name和学号id
s.setId("1");
s.setName("尔康");
request.setAttribute("prop","id"); //第一次取 id
request.setAttribute("prop","name"); //第二次 取name
//即若想更改请求对象中的参数值,用方式一去获取的话得重新修改语句 即如下方JSP表达式所示
%>
<!-- JSP表达式-->
<%= s.getId %> //第一次
<%= s.name %> // 第二次还需要再写一次不同的值
<!-- EL表达式 -->
${ user[prop] }//更改参数中的值时,用方法二访问时不需要更改语句,即 动态取值
(4)集合
<!-- student为ArrayList类型的对象 -->
${student[0].name}// 取第一个元素
(三)常用内置对象
(图片来源于拉勾教育)
2.JSTL
(一)基本概念
- JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库。
- 库中包含多种类型标签,可替代传统HTML文档中的许多标签,可以提高程序可读性,降低维护难度。
(二)标签
(1)常用核心标签
<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>
html标签或JSTL标签 或EL表达式 jsp表达式都可
<c:otherwise>
不满足上述when条件时执行
</c:otherwise>
</c:choose >
<c:forEach var=“循环变量” items=“集合”>
执行语句
</c:forEach>
(2)常用函数标签
//许多方法的使用 和java中基本一致
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
(3)常用格式化标签
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
二、过滤器(Filter)和监听器(Listener)
1.Filter
(一)基本概念
- JavaWeb三大组件Servlet、Fillter、Listener
工作方式如下图(过滤器的功能不限于以下所示的举例):
过滤器的执行顺序取决于web.xml文件中标签对的位置先后。
(二)使用方式
- 自定义类实现Filter接口并重写doFilter方法
- chain.doFilter(request,response)相当于放行的意思
- web.xml配置过滤器(与Servlet配置方式一致)
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.lagou.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
// /*意思为访问所有文件前都先进行过滤,即执行实现Filter接口的方法,符合条件就放行
<url-pattern>/*</url-pattern>
</filter-mapping>
2.Listener
- Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。
- 容器产生的事件分类如下:
- 生命周期相关的事件。
- 属性状态相关的事件。
- 存值状态相关的事件。
- 底层原理是采用接口回调的方式实现
使用方式 - 自定义类实现所需监听事件的类型的接口,重写接口中的方法
- 在对应事件发生的方法中 自定义需实现的操作。如实现统计在线人数或者新用户增加至群组等。
- web.xml中配置监听器
注意 - HttpSessionBindingListener监听器和类绑定的时候不需要在web.xml中配置
三、Linux系统
1.安装方式
(一)镜像系统
这里以CentOS系统为例:
- Vmware的下载和安装
下载地址:https://www.vmware.com/cn.html
所有步骤均可以默认执行,安装路径不能存在中文 - CentOS系统的下载和安装
下载地址:https://www.centos.org/
下载好镜像文件后,在Vmware软件中选择以镜像方式安装系统
(二)云服务器
- 镜像市场选择自己喜欢的Linux系统,我自己选择的是CentOs7没有带图形界面的,刚学Linux的童鞋建议先安装个有界面的熟悉熟悉操作。
- 云服务器安装前有设置用户密码的选项,密码为登录系统时的密码。
2.目录结构
(一)框架结构
具体介绍如下图(图片来源拉勾教育):
(二)Vi工具的使用
vi和vim是Linux系统命令行下的文本编辑器,通常格式为:vi 文件名 或 vim 文件名。
(1)三种模式
四、Linux系统开发环境安装
1.Xshell工具
- 主机框中为云服务器公网IP或者虚拟机中系统的静态IP
(一)遇到的问题
自己笔记本配置环境时,电脑死机重启后Mysql服务如何也启动不了,折腾了一天多,最后还是没解决,应该是机器的问题,暂时先挂号在这,到时候回头有眉目了再来完善解决思路。
无奈之下,突然想起自己的云服务器还在跑着,上去把还没过期的Windows系统镜像换成了CentOs7,按照JDK->Tomcat->Mysql的顺序安装完以后,接下来要想远程与云服务器连接,还需要配置好云服务器的安全组,我因为之前搭WordPress时有现成的安全组,直接添加了,总结一下就是以下几步:
1.云服务器安装好后,阿里云服务器会自行启动,可以远程连接也可以用Xshell工具连接
2.配置云服务器安全组,放行所需的端口
3.CentOs系统中:会用到的指令
- 输入指令 firewall-cmd --state 查看防火墙是否开启
如果没有开启,则需要开启防火墙
指令 systemctl start firewalld.service - 输入指令 firewall-cmd --zone=public --add-port=8080/tcp --permanent 开放8080端口 (mysql的话 将8080改为3306即可)
- 输入指令 firewall-cmd --reload 重新加载 显示success即表示成功
4.配置完防火墙以后,远程连接数据库和服务器就都可以正常访问了。