文档章节

Servlet测试

KuangCaibao
 KuangCaibao
发布于 2015/04/30 10:37
字数 577
阅读 17
收藏 0

初学JavaWeb,以下内容都是个人理解,不能保证内容的正确性,如有错误欢迎指正。

Javaweb中的Servlet类,可以说是对应了不同的URL请求处理,这个可以在 web.xml 的配置中可以看出来,例如

// web.xml

<servlet>
  <servlet-name>DoServlet1</servlet-name>
  <servlet-class>test.DoServlet1<servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>DoServlet1</servlet-name>
  <url-pattern>/doserv1/*</url-pattern>
</servlet-mapping>

<servlet>
  <servlet-name>DoServlet2</servlet-name>
  <servlet-class>test.DoServlet2<servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>DoServlet2</servlet-name>
  <url-pattern>/doserv2/*</url-pattern>
</servlet-mapping>

上面的配置中,将客户端来的  /doserv1/* 请求转到 DoServlet1 这个 Servlet 类去处理,将 /doserv2/* 请求转到 DoServlet2 去处理。

Tomcat启动时会加载所有的Servlet吗?

我们这里的测试Web服务器使用的是Tomcat8.0,启动Tomcat,会加载Tomcat配置文件 servlet.xml 中host标签下的Web工程和 Context 标签中的工程,一个Context对应一个Web工程。

package mvc;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * @WebSerlvet("/*") 将所有的请求都到DispatcherServlet这个类中来中转
 */

@WebServlet("/*")
public class DispatcherServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static int sCount = 0;     // 静态代码执行次数标识
	private static int rCount = 1000;  // 请求处理次数标识
	private static int dCount = 2000;  // 重新启动处理标识,为了测试处理URL是不是并发
	
	static {
		System.out.println(sCount++);
	}
       
    public DispatcherServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
    		throws ServletException, IOException {
    	
    	System.out.println(rCount++);
    	try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	System.out.println(dCount++);
    }

}

启动Tomcat,在Console的输出中,只看到了Tomcat的启动信息,没有Servlet的启动信息。表示Tomcat启动的时候,没有将该Servlet的代码加载到JVM中,因为下面这段代码没有执行。

static {
    System.out.println(sCount++);
}

现在我们在浏览器中输入   127.0.0.1:8080/tdx-framework/hello , 这时这个URL的处理会转到我们的Servlet来处理,这时的控制太输出信息为

0
1000
2000

再发一次该请求,输出信息为

0
1000
2000
1001
2001

可以看到,该Servlet被Tomcat载入到JVM中后,static代码只会执行一次,然后每次的请求处理,都会执行。现在来看看多个请求并发的时候。快速重复刷新浏览器,重复发请求。

0
1000
2000
1001
2001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011

可以看到 Servlet 处理 URL 请求是并发的。

© 著作权归作者所有

上一篇: Java - 正则表达式
下一篇: Java - UML类图
KuangCaibao
粉丝 2
博文 21
码字总数 10699
作品 0
武汉
程序员
私信 提问
WebSphere访问WEB-INF目录403错误

E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: 未捕获到 service() 异常的根本原因 default:javax.servlet.ServletException: java.io.FileNotFoundException: /W......

zilei
2013/07/31
1K
4
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
398
1
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
178
0
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
146
0

没有更多内容

加载失败,请刷新页面

加载更多

观点 | 用 MySQL 数据库,到底会不会被“卡脖子”?

>作者:明溪源 **用 MySQL 数据库,到底会不会被“卡脖子”?** 在近期不明朗的贸易形势下,一些正在规划数据库选型、迁移的用户,纷纷询问我们对 MySQL 未来前景的看法。那么使用 MySQL 数据...

爱可生
23分钟前
9
0
千万级流量架构下的负载均衡解析

一、负载均衡 负载均衡算法 转发实现 二、集群下的 Session 管理 Sticky Session Session Replication Session Server 一、负载均衡 集群中的应用服务器(节点)通常被设计成无状态,用户可以...

李红欧巴
26分钟前
70
0
一元建站-基于函数计算 + wordpress 构建 serverless 网站

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函...

阿里云官方博客
28分钟前
4
0
Spring Security 整合JWT(四)

一、前言 本篇文章将讲述Spring Security 简单整合JWT 处理认证授权 基本环境 spring-boot 2.1.8 mybatis-plus 2.2.0 mysql 数据库 maven项目 Spring Security入门学习可参考之前文章: Spri...

郑清
29分钟前
7
0
零基础怎么玩转可视化大屏?这个工具只需5步!

大屏可视化怎么这么火?领导天天要,业务人员、开发人员、IT页面师就得一块熬夜加班,要是不会做大屏,都不好意思说自己做报表、做IT。 也许有人会告诉你,可视化大屏可以用JS+Ecahrts编程实...

朕想上头条
31分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部