JSP网站开发基础总结《十》

news/2024/5/20 1:32:59/文章来源:https://blog.csdn.net/liudanyang_21/article/details/107635318

  经过上一篇的介绍相信大家对JSP提供的过滤器一定有了一个概念,本篇我们就一起再来研究一下关于创建多个过滤器时,如果有两个以上过滤器的过滤规则相同,那么这些过滤器的执行顺序如何呢?答案是根据我们在web.xml中声明的先后顺序进行执行,也就是先声明的先执行,后声明的后执行。文字的描述大家可能还是不明白,下面就让我们用程序验证一下。

 1、新建Filter类:

  因为我们需要完成对于多个过滤器的,执行时的先后顺序判断,所以我们至少需要新建两个Filter类。

  a、firstFilter.java:

public class firstFilter implements Filter {public void destroy() {System.out.println("Destory-----first");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain arg) throws IOException, ServletException {System.out.println("start-----first");arg.doFilter(request, response);//没有该方法,页面将一直处于加载状态。System.out.println("end-----first");}public void init(FilterConfig arg0) throws ServletException {System.out.println("Init-----first");}}

  b、secondFilter.java:

public class secondFilter implements Filter {public void destroy() {System.out.println("Destroy----second");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("start----second");chain.doFilter(request, response);System.out.println("end----second");}public void init(FilterConfig filterConfig) throws ServletException {System.out.println("Init----second");}}

 2、web.xml声明:

  这里需要注意的时,要达到上面的效果,我们需要在声明过滤规则中,保证两个过滤器匹配的请求一致。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 过滤器对象firstFilter声明 --><filter><filter-name>firstFilter</filter-name><!-- 过滤器名 --><filter-class>cn.imcook.filter.firstFilter</filter-class><!-- 指定我们新建的过滤器对象的地址 --></filter><!-- 过滤器对象secondFilter声明 --><filter><filter-name>secondFilter</filter-name><filter-class>cn.imcook.filter.secondFilter</filter-class></filter><!-- 过滤器firstFilter的规则声明  --><filter-mapping><filter-name>firstFilter</filter-name><!-- 指定规则对于的过滤器对象 --><url-pattern>/index.jsp</url-pattern><dispatcher>REQUEST</dispatcher><!-- 该处有四个值可选,默认是REQUEST --></filter-mapping><!-- 过滤器secondFilter的规则声明  --><filter-mapping><filter-name>secondFilter</filter-name><url-pattern>/index.jsp</url-pattern><dispatcher>REQUEST</dispatcher></filter-mapping><!-- 错误处理 --><error-page><error-code>404</error-code><location>/error404.jsp</location></error-page><error-page><error-code>500</error-code><location>/error500.jsp</location></error-page><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><login-config><auth-method>BASIC</auth-method></login-config>
</web-app>

 3、启动项目测试:

  在浏览器地址栏输入:http://localhost:8080/HelloWord/index.jsp,观察myeclipse控制台的输出:

  192112172828369.jpg

  到这里我想大家对于多个Filter执行顺序的问题,应该已经明白其中的道理了吧。

 4、404、500错误过滤:

  大家在上面的web.xml中一定看到了,两个关于404、500错误的过滤监听声明,这是如何实现的呢?我们只需要在我们的web.xml中对这两个错误进行一下声明,系统就会开始监听,一旦出现错误,将会跳转到我们实现设置好的错误提醒页面。

  a、error404.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>404</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><center><h1>您访问的地址不存在。<a href="index.jsp" style="color: red">返回首页</a></h1></center></body>
</html>

  b、error500.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>500</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><center><h1>页面出错了,程序猿正在努力修复中...<a href="index.jsp" style="color: red">返回首页</a></h1></center></body>
</html>

  c、用于测试500错误的Test.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>测试</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my one web!"></head><body><center><h1>500错误验证页面</h1><%=2/0 %><!-- 0不能作为被除数 --></center></body>
</html>

 5、效果:

  a、当我们在地址栏输入一个不存在页面时:

  192122509388955.jpg

  b、当我们在地址栏输入http://localhost:8080/HelloWord/Test.jsp:

  192123473132412.jpg

  到这里对于JSP提供Filter类的构建就为大家总结完毕,对于这些功能具体使用,还需大家自己好好摸索。如有疑问,欢迎留言讨论。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_829523.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP网站开发基础总结《八》

JSP的学习总结到本篇已经八篇了&#xff0c;内容比较多&#xff0c;但都是实战&#xff0c;本篇最后为大家介绍一个小效果&#xff1a;百度分页。就是当我们遍历的数据对象较多时&#xff0c;这时我们就会看到了这个效果了&#xff0c;那他是如何实现的呢&#xff1f;下面我们就…

jquery mouseover与mouseenter,mouserout与mouseleave的区别

mouseover与mouseenter不论鼠标指针穿过被选元素或其子元素&#xff0c;都会触发mouseover事件只有在鼠标指针穿过被选元素时&#xff0c;才会触发mouseenter事件 <!doctype html> <html> <head> <meta charset"utf-8"> <script type&quo…

电商网站中价格的精确计算(使用BigDecimal进行精确运算(实现加减乘除运算))...

使用BigDecimal的String的构造器。商业计算中&#xff0c;使用bigdecimal的String构造器&#xff0c;一定要用。 重要的事情说三遍&#xff1a; 商业计算中&#xff0c;使用bigdecimal的String构造器&#xff01; 商业计算中&#xff0c;使用bigdecimal的String构造器&#xff…

利用Serverless架构下函数计算实现网站文件处理的最佳实践...

本文介绍如何通过函数计算实现网站文件管理的最佳实践&#xff0c;包括以下几个功能&#xff1a;•特定图片更新后&#xff0c;自动更新这些特定文件之前的压缩包&#xff08;compress函数&#xff09;•自动获取压缩包文件的md5值&#xff08;get-object-md5函数&#xff09;•…

sqlmap对php登录页面,SQLMAP/Metasploit介绍及PHP网站渗透

查找PHP网页&#xff1a; inurl:php?id查询jsp网页&#xff1a;inurl:asp?id判断网页的动态还是静态www.baidu.com------>www.baidu.com/index.html-----没有报错就是静态页面www.baidu.com/plasp?id86------>www.baidu.com/plasp?id86 and 11--测试网页是否有注入…

php新闻添加图片,开发企业网站12 -- 新闻添加(带图片上传)

require_once(init.php);if(!empty($_POST)){//这里接收news_add.php传过来的数据$data $_POST;//这个值有默认值&#xff0c;所以判断一下//传值就使用传过来的值&#xff0c;空值就使用默认值0$data[sort] !empty($_POST[sort])?intval($_POST[sort]):0;//修改功能&#x…

web浏览器与网站服务器,web服务器和web浏览器

web服务器和web浏览器 内容精选换一换当您需要实现网站HTTPS化&#xff0c;并监控HTTPS业务流量&#xff0c;识别并阻断SQL注入、CC攻击等攻击&#xff0c;保护Web服务安全稳定时&#xff0c;本文档指导您如何实现网站HTTPS化并对HTTPS业务流量进行监控。假设您有一个网站&…

匿名用户访问用发布站点模板创建网站的列表项时要求登录的问题解决

因为发布站点中的一个Feature被打开了&#xff0c;造成将列表FormPage的查看给Lock了&#xff0c;所以需要登录&#xff0c;将其关闭就OK了。哈哈。英文KB&#xff1a;Users are unexpectedly prompted to enter their credentials when they access a list in a Windows Share…

如何部署互动百科的开源wiki建站系统

最近想在技术部门内部搭建一个知识共享平台&#xff0c;经过一番了解和相关资料的查阅&#xff0c;选定了互动百科的开源wiki系统。选定互动wiki&#xff08;下文简称hdwiki)&#xff0c;主要的原因有如下几个方面&#xff1a; 1.中文版。这样对于我个人或者团队内部成员而言&a…

大型高性能网站的十项规则,互联网营销

在我们公司ChinaNetCloud&#xff0c;见过多种不同类型的网站和系统&#xff0c;有好也有差。其中有些系统拥有良好的服务器/网络架构&#xff0c;并且进行了合理的调整和监控&#xff1b;然而一般的系统都会有安全和性能上的问题&#xff0c;不能良好运行&#xff0c;也无法变…

Jupiter:微软的下一代统一开发平台?,徐汇区网站设计

Silverlight真的完了么&#xff1f;未来在Windows 8和Windows phone中抉择吗&#xff1f;这是一个萦绕在Windows开发者脑海的问题&#xff0c;曾经Silverlight是解决开发者们跨平台跨浏览器兼容性的钥匙&#xff0c;后来又有了Javascript和HTML5来创建Windows 8上面的应用&…

Java.net网站新改版上线

Java.net 网站在今年2月25日时关闭进行升级&#xff0c;现在已经升级完毕&#xff08;不知道什么升级需要这么长时间&#xff09;。新版本更新编辑网页、博客、wikis和改组后的论坛。原文链接&#xff1a;http://www.oschina.net/news/15947/javanet-gets-some-new-jolt转载于:…

16个精美的 HTML5 作品集网站设计案例

今天分享的作品集网站有些特别&#xff0c;因为他们都是使用 HTML5 制作的。对于设计师来说&#xff0c;为了吸引注意力&#xff0c;作品集必须展示出你的能力&#xff0c;这有点像制作简历&#xff0c;要让人们看到你所擅长的&#xff0c;突出的部分&#xff0c;这是一次推销自…

转载——网站重构的8点建议

1.用局部变量替换多次使用的对象 比如我们在一段代码内&#xff0c;多次使用document、window这样的对象&#xff0c;我们可以用局部变量替换他们。 var d document,w window; 原理&#xff1a;访问直接量和局部变量的速度快&#xff0c;相反&#xff0c;访问数组元素和对象成…

ASP.NET 2.0中轻松实现网站换肤

一、简介&#xff1a;利用Themes我们可以很容易的更改控件、页面的风格&#xff0c;而不需要修改我们的代码和页面文件。Themes文件被单独的放在1个App_Themes文件夹下面&#xff0c;与你的程序是完全分开的。二、怎么使用Themes和Skins&#xff1a;  先看个非常简单的实例&a…

Python 使用 scrapy shell 网站 进入命令窗口时候报错 AttributeError: module ‘lib‘ has no attribute

Python 使用 scrapy shell 网站 进入命令窗口时候报错 问题描述——AttributeError: module ‘lib’ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK’‘action’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 问题原因 错误分析&#xff1a;主要原因是…

想要好看的壁纸图片,用这个网站一键解决,不用爬虫也能实现爬虫效果,一键爬取图片网站所有的图片

想要好看的壁纸图片&#xff0c;用这个网站一键解决&#xff0c;不用爬虫也能实现爬虫效果&#xff0c;一键爬取图片网站所有的图片 网站的地址 https://extract.pics/演示例子&#xff1a; 图片网站 https://www.sohu.com/a/582693827_121123945演示&#xff1a;

视频工作者应该知道的几个网站

2019独角兽企业重金招聘Python工程师标准>>> 视频质量评价&#xff1a; MSU Video Quality Measurement Tool&#xff1a; MSU Video Quality Measurement Tool&#xff08;msu vqmt&#xff09;是一种客观视频质量评价程序。它提供了多种全参考视频质量评价方法&am…

在网站内建立地图(百度地图)

有时候网站会标注公司的地理位置&#xff0c;为了更直观的体现地理位置&#xff0c;一般会在网站内部嵌入地图。如下图例子&#xff1a; 完整html代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org…

利用Metaweblog技术的API接口同步到多个博客网站(详细)

很早就有这个想法&#xff1a;自己有时候会用到多个博客&#xff0c;有些博客在一个网站上写完之后&#xff0c;要同步到其他博客网站&#xff0c;自己只能复制粘贴&#xff0c;感觉特别没意思&#xff0c;复制粘贴的麻木了。一直在想有哪些技术能实现一次写博&#xff0c;多站…