Apache Struts

servlet的监听器、过滤器、拦截器的区别

ⅰ亾dé卋堺 提交于 2020-05-02 14:35:54
web.xml 的加载顺序是:context- param -> listener -> filter -> servlet 1.监听器(listener):在request、session、application三个对象创建消亡或者往其中增/删/改属性时自动执行指定代码的功能组件。 生命周期:随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。 作用:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。 2.过滤器(filter):拦截请求,filter能够在一个请求到达控制层之前预处理用户请求,也可以在离开控制层时处理http响应,进行一些设置以及逻辑判断,然后再传入servlet或者struts的 action进行业务逻辑,基于函数回调。 生命周期:它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁。 作用:1、对请求或响应(Request、Response)统一设置统一编码,简化操作; 2、进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。 3、过滤掉非法url 3.拦截器(interceptor):拦截器是在面向切面编程中应用的,基于JAVA的反射机制,在一个业务逻辑(某个方法)前、后调用另一个方法。 servlet

回炉重铸系列之javaEE基础

核能气质少年 提交于 2020-05-02 14:35:10
这篇文章主要介绍 servlet filter listener interceptor 之 知识点。博文主要从 概念,生命周期,使命介绍其区别。详情如下: 概念 生命周期 使命 servlet servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新装入。(1). 装入:启动服务器时加载Servlet的实例(如果你设置<load-on-startup>的值是一个大于0的数,则tomcat在启动时就会创建servlet,如果没有设置这个属性,则是第一次访问时创建); (2). 初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init方法负责执行完成;(init方法只执行一次) (3). 调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法; (4). 销毁:停止服务器时调用destroy()方法,销毁实例。 接受请求,相应请求 filter filter是一个可以复用的代码片段。它不能产生一个请求或者响应

servlet,listener,filter,interceptor的关系

我与影子孤独终老i 提交于 2020-05-02 13:12:45
1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为: 1) 客户端发送请求至服务器端; 2) 服务器将请求信息发送至 Servlet; 3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求; 4) 服务器将响应返回给客户端。 在 Web 应用程序中,一个 Servlet 在一个时刻可能被多个用户同时访问。这时 Web 容器将为每个用户创建一个线程来执行 Servlet。如果 Servlet 不涉及共享资源的问题,不必关心多线程问题。但如果 Servlet 需要共享资源,需要保证 Servlet 是线程安全的。 最新版本3.1, 为了简化开发流程,Servlet 3.0 引入了注解(annotation),这使得 web 部署描述符 web.xml 不再是必须的选择。 2、filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求

Java 打怪升级路线图,大佬是这样炼成的!一定要收藏

会有一股神秘感。 提交于 2020-05-01 13:36:06
技术日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的。 网上的资料多如牛毛,但是很多时候我们缺的不是一个资料,而是一个学习规划! 就是说,做 Java 开发,我们应该从哪里开始学?应该学习哪些东西?应该按照什么样的顺序来学? 松哥大二刚开始自学 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,自己一个人摸索了很长时间,后来才逐步建立起自己的知识体系。 所以每次有小伙伴问我 Java 的学习规划时,我都能理解大家所处的困境。 Java 开发涉及到的领域非常多,对于开发者而言要掌握的东西也非常多,初入行的小伙伴甚至觉得这些要掌握的东西非常杂乱,其实不然!所有要学习的东西都是有内在关联的。 松哥今天就来和大家捋一捋 Java 学习路线图,一起来看看都有哪些东西需要掌握,以及要按照什么样的顺序来学习。 1. 整体规划 Java 企业级开发涉及到的技能点实际上非常多,我将其大致归为以下五类(文末可以获取思维导图): 在这个技术栈的基础上,你可以继续选择走全栈道路或者走大数据方向。 有的小伙伴可能会纠结于要全面还是要精通某一方面,其实这个无所谓好坏,关键是要看你自己。你是想去大厂做一个某一领域的技术专家,还是想自己独当一面,自己喜欢的才是最好的。 话说回来,即使你想钻研某一方面,也不是说这些东西就不用学了,即使精通某一方面,也必然是先广泛涉猎

Struts2中Annotation注解遇到的问题及解决方案

时光怂恿深爱的人放手 提交于 2020-04-30 11:32:05
报错:there is no action mapped for namespace / and action name ......在Struts2中用Annotation注解来代替Struts.xml配置时,出现了上述这个错误,这个问题调了好几个小时,最后才试出来。网上的解决方案都是认为web.xml配置错误,但这么简单的配置一般很少出错,最后得出了下面一个解决方案。 解决方案:将处理类的包名改为xxx.action即可解决,包名一定要是.action。 来源: oschina 链接: https://my.oschina.net/u/4312354/blog/4258907

JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)

送分小仙女□ 提交于 2020-04-29 12:00:35
1 学习 计划 1 、项目概述   项目背景介绍 2 、搭建项目开发环境   数据库环境   maven 项目搭建   svn 环境搭建 3 、主页设计( jQuery EasyUI )   layout 页面布局   accordion 折叠面板   tabs 选项卡面板 2 项目概述 2.1 项目背景介绍 本项目属于物流公司的二期改造项目。物流公司存在一个一期项目(基于 C/S 架构),用 C++ 开发的。 项目甲方:物流公司(软件的使用方) 项目乙方:软件公司(软件的开发方) 软件的开发周期 13 个月,编码阶段 4 个月时间,开发团队人数 20 多个人。 BOS : Bussiness Operating System 业务操作系统 2.2 常见的软件类型 OA: 办公自动化系统 CRM: 客户关系管理系统 ERP: 综合的企业解决方案(平台) 2.3 软件的开发流程(瀑布模型) 1 、需求调研分析 ---- 需求规格说明书 2 、设计阶段(概要设计、详细设计) ---- 页面原型、数据库设计、设计文档 3 、编码阶段 4 、测试阶段 5 、上线和运维 3 搭建项目开发环境 3.1 数据库环境 第一步:创建一个数据库 第二步:创建一个数据库用户 第三步:为新用户授权 第四步:使用新用户登录 MySQL 3.2 maven 项目环境 使用 maven 是

过滤器filter:拦截器Interceptor:监听器listener 小结

旧时模样 提交于 2020-04-28 10:36:42
过滤器Filter: 类似于AOP面向切面编程;提供了一种声明式的服务,有可插拔能力;Filter对Request,Response请求进行了拦截,在初始化的时候被实例化一次,之后不会再被实例化 实例: 比如:所有请求的页面设置统一的字符集: 自定义拦截器类,继承servlet包下的Filter接口 当有请求是url带有.jsp结尾,调用filter-name=CharseEncodingFilter的拦截器类 web.xml下配置拦截信息 1、filter拦截器是谁fiter-name; 路径是啥 filter-mapping 2、fiter-mapping中的url-pattern要对谁拦截 <filter> <filter-name>CharseEncodingFilter</filter-name> <filter-class>filter.CharseEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharseEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> import javax.servlet.*; import java.io.IOException; /** *

转载 java开发基础 https://blog.csdn.net/jiangjiewudi/article/details/9565749

流过昼夜 提交于 2020-04-27 16:44:44
Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1、掌握项目开发的基本步骤 2、具备极强的面向对象的分析与设计技巧 3、掌握用例驱动、以架构为核心的主流开发方法 没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法! 关于基础知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。 JavaSE ----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while ----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this

Java 中创建对象的 5 种方式!

女生的网名这么多〃 提交于 2020-04-24 19:44:10
来源:codeceo codeceo.com/article/5-ways-java-create-object.html 作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象。然而这里有很多创建对象的方法,我们会在这篇文章中学到。 Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码。 如果你运行了末尾的的程序,你会发现方法1,2,3用构造函数创建对象,方法4,5没有调用构造函数。 1、使用new关键字 这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。 Employee emp1 = new Employee(); 0: new #19 // class org/programming/mitra/exercises/Employee 3: dup 4: invokespecial #21 // Method org/programming/mitra/exercises/Employee."":()V 2、使用Class类的newInstance方法 我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。 我们可以通过下面方式调用newInstance方法创建对象: Employee emp2 =

SpringCloud上传文件夹的三种解决方案

邮差的信 提交于 2020-04-23 21:48:45
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = null; String fileAddre = "/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取系统当前路径 File file1 = new File(filePath);//添加了自动创建目录的功能 ((File)file1).mkdir(); newfileName = System.currentTimeMillis() + file.getFileName().substring( file.getFileName().lastIndexOf('.')); ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + newfileName); newpathname = filePath + "/" +