servlet

Java Web之Servlet基础

↘锁芯ラ 提交于 2019-12-14 05:50:32
** 一、Servlet概述** 1、什么是Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。 Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势: (1)性能明显更好。 (2) Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。 (3)Servlet 是独立于平台的,因为它们是用 Java 编写的。 (4)服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。 (5)Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。 2、Servlet有什么用 (1)读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的

拦截器和过滤器的区别

醉酒当歌 提交于 2019-12-14 03:30:20
过滤器和拦截器的区别:    ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。   ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。   ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。   ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。   ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。    ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。 拦截器可以获取ioc中的service bean实现业务逻辑, 拦截器可以获取ioc中的service bean实现业务逻辑, 拦截器可以获取ioc中的service bean实现业务逻辑, 触发时机 有个专业词语叫触发时机 1.过滤器和拦截器触发时机不一样:   过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 总结:过滤器包裹住servlet,servlet包裹住拦截器。 如下图所示: 2.过滤器的触发时机是容器后,servlet之前,所以过滤器的doFilter( ServletRequest request, ServletResponse

分布式学习day02

为君一笑 提交于 2019-12-13 20:25:29
今天学习分布式的项目搭建,第二天使用 intelliJ IDEA 渐渐适应了操作 搭建分布式项目,我把他分为一个父工程和14个子工程 如图是各项目的关系依赖: idea包结构: 搭建好我们所需要的工程之后,我们就需要配置XML文件和POM.xml文件 父工程的POM文件 <!-- 集中定义依赖版本号 --> <properties> <junit.version>4.12</junit.version> <spring.version>4.2.4.RELEASE</spring.version> <pagehelper.version>4.0.0</pagehelper.version> <servlet-api.version>2.5</servlet-api.version> <dubbo.version>2.8.4</dubbo.version> <zookeeper.version>3.4.7</zookeeper.version> <zkclient.version>0.1</zkclient.version> <mybatis.version>3.2.8</mybatis.version> <mybatis.spring.version>1.2.2</mybatis.spring.version> <mybatis.paginator.version>1.2.15<

Java开发之@PostConstruct和@PreConstruct注解

会有一股神秘感。 提交于 2019-12-13 13:03:01
从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct。这两个注解被用来修饰一个非静态的void()方法.而且这个方法不能有抛出异常声明。 使用方式,例如: @PostConstruct //方式1 public void someMethod(){ ... } public @PostConstruct void someMethod(){ //方式2 ... } 1.@PostConstruct说明 被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。 2.@PreConstruct说明 被@PreConstruct修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreConstruct修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。(详见下面的程序实践) 来源: CSDN 作者: 十年如一日@ 链接: https://blog.csdn.net/qq_37924509/article

servlet

别来无恙 提交于 2019-12-13 07:57:03
Servlet_生命周期:首先加载servlet的class,实例化servlet,然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法,最后是我的还有容器关闭时候调用destroy 销毁方法。 1.被创建:执行init方法,只执行一次 1.1Servlet什么时候被创建? –默认情况下,第一次被访问时,Servlet被创建,然后执行init方法; –可以配置执行Servlet的创建时机; 2.提供服务:执行service方法,执行多次 3.被销毁:当Servlet服务器正常关闭时,执行destroy方法,只执行一次 复制代码 1 //servlet生命周期,的三个方法,1.被创建,执行且只执行一次init方法,2.提供服务,执行service方法,执行多次 3.被销毁,当Servlet服务器正常关闭时,执行destroy方法,只执行一次。 2 3 @Override 4 public void init() throws ServletException { 5 // TODO Auto-generated method stub 6 super.init(); 7 } 8 9 @Override 10 protected void service(HttpServletRequest req,

基于servlet+filter+反射模拟实现天猫首页的后端

江枫思渺然 提交于 2019-12-13 04:40:53
前言:为了深入web原理,本项目没有使用框架,主要描述了从请求到页面展现的思路,详情请见文末的具体项目 一、为什么要用filter?直接servlet实现不就行了 因为天猫这样的项目需要很多servlet处理具体种类的业务,比如后台的管理页面有增删改查,订单页面也有增删改查,每一个操作都需要写一个servlet。使用filter+反射可以解决这个冗余的问题。 二、从浏览器输入路径到filter 举个例子,我们本地天猫项目的首页地址为http://127.0.0.1:8080/tmall/forehome,tmall此处是项目名,我们在web.xml设置filter拦截所有请求,url-pattern设置的/*,所有请求都会映射到tmall.filter.ForeServletFilter这个Java类。 < filter > < filter - name > ForeServletFilter < / filter - name > < filter - class > tmall . filter . ForeServletFilter < / filter - class > < / filter > < filter - mapping > < filter - name > ForeServletFilter < / filter - name > < url -

Java Servlet

我是研究僧i 提交于 2019-12-12 21:08:15
Servlet : 在 Javaweb 中 非常的 重要, 在 整个 的 Javaweb 的知识体系中 都是 围绕 Servlet 来转的. (非常重要. 重点掌握.). ## Servlet : server applet * 概念: 运行在 服务端的 小程序. * Servlet 就是一个 接口, 定义了 Java 类 被 浏览器 访问到(被 tomcat 识别) 的 规则, * 将来 我们 自定义一个类, 实现 Servelet 接口, 复写方法. (tomcat 就可以识别 到, 浏览器 就可以访问到, 这个类 就 称为 Servelet ) 只要 我 这个 Java 类 实现了 Servlet 这个 接口(规则), 就可以 被 tomcat 识别. 动态资源: 每个 用户 访问 同一个 资源, 得到的 反馈 可能不一样, 怎么 不一样呢? 里面 加了 逻辑性的 代码, 例如: 判断 如果 是张三 这个 用户 访问, 回馈 什么信息, 如果是 李四 这个 用户 访问 , 回馈什么 什么信息, 这就造成了 每个 用户 访问的 资源 不一样. 而 这个 逻辑性的 代码 需要用 Java 代码 编写. 规则 一般在 Java 表示形式 为 接口, 在 tomcat 中 所能识别的 规则 就是 servelet. * 所以 我们 定义的 Java 类 要去 实现 servelet

JSP + Session Cookie详解

左心房为你撑大大i 提交于 2019-12-12 18:14:31
篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页面了,但是使用Servlet开发动态页面,存在种种问题,来看下面的例子: 使用Servlet来开发百度首页: 分析上面的案例不难发现以下问题: Html与Java代码混合在一起,维护困难 每一行都是一个println语句,效率低下 编译器无法检测问题,调试麻烦 JSP概念 全称JavaServerPage服务器页面,为了使开发动态页面更加简单而出现,本质上也是一个Servlet 动态与静态 一个页面如果不会随着任何条件(时间,用户信息...)改变而发生变化,那它就是静态的,静态页面通常只能提供最基本的信息展示 动态页面是会随着访问时的时间,地点,提交的数据不同而展示不同的内容,它就是动态页面,例如可以根据登录用户的不同而展示的不同的购物信息,通常页面的数据来自于数据库 特点: JSP可将原本都在Servlet中的java代码与HTML分离,降低耦合,可维护性好 可编写原生HTML,且编译器会进行语法检查,开发效率更高 JSP本质就是Servlet,被执行前会被先转译为java文件 注意 :JSP文件需放在web(webContent)资源目录下,后缀为.jsp jsp执行过程 示例:

Servlet学习笔记——第四天

心不动则不痛 提交于 2019-12-12 18:07:16
Servlet学习打卡 Servlet学习笔记---第四天 Servlet笔记 第四天 一. 复习 二、用户信息追踪 1. 概念: 2. 手段 1) cookie : 在客户端浏览器中保存用户状态数据 2)HttpSession:在服务器端保存用户状态数据 三. Cookie 1. 概念 1)服务器写到浏览器上的一小段String,由name和value两部分组成(不支持中文) 2)当浏览器访问服务器时,服务器可以读取浏览器上曾经自己写过的cookie 3)cookie有存活时间(可以设置) 2. 操作cookie的API 1)创建cookie对象 --- Cookie c = new Cookie( name , value ); 2)写cookie --- response.addCookie(c); 3)读cookie --- request.getCookies() --> Cookie[] 如果没有读到,返回值为null 4)设置存活时间 --- cookie.setMaxAge( xxx ); 5)设置cookie的访问路经 --- cookie.setPath("....."); 四. HttpSession 会话:client与服务器端的一次完整的通信过程(涵盖多次请求) 1. 使用【重点】 1)获取 --- HttpSession session =

Java Servlet工作原理问答

坚强是说给别人听的谎言 提交于 2019-12-12 12:16:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 导读 本文来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化、共享变量和多线程处理。 问题:Servlet是如何工作的?Servlet 如何实例化、共享变量、并进行多线程处理? 假设我有一个运行了大量 Servlet 的 web 服务器。通过 Servlet 之间传输信息得到 Servlet 上下文,并设置 session 变量。 现在,如果有两名或更多使用者向这个服务发送请求,接下来 session 变量会发生什么变化?究竟是所有用户都是用共同的变量?还是不同的用户使用的变量都不一样?如果是后者,服务器如何区分不同用户? 另一个相似的问题,如果有 *n* 名用户访问一个特定的 Servlet,那么该 Servlet 是仅在第一个用户首次访问的时候实例化,还是分别为每个用户实例化? 回答(BalusC): ServletContext 当 Servlet 容器(比如 Apache Tomcat )启动后,会部署和加载所有 web 应用。当web 应用被加载,Servlet 容器会创建一次 ServletContext ,然后将其保存在服务器的内存中。web 应用的web.xml 被解析,找到其中所有 servlet、filter 和 Listener 或