1、Filter过滤器
1.1概念
生活中的过滤器,饮水机、空气净化器、口罩等
web开发中的过滤器,当浏览器访问服务器的某个或某些资源时,过滤器会拦截对该资源的请求,做出一些特殊的操作
1.2作用
对多个资源的请求作一些通用操作,登录访问,编码转换,敏感字符过滤等
1.3生命周期
初始化:Filter对象在服务器启动时有web服务器创建,这时调用Filter.init()
服务器运行中:该对象一直存在,一个过滤器只会有一个实例对象(单例的)
销毁:Filter对象在服务器正常关闭时由web服务器销毁,这时会调用Filter.destroy()方法
1.4入门
创建一个类实现Filter接口
在doFilter方法中作对资源请求拦截之后的编码
放行:filterChain.doFilter(servletRequest,servletResponse);
设置对哪些资源进行拦截
1.5配置方法2种
@WebFilter("urlPattern")注解在我们自定义的Filter类上,括号里填要拦截资源的路径(如*.do,/*等)
配置web.xml
![](https://img-blog.csdnimg.cn/img_convert/81c0c983d8665f32864f2bccbe4f9ddd.png)
![](https://img-blog.csdnimg.cn/img_convert/e8e73dc7320ca8eff511c9bf0a39b5fb.png)
1.6过滤器的代码执行过程
先访问过滤器
再访问被拦截的资源
执行过滤器中被放行后的代码
1.7案例
![](https://img-blog.csdnimg.cn/img_convert/5ca260b0f831938977bfc0632f54cc0e.png)
![](https://img-blog.csdnimg.cn/img_convert/fa045b552b34b0de1318e7878028565e.png)
![](https://img-blog.csdnimg.cn/img_convert/555a1a471dc60a8385f7a730af63735c.png)
2、JSP
2.1概念
JSP:java server pages 动态网页技术
可以理解为一个特殊的页面,其中即可以直接定义html标签,又可以定义java代码
实质就是一个Sevlet
作用:简化书写
2.2JSP原理
浏览器发送请求到服务器,去找index.jsp
找到后会将index.jsp转化为.java的文件 _index.java
编译.java文件生成.class文件_index.class,这个.class其实就是一个servlet,因为浏览器要想访问我们的java类,那个类只能是servlet,最开始我们也说过servlet定义了一套让浏览器访问自己的规则
打开work文件夹下面,java文件看一下它是否为一个servlet
HttpJspBase在tomcat源码下打开会看到它最终是继承了HttpServlet
既然是servlet必然会有service方法>>>查看index_jsp.java文件可以看到它帮我们做了页面输出的工作
2.3JSP脚本
2.3.1 < % 代码 % >
放在service方法体里面的,能在service方法中 写的代码都能够写在该脚本里面
2.3.2< %= 代码 % >
放在该脚本里面的内容,可作为页面显示输出使用,等同于response.getWriter().write()
2.3.3< %! 代码 % >
放置在类体里面,能够在类体里面写的代码都能够在该标签写(全局变量)
![](https://img-blog.csdnimg.cn/img_convert/c0215ae6bdd6ec428fe3c277547fa597.png)
2.4JSP指令
用于配置jsp页面或者导入资源文件
2.4.1格式
< %@ 指令名称 属性名1=属性值1 属性名2=属性值2 % >
2.4.2分类
page指令:对JSP页面进行配置,属性有contentType、language、errorPage、inErrorPage等
include指令:引用其他JSP页面
taglib指令:导入资源,类似于java导包的效果
2.5JSP内置对象
不需要创建的可以直接使用的对象,一共有九大内置对象
pageContext:还可以来获取其他八个内置对象
session
request
application(servletContext)
3、MVC开发模式
3.1mvc演变历史
早期只有servlet,只能使用response输出标签数据,非常麻烦
后来jsp简化了servlet的开发,但是代码一多了会很杂乱,很难阅读
再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性
3.2MVC
M:model,模型层,完成具体的业务操作
V:view,视图层,显示数据
C:controller,控制器层,获取用户输入,调用模型,将视图展示给用户
设计主要目的:分离视图和模型,没有强关联关系(耦合)
优点:耦合度降低,方便维护,利用分工协作,重用性高
缺点:使得项目架构变得复杂,对开发人员要求高
controller相当于饭店里面的菜单,service相当于服务员,dao相当于厨师
4、EL表达式
4.1定义
Expression Language 表达式语句,替换和简化jsp页面中java代码的编写
语法:${表达式}
4.2忽略el表达式
使用isEIlgnored=”true“ 忽略整个页面的el表达式
反斜杠+${表达式}:忽略当前这个el表达式
4.3使用方式
运算符:+-*/ %
比较运算符:> < >= <= == !=
逻辑运算符:&& || !
判空运算符:${empty list},可以判断对象是否为null,如果是数组或List,还可以用于判断该集合中是否有元素
4.4获取值
el表达式只能从域对象中获取值
语法:第一种:${域名称.键名}从指定域中获取指定键的值
pageScope>>>pageCpntext
requestScope>>>request
sessionscope>>>session
applicationScope>>>application(ServletContext)
第二种:${键名}:省去域名,表示依次从最小的域中查找是否有该键对应的值,直到找到或者所有域都没有
![](https://img-blog.csdnimg.cn/img_convert/fda0322f1d3cb97436fad4eed7339061.png)