servlet

servlet映射,线程安全,servletconfig对象,servletcontext对象

▼魔方 西西 提交于 2019-12-09 23:21:18
Servlet映射细节: 映射代码体现: <servlet> <servlet-name>TextServlet1</servlet-name> <servlet-class>text.Servlet.TextServlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>TextServlet1</servlet-name> <url-pattern>/servlet/TextServlet1</url-pattern> </servlet-mapping> 映射可以使用通配符: 1 以*开头,以扩展名结尾:*.do 2 以/开头,/adc/* 匹配优先级:绝对优先级》/》* servlet中的线程安全问题: 当存在全局变量时,就会出现线程安全问题, 如果要使用全局变量,就要使用同步,代码运行的效率低下。 ServletConfig 对象用于获取配置参数: 配置参数代码: <servlet> <servlet-name>TextServlet1</servlet-name> <servlet-class>text.Servlet.TextServlet1</servlet-class> <init-param> <param-value>encoding</param-value> <param-value

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、Servle

南楼画角 提交于 2019-12-09 22:54:36
【声明】 欢迎转载,但请保留文章原始出处→_→ 文章来源: http://www.cnblogs.com/smyhvae/p/4140877.html 联系方式:smyhvae@163.com 【正文】 一、ServletConfig :代表当前Servlet在web.xml中的配置信息( 用的不多 ) String getServletName() -- 获取当前Servlet在web.xml中配置的名字 String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值 Enumeration getInitParameterNames() -- 获取当前Servlet所有初始化参数的名字组成的枚举 ServletContext getServletContext() -- 获取代表当前web应用的ServletContext对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并 在调用servlet的init方法时,将ServletConfig对象传递给servlet 。进而

Tomcat Servlet加载窥探

蓝咒 提交于 2019-12-09 22:23:32
顾名思义,Wrapper是对Servlet的包装,它持有一个对应Servlet的实例池。 /** * Stack containing the STM instances. */ protected Stack<Servlet> instancePool = null; 在Wrapper类里,有对Servlet的加载(load方法)、卸载(unload方法)、收回分配(deallocate方法)和分配(allocate方法)。 load方法 /** * Load and initialize an instance of this servlet, if there is not already * at least one initialized instance. This can be used, for example, to * load servlets that are marked in the deployment descriptor to be loaded * at server startup time. * <p> * <b>IMPLEMENTATION NOTE</b>: Servlets whose classnames begin with * <code>org.apache.catalina.</code> (so-called

Servlet转发forward和重定向response.sendRedirect()区别

情到浓时终转凉″ 提交于 2019-12-09 21:52:36
1.两者区别 重定向是在客户端发生的,URL地址栏变化,可以定向到任何服务器的资源; 转发是发生在服务器内部的,浏览器地址栏不变化,只能转发本服务器的资源。 2.使用方法 重定向使用:response.sendRedirect(url); 转发时使用:request.getRequestDispatcher(url).forward(request,response); 3.禁用Cookie时,如何使用Session session虽然是服务器端的,但是在浏览器再次访问其他servlet时,服务器如何知道是否为同一客户端?其实,在浏览器访问session资源后,服务器会发送一个set-cookie响应,此cookie不是存在本地的,存在浏览器内部,所以说session是基于cookie的。但是当浏览器禁用所有cookie时,cookie存不进去,服务器如何分辨客户机呢? 使用URL重写,即将session产生的id设置在URL上,浏览器每次访问,都带着此后缀,所以无论是否禁用cookie,都能访问同一session资源,方法如下: 重定向URL使用 String url = response.encodeRedirectURL(url); response.sendRedirect(url); 非重定向URL使用 String url = response.encodeURL

SSM配置大概过程

可紊 提交于 2019-12-09 20:34:41
文章目录 1. 在```web.xml```中添加一个servlet 2. 写一个```jdbc.properties``` 3. mybatis的配置文件 4. 创建一个spring的文件夹,里面分别放置dao、service、web的配置文件 spring-dao.xml spring-service.xml spring-web.xml 1. 在 web.xml 中添加一个servlet < servlet > < servlet-name > spring-dispatcher </ servlet-name > < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class > < init-param > < param-name > contextConfigLocation </ param-name > <!--因为我们把dao、service以及web层的配置文件分开了,所以这里需要配置一下--> < param-value > classpath:spring/spring-*.xml </ param-value > </ init-param > </ servlet > < servlet-mapping > < servlet-name >

BirtViewer和Struts2框架的整合

☆樱花仙子☆ 提交于 2019-12-09 20:33:49
作者: 晋哥哥 发表于 2009-08-21 17:24 原文链接 阅读: 383 评论: 0 最近和同事在做一个birt相关的东西< Birt扫盲 >,web这块是用ssh框架,MVC框架用的是struts2。同事负责报表展现这一块,考虑到工期,他选择了使用birt标签来展现birt报表。这一来,问题就出现了。因为web这块是在一个老项目的基础上添加的模块,很多配置都不要再修改,其中就有struts2的核心过滤器,拦截了/*和*.jsp,而如果使用birt标签的话,它自己向birt引擎(配置为servlet)发出的请求通通都被struts2过滤了,结果只要一到含有birt标签的页面,就会报异常:在xx下找不到xxAction。算是个冲突吧。问题的关键点就是:birt标签对于servlet的请求,被struts2的核心过滤器过滤了。如果从零开始做,这或许不是什么难事,但是项目里很多配置都定死了,没办法,只能想其他路子。 方案一:修改birtViewer相关的servlet源码 将birt的servlet的url-mapping配置为类似于/preview.birt的话,是会被struts2的核心过滤器放过的,于是我反编译了birt的servlet的源码,发现请求路径基本都是硬编码的,不管了,一通乱改,基本都是将xxx改成xxx.birt,然后居然可以预览到报表的轮廓了

ServletContainerInitializer

旧巷老猫 提交于 2019-12-09 20:10:40
简介 在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能。 每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerInitializer的文件,文件内容指定具体的ServletContainerInitializer实现类。 实现步骤 1、Servlet容器启动会扫描,当前应用里面每一个jar包的 ServletContainerInitializer的实现 2、提供ServletContainerInitializer的实现类; 必须绑定在,META-INF/services/javax.servlet.ServletContainerInitializer 文件的内容就是ServletContainerInitializer实现类的全类名; 3、代码: MyServletContainerInitializer.java //容器启动的时候会将@HandlesTypes指定的这个类型下面的子类(实现类,子接口等)传递过来; //传入感兴趣的类型; @HandlesTypes(value=

JavaWeb学习——了解Servlet

痴心易碎 提交于 2019-12-09 19:55:48
JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发。 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增长。早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈现出来。 然而随着时间发展,用户已经不满足于仅浏览静态页面。用户需要一些交互操作,获取一些动态结果。如果基于HTTP协议实现服务器端软件增强功能太过复杂,所以需要一些扩展机制来实现用户想要的功能。早期使用的Web服务器扩展机制是CGI(Common Gateway Interface,公共网关接口)。使用这种方法,用户单击某个链接或输入网址来访问CGI程序,web服务器收到请求后,运行该CGI程序,对用户请求进行处理,紧接着将处理结果并产生一个响应,该响应被返回给web服务器,web服务器对响应进行包装,以HTTP响应的方式返回给浏览器。 CGI程序在一定程度上解决了用户需求。不过还存在一些不足之处,如CGI程序编写困难,响应时间较长,以进程方式运行导致性能受限。于是1997年,SUN公司推出了Servlet技术,作为Java阵营的CGI解决方案。 什么是Servlet

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

偶尔善良 提交于 2019-12-09 19:33:47
前言:为了深入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-pattern>/*</url-pattern> </filter-mapping>

JavaWeb(八):Filter和Listener

怎甘沉沦 提交于 2019-12-09 19:31:14
一、Filter 1.1 概述 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序: Filter, FilterChain, FilterConfig 。 Filter 程序是一个实现了 Filter 接口的 Java 类 ,与 Servlet 程序相似,它由 Servlet 容器进行调用和执行Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源:Filter 程序可以拦截 Jsp, Servlet, 静态图片文件和静态 html 文件。 过滤过程 原理 当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,这个 Filter 就成了 Servlet 容器与该 Servlet 程序的通信线路上的一道关卡,该 Filter 可以对 Servlet 容器发送给 Servlet 程序的请求和 Servlet 程序回送给 Servlet 容器的相应进行拦截,可以决定是否将请求继续传递给 Servlet 程序,以及对请求和相应信息是否进行修改。在一个 web 应用程序中可以注册多个 Filter 程序,每个 Filter