java之web开发过滤器
我们通常上网的时候都会遇到一个问题,看到一个视频之类的,想要点开观看,点击之后,网页
提醒你:您尚未登录,是否要登录?然后巴拉巴拉跑去输账号密码。
那么这就是一个过滤器的功能,当你要访问一个资源的时候(通常理解为链接),服务器会进行
分析,当前的访问者是否符合一定条件(通常就是检测一下是不是会员,是否已经登录),符合
条件的话,服务器会跳转到指定链接,不满足的话也会友情提醒:您不是会员,您尚未登录等等。
如何实现呢,还是以用户登录为例子吧,看下面~~~
1.三个页面
登录页面,登录成功页面,登录失败页面
login.jsp---loginsuccess.jsp---loginwrong.jsp
2.实现Filter接口的类
这个java文件实现了Filter接口,并且设定了规则,并且还有配置文件
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
request.setCharacterEncoding("utf-8");// 设置请求编码
response.setCharacterEncoding("utf-8");// 设置响应编码
HttpSession session = request.getSession();//session对象,用于存储表单数据
String username = request.getParameter("username");
String password = request.getParameter("password");
session.setAttribute("username", username);
session.setAttribute("password", password);
System.out.println("密码:" + password);
System.out.println("账号:" + session.getAttribute("username"));
if (username != null && password != null) {
if (username.equals("admin") && password.equals("admin")) {
arg2.doFilter(arg0, arg1);// 满足条件放行,跳转到表单想要到达的页面loginsuccess.jsp
} else {
request.getRequestDispatcher("loginwrong.jsp").forward(request,
arg1);// 不满足条件,转到loginwrong页面
}
}
}
配置文件规定了此规则适用于客户端对哪个页面访问时,调用规则
<filter>
<filter-name>logfilter</filter-name>
<filter-class>Filter.Servletfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>logfilter</filter-name>
<url-pattern>/loginsuccess.jsp</url-pattern>
</filter-mapping>
filter-name自定义,不过规则与适用的页面要一一对应,过滤规则类文件要包名+文件名形式书写,
这个文件的意思就是说,当用用户要访问loginsuccess.jsp页面时,过滤器Servletfilter进行拦截,然后
结合规则来看,如果用户的用户名和密码都是admin的话,服务器直接跳转到loginsuccess.jsp页面,
账号和密码不对的话,服务器跳转到loginwrong.jsp页面。
注意:用户提交表单,发送请求之后,请求被过滤器拦截,此时要设置请求和响应的字符编码,防止
后面用到数据的时候造成输出乱码。设置方法在过滤器源码已经用红字标出。
java之web开发过滤器的更多相关文章
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...
- 在做java 的web开发,为什么要使用框架
现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...
- Java在Web开发语言上败给了PHP
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- Java在Web开发语言上败给了PHP(转)
PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java ...
- PHP开发人员对JAVA的WEB开发入门(初版-已废弃)
最近准备对其他部门PHP开发的童鞋做一个对JAVA的培训.知己知彼,百战不殆,我要先了解点PHP,才能确认他们的基础,达到好的授课效果. PHP(原始为Personal Home Page的缩写,后正 ...
- PHP开发人员对JAVA的WEB开发入门(初版-基础知识)
最近准备对其他部门PHP开发的童鞋做一个对JAVA的培训.知己知彼,百战不殆,我要先了解点PHP,才能确认他们的基础,达到好的授课效果. PHP(原始为Personal Home Page的缩写,后正 ...
- 我来谈谈PHP和JAVA在web开发上的的区别
这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好 ...
- 为什么java的web开发中URLEncoder.encode方法要为什么要调用两次
一: 我们先看2个编码的情况 String name=java.net.URLEncoder.encode("测试", "UTF-8"); System.out ...
随机推荐
- 有关Spring注解@xxx的零碎知识
在Java的Spring开发中经常使用一些注解,例如 @XXX 等等,在网上看到收集整理碎片知识,便于懒人计划^=^... 过去,Spring使用的Java Bean对象必须在配置文件[一般为a ...
- 12、Libgdx的图像之全屏和垂直同步
(官网:www.libgdx.cn) 检测当前设置 判断是否设置全屏,可以通过如下方式: boolean fullscreen = Gdx.graphics.isFullscreen(); 设置全屏和 ...
- 多态 OC——第十天
1.多态 父类指针指向子类对象 没有继承就没有多态 联系前面知识才能清楚什么是多态,所以放到最后面总结小知识点,有前面的知识会对多态更好的了解,会觉得简单很多,但是看此篇博文需要 ...
- 【Android 应用开发】Android开发 使用 adb logcat 显示 Android 日志
作者 : 万境绝尘 转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 ...
- 【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
作者 : 万境绝尘 转载请著名出处 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧 ...
- (二十八)QQ好友列表的展开收缩
要通过监听HeaderView上面的Button来进行操作: 通过addTarget方法即可,应该将按钮的点击方法封装在HearView控制器内部. 列表收起来的原理: tableView: numb ...
- Mahout 算法
Mahout 包括协同过滤,基于User和Item的推荐:kmeans.Fuzzy-kmeans .Mean shift .Dirichlet process .LDA聚类:奇异值分解:并行频繁项集挖 ...
- How Many Processes Should Be Set For The Receiving Transaction Manager (RTM)
In this Document Goal Solution References APPLIES TO: Oracle Inventory Management - Version 10 ...
- Unity3D学习笔记(二)Unity的JavaScript基础
Update()每帧调用一次LateUpdate()在Update()后执行Awake()系统执行的第一个方法Start()在Awake()之后,Update()之前FixedUpdate()固定更新 ...
- 10个精选的颜色选择器Javascript脚本及其jQuery插件
Color picker即颜色选择器使我们在web开发中可能经常用到的组件,今天我们特意精选了10个超酷的颜色选择器实现,其中包括了javascript脚本 实现及其传说中的jQuery插件实现 ...