防止用户直接访问url
这是个过滤器的内容,
[java]
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//获取父url--如果不是直接输入的话就是先前的访问过来的页面,要是用户输入了,这个父url是不存在的
if("".equals(conString) || null==conString){ //判断如果上一个目录为空的话,说明是用户直接输入url访问的
String servletPath = req.getServletPath();//当前请求url,去掉几个可以直接访问的页面
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){ //跳过index.jsp和登陆Login.jsp
chain.doFilter(request, response);
} else {
resp.sendRedirect("/ejuornal/index.jsp");//跳回首页
}
} else {
chain.doFilter(request, response);
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//获取父url--如果不是直接输入的话就是先前的访问过来的页面,要是用户输入了,这个父url是不存在的
if("".equals(conString) || null==conString){ //判断如果上一个目录为空的话,说明是用户直接输入url访问的
String servletPath = req.getServletPath();//当前请求url,去掉几个可以直接访问的页面
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){ //跳过index.jsp和登陆Login.jsp
chain.doFilter(request, response);
} else {
resp.sendRedirect("/ejuornal/index.jsp");//跳回首页
}
} else {
chain.doFilter(request, response);
}
}下面是过滤器的配置文件
[html]
< ?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>FilterPages</filter-name>
<filter-class>com.ejuornal.filter.FilterPages</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterPages</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
< /web-app>
<?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>FilterPages</filter-name>
<filter-class>com.ejuornal.filter.FilterPages</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterPages</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
< /web-app>这时候再去直接输入url时就会在跳回首页。
但是有两个需要注意的问题,过滤器中的chain.doFilter(request, response);的使用------------错误如下:
[html]
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//获取父url
if("".equals(conString) || null==conString){
String servletPath = req.getServletPath();//当前请求url
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){
chain.doFilter(request, response);
}else {
resp.sendRedirect("/ejuornal/index.jsp");
}
}
<SPAN style="COLOR: #ff0000">chain.doFilter(request, response);</SPAN>
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//获取父url
if("".equals(conString) || null==conString){
String servletPath = req.getServletPath();//当前请求url
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){
chain.doFilter(request, response);
}else {
resp.sendRedirect("/ejuornal/index.jsp");
}
}
chain.doFilter(request, response);
}
如果这样放的话会如下图的效果:
有两个页面重合在一起,原因是:有两个chain.doFilter(request, response);的执行导致的。
也就是说咩执行一次chain.doFilter(request, response);就是一个请求的执行。
防止用户直接访问url相关推荐
- 微信公众号开发获取微信用户openid及访问url身份认证方式
技术要点: 1.如何获取业务系统中用户身份标识. OPENID是微信公众号中用户的唯一标识,通过OPENID与业务系统中USRID建立一对一的对应关系,这样获取到了OPENID也就能知道所对应的USR ...
- linux定时任务执行url,科技常识:linux定时任务访问url实例
今天小编跟大家讲解下有关linux定时任务访问url实例 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关linux定时任务访问url实例 的相关资料,希望小伙伴会喜欢也能够帮助大家. 这次 ...
- 易宝典文章——怎样配置TMG能够使外部用户成功访问Outlook Anywhere?
易宝典:http://support.microsoft.com/kb/2580470/zh-cn 在企业中通常部署Exchange Server 2010服务器都是使用内部网络环境进行的.用户在企业 ...
- 新手必看:访问url到加载全过程详解(看完不会我吃shi)
新手必看:访问url到加载全过程详解(看完不会我吃shi) 1.放在前面:新手必须知道的那些概念 1.1 什么是IP.域名.主机名.url.服务器 1.2 http & https 1.3 O ...
- Citrix NetScaler Gateway:使用Smart Access实现根据源IP控制用户可访问的交付组
一.导语 NetScaler Smart Access是NetSacler Gateway的一个高级功能.如果用户是通过NetScaler(ADC)访问应用或桌面,该功能可以限制用户的应用或者桌面的可 ...
- Python——通过用户cookies访问微博首页
通过用户cookies访问微博首页 1.登录微博 self.driver.delete_all_cookies() # 删除cookies self.driver.get(self.url)time. ...
- 如何判断用户是否访问过某个网址
如何判断用户是否访问过某个网址 我们经常有这样的需求:想知道用户之前有没有访问过某个网址.有没有什么方法或技术能实现这一点呢? 初步探索 注意到,在大部分浏览器默认设置里,用户访问过的链接和没访问过的 ...
- 如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?
点击上方"蓝字", 右上角选择"设为星标" 周一至周五上午11点45!精品技术文章准时送上! 本文转载自公众号:石杉的架构笔记 目录 (1)为什么要用缓存集群 ...
- 基于HttpClient的HttpUtils(后台访问URL)
最近做在线支付时遇到需要以后台方式访问URL并获取其返回的数据的问题,在网络上g了一把,发现在常用的还是Apache的HttpClient.因为以经常要用到的原故,因此我对其进行了一些简单的封装,在此 ...
- vsftpd类似wu-ftpd分类(Class)的配置-给不同网段的人以不同的上传权限-对虚拟用户进行访问IP限制...
主要是用于实现:"给不同网段的人以不同的上传权限"和"对虚拟用户进行访问IP限制"这两个功能.实现方法就是利用tcp_warppers的setenv LOAD_ ...
最新文章
- 精度 召回率 F score
- CQRS, Task Based UIs, Event Sourcing agh!
- jq中ajax返回数据的json_encode,jQuery AJAX使用JSON返回对PHP脚本的调用
- php存储session更改,php如何修改SESSION的生存存储时间的实例代码_php实例
- 2021河南高考成绩查询郸城一高,郸城一高在河南有多牛 2021年高考成绩
- 用URLGather来管理和保存你的页面
- 为了梦想开始历练之清除浮动篇
- java druid sqlite_springboot整合druid抛出dbType not support : sqlite异常
- vb.net怎么调用fastreport报表_财务分析-企业财务管理报表模板制作实现智能化的财务运营...
- css3宽度变大动画_动画演示流量计的工作原理
- Spring Boot 学习(一) 快速搭建SpringBoot 项目
- 联名款Redmi K40游戏增强版今日揭晓:神秘女主粉色头发吸睛
- RHEL 5 rpm包安装bind
- (一)1-4Python运算符
- C/C++[codeup 1397,2020]查找
- 数字图像处理技术在智能交通中的应用
- Chrome浏览器保存整个网页为图片的方法
- 前端学习之路Electron——全局注册、注销快捷键
- 数据库——如何求出候选码
- 基于视词袋模型的场景识别