学习Servlet编程3

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

1.6过滤器的代码执行过程

  • 先访问过滤器

  • 再访问被拦截的资源

  • 执行过滤器中被放行后的代码

1.7案例

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< %! 代码 % >

放置在类体里面,能够在类体里面写的代码都能够在该标签写(全局变量

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)

第二种:${键名}:省去域名,表示依次从最小的域中查找是否有该键对应的值,直到找到或者所有域都没有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值