servlet

分析Servlet运行原理

风格不统一 提交于 2020-03-28 00:40:42
原文链接: http://www.yiidian.com/servlet/servlet-how-work.html 接下来我们有必要了解下Servlet的工作原理,这样才能更好地理解Servlet。本文我们将以之前开发过的Servlet程序来讲解Servlet的内部细节。 1 Servlet基本执行过程 Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 。 如果是第一次,则Web容器执行以下任务: 加载Servlet类。 实例化Servlet类。 调用init方法并传入ServletConfig对象 如果不第一次执行,则: 调用service方法,并传入request和response对象 Web容器在需要删除Servlet时(例如,在停止服务器或重新部署项目时)将调用destroy方法。 2 Web容器如何处理Servlet请求 Web容器负责处理请求。让我们看看它如何处理请求。 将用户请求与web.xml文件中的Servlet进行映射。 创建请求和响应对象 创建新的线程,并在该线程上调用Servlet的service方法 在public的service方法内部调用protected的service方法 protected的service方法根据请求的类型调用doGet方法。 doGet方法生成响应并将其传递给客户端。 发送响应后

Servlet过滤器基础及使用场景

£可爱£侵袭症+ 提交于 2020-03-27 10:17:27
Servlet过滤器详解    一、过滤器基础   1.Servlet过滤器是Servlet的一种特殊用法,主要用来完成一些通用的操作。比如编码的过滤,判断用户的登陆状态等等。Servlet过滤器的适用场合:     A.认证过滤     B.登录和审核过滤     C.图像转换过滤     D.数据压缩过滤     E.加密过滤     F.令牌过滤     G.资源访问触发事件过滤   2.Servlet过滤器接口的构成:   所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:   方法 说明   init(FilterConfig cfg) 这是Servlet过滤器的初始化方法,性质等同与servlet的init方法。   doFilter(ServletRequest,ServletResponse,FilterChain) 完成实际的过滤操作,当请求访问过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器   destroy() Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源。,性质等同与servlet的destory()方法。   3.Servlet过滤器的创建步骤:     A

java WEB开发中的过滤器接口Filter

蹲街弑〆低调 提交于 2020-03-27 07:49:57
Filter在Web开发中的应用。 过滤器概述: 过滤器就是在源数据和目的数据之间起过滤作用的中间组件。对Web应用来说,过滤器 是一个驻留在服务器端的Web组件,它可以截取客户端和资源之间的请求与响应信息, 并对这些信息进行过滤。 当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联。如 果有,那么容器将把请求交给过滤器进行处理。在过滤器中,你可以改变请求的内容, 或者重新设置请求的报头信息,然后再将请求发送给目标资源。当目标资源对请求作出 响应时候,容器同样会将响应先转发给过滤器,再过滤器中,你可以对响应的内容进行 转换,然后再将响应发送到客户端。 与过滤器开发相关的接口与类都包含在javax.serlvet和javax.servlet.http包中,主 要有下面的接口和类。 ·javax.servlet.Filter接口 ·javax.servlet.FilterConfig接口 ·javax.servlet.FilterChain接口 ·javax.servlet.ServletRequestWrapper类 ·javax.servlet.ServletResponseWrapper类 ·javax.servlet.http.HttpServletRequestWrapper类 ·javax.servlet.http

用DelegatingFilterProxy配置spring拦截器

筅森魡賤 提交于 2020-03-27 07:46:16
当使用servlet过滤器时,你很需要在你的web.xml中声明它们, 它们可能被servlet容器忽略。在Spring Security,过滤器类也是定义在xml中的spring bean, 因此可以获得Spring的依赖注入机制和生命周期接口。 spring的DelegatingFilterProxy提供了在 web.xml和application context之间的联系。 配置方法: 在web.xml里面添加以下代码: <filter> <filter-name>DelegatingFilterProxy</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetBeanName</param-name> <param-value>securityFilter</param-value> </init-param> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> 然后

Java面试题1

ε祈祈猫儿з 提交于 2020-03-27 07:32:16
1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间

常见的JAVA面试题

≡放荡痞女 提交于 2020-03-27 07:31:15
1.开发中都用到了那些设计模式?用在什么场合? 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 2. 说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean   Message Facade Pattern:实现异步调用   EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问   Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性   Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性   Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性   EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 3.

关于spring MVC的面试题

混江龙づ霸主 提交于 2020-03-27 07:30:26
MVC设计模式 M model 模型 model包括service处理业务逻辑,entity实体类封装数据,dao操作数据库,utils工具类 service层主要用来处理业务逻辑,service层的一些公共处理可以使用spring框架的AOP来完成,比如,日志信息,事物的处理 Spring是一个框架,结合了java中多种优秀设计模式形成的一个企业级解决方案 IOC :控制反转,将对象的创建与属性的赋值交给Spring框架完成,将控制权由程序员交给Spring框架这就是控制反转,IOC主要运用的是Java中的工厂设计模式,将要创建对象的类交给Spring工厂,需要时直接去工厂中取 DI: DI和IOC本质相同说法不同,DI依赖注入,通过属性的set方法或者类的构造方法为属性赋值 AOP:面向切面编程,是对OOP面向对象编程的一种补充,主要运用的是Java中代理设计模式,代理设计模式又分为静态代理和动态代理 静态代理和动态代理的区别:静态代理在代码编译时代理类就产生了,动态代理是在代码运行期才会产生代理类,在运行期JDK底层会动态的生成代理类,并创建代理对象 Spring的事务处理: 事务处理由Spring框架的声明式事务处理完成 Spring框架创建对象的创建次数 : Bean标签的scope属性可以设置对象的创建次数,为singleton时这个对象时单例的只会创建一次

Idea利用SpringMVC创建servlet web工程需要的maven配置

[亡魂溺海] 提交于 2020-03-27 00:12:26
1.如果不需要spring mvc,删除相关dependency即可。 2.Idea->pom.xml <!-- 以下为创建java spring mvc restful风格使用的jar包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2<

servlet上传图片 服务器路径

帅比萌擦擦* 提交于 2020-03-26 12:18:18
1.在servlet中上传图片,上传的文件夹是imge在webroot下,主要代码如下 private void saveImage(HttpServletRequest request, HttpServletResponse response) throws IOException { //保存的图片的名称 fileName =System.currentTimeMillis() + ".jpg"; //获得imge文件夹在tomcat中的决定路径,basePath的值是C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.20\webapps\flexTest\imge String basePath = request.getSession().getServletContext().getRealPath("/imge/"); filePath = basePath; System.out.println("保存图片的地址为:"+filePath); realFilePath = filePath+"\\"+fileName; // 获得一个图片文件流,我这里是从flex中传过来的 BufferedImage bufferedImage = ImageIO.read(request

从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建

自作多情 提交于 2020-03-25 10:51:05
  前面实现RMS系统时,我们让其直接访问底层数据库。后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层。   本章,我们先把hessian服务搭好,并做一个简单的测试,这里以用户注册接口为例。   先简单介绍下,实现hessian接口,只需要在facade模块暴露接口,然后在core模块实现接口,最后在hessain模块配置好接口路由,将其启动即可。 实现步骤 idlewow-facade   新建包com.idlewow.user.model,在此包下添加模型类: package com.idlewow.user.model; import com.idlewow.common.model.BaseModel; import lombok.Data; import java.io.Serializable; @Data public class UserAccount extends BaseModel implements Serializable { private String username; private String password; private String mail; private String phone; private String realName; private