- 浏览: 177125 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (150)
- mysql (8)
- ssh (2)
- 总结 (14)
- 个人心扉 (5)
- 网摘 (14)
- 其它 (2)
- javascript (0)
- ajax (3)
- jquery (0)
- 正则表达式 (2)
- 我们的项目 (1)
- Java代理(静态和动态) (2)
- java (19)
- jsp (5)
- servlet (1)
- uml (0)
- java 细节常识 (1)
- 学习网址哈哈 (2)
- python (5)
- Wearing other`s shoes (6)
- jdbc (1)
- JMeter (18)
- 测试 (9)
- linux操作 (2)
- couchdb (0)
- ruby (20)
- QTP资源地址 (1)
- rspec 范例 (1)
- LR (3)
- spring (1)
- 自动化 (2)
- 无线测试相关 (1)
最新评论
-
1336224635:
...
EJB -
guanzhongdaoke54007:
很好很强大~[color=blue][/color][size ...
ResultSet -
enum:
thank's so mauch.
font color to ...
java生成登录验证码的方法 -
harbey:
文章很好,很受用!
转帖Jmeter中的几个重要测试指标释义 -
xiangguanglei:
非常感谢!这个问题苦恼了我很久。
关于ruby + watir
其实很多的JavaWEB开发并没有用到框架,也能够保证一定的安全性和效率.今天学习了一下过滤器,对用户进行统一的验证和对请求和响应的数据进行替换,屏蔽一些不雅的字句.在进行JavaWEB开发的时候,不用框架,写一些使用过滤器,我个人认为绝对能够满足应用的需求.
过滤器在WEB开发中的应用具体包括:
1 对用户进行统一的认证
2 对用户的访问请求进行记录和审核
3 对用户发送的数据进行过滤或替换
4 转换图像格式
5 对相应内容进行压缩,减少传输量
6 对请求和相应进行加密处理
7 触发资源访问事件
8 对XML的输出应用XSLT
我把第一点对用户进行统一的认证的代码贴出来
package org.sunxin.lesson.jsp.ch20;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LogonFilter implements Filter
{
private static final String LOGON_URI="logon_uri";
private static final String HOME_URI="home_uri";
private String logon_page;
private String home_page;
public void init(FilterConfig filterConfig) throws ServletException
{
//从部署描述符中获取登录页面和首页的URI。
logon_page=filterConfig.getInitParameter(LOGON_URI);
home_page=filterConfig.getInitParameter(HOME_URI);
if(null==logon_page || null==home_page)
throw new ServletException("没有指定登录页面或主页!");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
//将请求对象和响应对象的类型转换为
//HttpServletRequest和HttpServletResponse。
HttpServletRequest httpReq=(HttpServletRequest)request;
HttpServletResponse httpResp=(HttpServletResponse)response;
HttpSession session=httpReq.getSession();
//得到用户的请求URI。
String request_uri=httpReq.getRequestURI();
//得到Web应用程序的上下文路径。
String ctxPath=httpReq.getContextPath();
//去除上下文路径,得到剩余部分的路径。
String uri=request_uri.substring(ctxPath.length());
//判断用户访问的是否是登录页面
if(logon_page.equals(uri))
{
//如果是登录页面,则通过查看是否有附加的请求参数,来判断用户
//是访问登录页面,还是提交登录信息。
String strLogon=httpReq.getParameter("action");
if("logon".equals(strLogon))
{
//如果是提交登录信息,则对用户进行验证。
String name=httpReq.getParameter("name");
String password=httpReq.getParameter("password");
if("zhangsan".equals(name) && "1234".equals(password))
{
//验证通过后,在Session对象中设置isLogon属性为true。
session.setAttribute("isLogon","true");
//在Session对象中保存用户名。
session.setAttribute("user",name);
//从请求对象中取出用户先前访问页面的URI。
String origin_uri=httpReq.getParameter("origin_uri");
//如果origin_uri不为空,则将客户端重定向到用户先前访问的页面,
//否则将客户端重定向到首页。
if(null!=origin_uri && !"".equals(origin_uri))
{
httpResp.sendRedirect(origin_uri);
}
else
{
httpResp.sendRedirect(ctxPath+home_page);
}
return;
}
else
{
//如果验证失败,则从请求对象中获取用户先前访问页面的URI。
//如果该URI存在,则再次将它作为origin_uri属性的值保存
//到请求对象中。
String origin_uri=httpReq.getParameter("origin_uri");
if(null!=origin_uri && !"".equals(origin_uri))
{
httpReq.setAttribute("origin_uri",origin_uri);
}
httpResp.setContentType("text/html;charset=GB2312");
PrintWriter out=httpResp.getWriter();
out.println("<h2>用户名或密码错误,请重新输入。</h2>");
RequestDispatcher rd=httpReq.getRequestDispatcher(logon_page);
rd.include(httpReq,httpResp);
return;
}
}
else
{
//如果用户不是提交登录信息,则调用chain.doFilter()方法,
//调用登录页面。
chain.doFilter(request, response);
return;
}
}
else
{
//如果访问的不是登录页面,则判断用户是否已经登录。
String isLogon=(String)session.getAttribute("isLogon");
if("true".equals(isLogon))
{
chain.doFilter(request, response);
return;
}
else
{
//如果用户没有登录,则将用户的请求URI作为origin_uri属性的值
//保存到请求对象中。
String strQuery=httpReq.getQueryString();
if(null!=strQuery)
{
request_uri=request_uri+"?"+strQuery;
}
httpReq.setAttribute("origin_uri",request_uri);
//将用户请求转发给登录页面。
RequestDispatcher rd=httpReq.getRequestDispatcher(logon_page);
rd.forward(httpReq,httpResp);
return;
}
}
}
public void destroy(){}
}
发表评论
-
File源码理解
2015-01-07 15:30 01.构造函数 最基本的构造方法。 Java代码 ... -
java 定时器
2014-07-30 17:41 0java的Timer以及TimerTask类可以帮助我们实现 ... -
折半查找
2009-03-15 20:57 1027http://www.hiahia.org/datastruc ... -
Tomcat服务器
2009-03-15 10:04 752一、Tomcat背景 自从JSP发布之后,推出了各式各样 ... -
冒泡排序
2009-03-15 09:31 822目的:按要求从大到小或从小到大排序。 基本思路:对尚未排 ... -
字符串反转
2009-03-05 21:03 1338public class Fanzhuan { publ ... -
DOM模型概述
2009-02-27 22:02 1013自从W3C建立了DOM标准 (W3 ... -
常用集合类的区别
2009-02-22 23:49 859线性表,链表,哈希表 ... -
什么是数据库死锁
2009-02-22 20:12 2314什么是数据库死锁 每个使用关系型数据库的程序都可能 ... -
详细分析不同类型数据库的死锁问题
2009-02-22 19:52 952关键字: 详细 类型 数据 ... -
java生成登录验证码的方法
2009-02-22 10:28 2777引用 验证码的作用 ... -
Object.toString()方法
2009-02-22 01:33 1749[size=medium]在java项目的 ... -
Java 中Iterator 、Vector、Array
2009-02-22 01:27 1422线性表,链表,哈希表 ... -
java.io包中的流文件、文件类
2009-02-22 01:25 996[color=white] 视频认证 ... -
java.io的日常用法
2009-02-22 01:23 1471[size=small] <%@ page conte ... -
如何从文件中读取数据
2009-02-22 01:21 996public void readDate(String fi ... -
java.io包
2009-02-22 01:18 808java.io包难吗?2008-04-03 16:58j ... -
彻底明白Java的IO系统
2009-02-22 01:16 673一. Input和Output 1. strea ... -
ResultSet
2009-02-22 01:06 1410结果集(ResultSet)是数据中查询结果返回的一种对象,可 ... -
EJB
2009-02-22 00:48 1244EJB是sun的服务器端 ...
相关推荐
4899过滤器4899过滤器4899过滤器4899过滤器4899过滤器4899过滤器4899过滤器
Cuckoo 过滤器是近似集合成员查询的布隆过滤器替代品。虽然 Bloom 过滤器是众所周知的节省空间的数据结构,可以服务于“如果项目 x 在一个集合中?”之类的查询,但它们不支持删除。它们启用删除的差异(如计算 ...
登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器登陆过滤器
JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器
为了解决在干法除尘煤气化技术中广泛使用的飞灰过滤器陶瓷滤芯断裂问题,以神华煤制油装置飞灰过滤器为研究对象,将采用Fe3Al材料制得的滤芯在过滤器中使用。通过测定合成气及飞灰特性、过滤效率、流量-压差曲线、滤饼...
过滤器
不允许未登陆用户访问的过滤器配置,filter,用户登陆过滤器,session判断用户登陆 不允许未登陆用户访问的过滤器配置
SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...
STM32的CAN过滤器详解
布隆过滤器,大家学过数据结构的应该都清楚,一般的字典树要实现嵌入和查找都内存的消耗非常大,布隆过滤器有BloomFilter,string, BKDRHash, APHash, DJBHash> bf五个参数你要查找的元素个数,查找元素类型,三个...
C++实现的布隆过滤器,其中使用到的bitset也是自己简单实现的一个BitContainer。可以处理千万条到亿条记录的存在性判断。做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否...
关于JAVA过滤器的编写,和一些要求!代码精简,方便使用
struts2配置过滤器 示例代码
拦截器和过滤器的区别,从实现原理到应用场景各处区别
servlet过滤器实例经典过滤器,手把手交你配置过滤器,五大常用过滤器源码,走过路过的同事们注意了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Servlet过滤器的简单使用,实现一个登陆界面。代码和博文几乎一致。
简单过滤器防止恶意攻击 java中的用法
配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的Server.xml文件配置...
使用Java多线程实现管道过滤器,本文档写了六个线程,五个管道,内容很简单,如果想要复杂功能请手动添加。
利用过滤器设置权限利用过滤器设置权限利用过滤器设置权限利用过滤器设置权限利用过滤器设置权限利用过滤器设置权限