java之web开发过滤器

我们通常上网的时候都会遇到一个问题,看到一个视频之类的,想要点开观看,点击之后,网页

提醒你:您尚未登录,是否要登录?然后巴拉巴拉跑去输账号密码。

那么这就是一个过滤器的功能,当你要访问一个资源的时候(通常理解为链接),服务器会进行

分析,当前的访问者是否符合一定条件(通常就是检测一下是不是会员,是否已经登录),符合

条件的话,服务器会跳转到指定链接,不满足的话也会友情提醒:您不是会员,您尚未登录等等。

如何实现呢,还是以用户登录为例子吧,看下面~~~

1.三个页面

登录页面,登录成功页面,登录失败页面

login.jsp---loginsuccess.jsp---loginwrong.jsp

2.实现Filter接口的类

这个java文件实现了Filter接口,并且设定了规则,并且还有配置文件

 1 public void doFilter(ServletRequest arg0, ServletResponse arg1,
 2             FilterChain arg2) throws IOException, ServletException {
 3         HttpServletRequest request = (HttpServletRequest) arg0;
 4         HttpServletResponse response = (HttpServletResponse) arg1;
 5         request.setCharacterEncoding("utf-8");// 设置请求编码
 6         response.setCharacterEncoding("utf-8");// 设置响应编码
 7         HttpSession session = request.getSession();//session对象,用于存储表单数据
 8         String username = request.getParameter("username");
 9         String password = request.getParameter("password");
10         session.setAttribute("username", username);
11         session.setAttribute("password", password);
12         System.out.println("密码:" + password);
13         System.out.println("账号:" + session.getAttribute("username"));
14         if (username != null && password != null) {
15             if (username.equals("admin") && password.equals("admin")) {
16                 arg2.doFilter(arg0, arg1);// 满足条件放行,跳转到表单想要到达的页面loginsuccess.jsp
17             } else {
18                 request.getRequestDispatcher("loginwrong.jsp").forward(request,
19                         arg1);// 不满足条件,转到loginwrong页面
20             }
21         }
22     }

配置文件规定了此规则适用于客户端对哪个页面访问时,调用规则

1     <filter>
2         <filter-name>logfilter</filter-name>
3         <filter-class>Filter.Servletfilter</filter-class>
4     </filter>
5     <filter-mapping>
6         <filter-name>logfilter</filter-name>
7         <url-pattern>/loginsuccess.jsp</url-pattern>
8     </filter-mapping>

filter-name自定义,不过规则与适用的页面要一一对应,过滤规则类文件要包名+文件名形式书写,

这个文件的意思就是说,当用用户要访问loginsuccess.jsp页面时,过滤器Servletfilter进行拦截,然后

结合规则来看,如果用户的用户名和密码都是admin的话,服务器直接跳转到loginsuccess.jsp页面,

账号和密码不对的话,服务器跳转到loginwrong.jsp页面。

注意:用户提交表单,发送请求之后,请求被过滤器拦截,此时要设置请求和响应的字符编码,防止

后面用到数据的时候造成输出乱码。设置方法在过滤器源码已经用红字标出。

时间: 2024-10-10 23:34:00

java之web开发过滤器的相关文章

为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架 由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或 者springMVC这样的框架,而不是使用servlet加jsp这样的技术呢?特别是现在我们web的前端页面都是使用velocity这样的模板语 言进行开发,抛弃了jsp,这样的选择又会给我们java的web开发带

Java的web开发用什么框架好

在做Java的web开发时,不同的公司,不同的程序员可能都会采用不同的框架,使用不同的框架有什么区别,又有哪些好处呢?今天武汉java培训专家带大家和大咖一起来学习一下其中的要领:今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做Java的web开发,会选择struts2或者springMVC这样的框架,而不是

PHP和Java在Web开发下相比较

比较PHP和Java的Web开发(推荐相关JAVA教程).以下就几个主要方面进行的比较: 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发.而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法.所以java不如php好学. 二. 数据库访问比较 Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库.访问数据库的接口比较统一. PHP

java servlet结合Oracle搭建java的web开发环境

一. 首先在电脑上安装了 oracle数据库, 安装ORACLE数据库按常理说,直接下载安装就行了,但是中途是遇到了问题的,原因就是我的系统是Win7 64 oracle的client客户端不支持 win7 64,即使是64的系统也只能下载32位的client安装,这里搞的我重用ghost还原了下系统.(其实后面发现它是可以完全卸载的) 二.我电脑上是一直都安装有ecplise的,但是没有安装java的web开发环境,下面我说下安装方法吧 ecplise菜单栏----Help-->Install

Java在Web开发语言上败给了PHP(转)

PHP的主要语言开发者之一.Zend公司的创始人之一Andi Gutmans最近在blog中直言不讳地批评了Java语言.他指出,目前Java厂商试图在JVM上提供动态语言实现的路子根本不对,Java已经输掉了Web开发语言的战争,PHP是事实上的标准和胜利者. Gutmans的这篇文章在技术界引发了强烈争议,很对人对此有不同的意见,我在这里就阐述一下我对PHP和Java两种语言的看法. 我早先曾经在<Perl.PHP.ASP.JSP技术比较> 一文中对比过PHP和Java的异同,简而言之,P

我来谈谈PHP和JAVA在web开发上的的区别

这里的标题写的是谈谈PHP和JAVA的区别,其实是委婉的说法,其实别人是想听PHP好还是JAVA好!!! 从而从中找到存在感!!! 因为由于我是从多年的php开发转到java开发的.所以最,不时的有好几个同事问我,你觉得java好还是php好.我每次的回答都是,各有千秋吧,各有各的好处,这是最实际的答案. 然后临了,去想想到底都有什么差别.今天我就来仔细总结下,php与java到底有啥差别吧. 1. php即写即用的. 也就是说每次只有一改动完成,用户立马看到效果,而java则慢多了,代码改动完

【JAVA】WEB开发实际任务——记录

一 Ext namespace 解析 对于java中的包,我们都认为主要是为了类名重复而引入的一种管理类的方法.同样,因为js定义的类太多,难免会定义重复的类名.特别是在今天这个需要共同协作完成项目的世界里.Ext.namespace正是为此而生. Ext.namespace('com.company'); 就是定义了一个com.company的包. com.company.ClassA = function(){}:就是定义了com.company包下面的一个Class.你一定会问,既然定义了

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

WEB开发:Java与Php对比

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发.以下是我就几个主要方面进行比较: 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发.而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法.所以java不如php好学. Java首先要编译成字节码.class文件,然后在java虚拟机上解释执行.Java的Web开发首先最容易