对Java tutorial-examples中hello2核心代码分析
1.在hello2中有两个.java源文件分别是GreetingServlet.Java和ResponseServlet.jva文件主要对以下核心代码做主要分析。
String username = request.getParameter("username"); //获取表单数据
if (username != null && username.length() > 0) {
RequestDispatcher dispatcher = //定义一个dispatcher用来接收客户端的请求,并将它们发送到服务器上的任何资源(例如servlet,HTML文件或JSP文件)
getServletContext().getRequestDispatcher("/response"); //获取上下文内容并且返回以路径/response的响应
if (dispatcher != null) {
dispatcher.include(request, response); //如果接收的客户端请求不为空则,则包含响应资源(jsp页面 html servlet)内容
}
}
要理解上面代码我们必须先要理解以下概念
(1)getParameter
String javax.servlet.ServletRequest.getParameter(String name)
以String形式返回请求参数的值,如果参数不存在,则返回null。请求参数是随请求一起发送的额外信息。对于HTTP servlet,参数包含在查询字符串或发布的表单数据中。只有在确定参数只有一个值时才应使用此方法
(2)RequestDispatcher
javax.servlet.RequestDispatcher
定义一个对象,该对象接收来自客户端的请求,并将它们发送到服务器上的任何资源(例如servlet,HTML文件或JSP文件)。 servlet容器创建RequestDispatcher对象,该对象用作位于特定路径或由特定名称给出的服务器资源的包装器。此接口旨在包装servlet,但servlet容器可以创建RequestDispatcher对象来包装任何类型的资源。
(3)getServletContext()
ServletContext javax.servlet.GenericServlet.getServletContext()
提供该方法是为了方便起见。它从servlet的ServletConfig对象获取上下文。
返回:ServletContext由init方法传递给此servlet的ServletContext对象
(4)getRequestDispatcher()
RequestDispatcher javax.servlet.ServletContext.getRequestDispatcher(String path)
返回一个RequestDispatcher对象,该对象充当位于给定路径的资源的包装器。 RequestDispatcher对象可用于将请求转发到资源或将资源包含在响应中。资源可以是动态的也可以是静态的。路径名必须以 / 开头,并且被解释为相对于当前上下文根。使用getContext为外部上下文中的资源获取RequestDispatcher。如果ServletContext无法返回RequestDispatcher,则此方法返回null。
(5) include(request, response)
void javax.servlet.RequestDispatcher.include(ServletRequest request, ServletResponse response) throws ServletException, IOException
包含响应中的资源(servlet,JSP页面,HTML文件)的内容。从本质上讲,这种方法可以实现程序化服务器端包含。 ServletResponse对象的路径元素和参数与调用者保持不变。包含的servlet无法更改响应状态代码或设置标头;任何改变的尝试都会被忽略。请求和响应参数必须是传递给调用servlet的服务方法的相同对象,或者是包装它们的ServletRequestWrapper或ServletResponseWrapper类的子类。此方法将给定请求的调度程序类型设置为DispatcherType.INCLUDE。
参数:
Parameters:
request a ServletRequest object that contains the client's request
response a ServletResponse object that contains the servlet's response
对Java tutorial-examples中hello2核心代码分析的更多相关文章
- Java线程池中的核心线程是如何被重复利用的?
真的!讲得太清楚了!https://blog.csdn.net/MingHuang2017/article/details/79571529 真的是解惑了 本文所说的"核心线程". ...
- 微信公众号抢现金红包活动的核心代码分析(asp.net C#)
今年春节微信抢红包,我想各位都还记得.最近很多商家也在使用公众号给粉丝发红包,做营销活动.吸粉活动或者是反馈老用户等. 我们作为第3方开发者,就义不容辞的来给这些商家服务了.首先我们得会使用程序来写抢 ...
- Zepto源码分析(一)核心代码分析
本文只分析核心的部分代码,并且在这部分代码有删减,但是不影响代码的正常运行. 目录 * 用闭包封装Zepto * 开始处理细节 * 正式处理数据(获取选择器选择的DOM) * 正式处理数据(添加DOM ...
- java实现自动化发布平台核心代码
1.搭建jenkins环境 (1)jenkins官网下载jenkins.war包 (2)将该war包放入到tomcat的webapp的目录下(前提条件需要配置tomcat的环境,详情请自行百度) (3 ...
- Java演示设计模式中的写代码的代码
下边代码内容是关于Java演示设计模式中的单件模式的代码,应该是对小伙伴们有所用处. public class SimpleSingleton { private static SimpleSingl ...
- 学习Redux之分析Redux核心代码分析
1. React,Flux简单介绍 学习React我们知道,React自带View和Controller库,因此,实现过程中不需要其他任何库,也可以独立开发应用.但是,随着应用程序规模的增大,其需要控 ...
- hello1与hello2的代码分析
1.hello1代码分析 hello.java package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped ...
- Darwin Streaming Server 核心代码分析
基本概念 首先,我针对的代码是Darwin Streaming Server 6.0.3未经任何改动的版本. Darwin Streaming Server从设计模式上看,采用了Reactor的并发服 ...
- 【转】Darwin Streaming Server 核心代码分析
无意中看到了dqzhangp的一篇博客,分析了DSS的核心架构,读完顿时感觉豁然开朗,茅塞顿开,写得非常的鞭辟入里,言简意赅,我想没有相当的功力是写不出这样的文章的,情不自禁转到自己空间来,生怕弄丢了 ...
随机推荐
- java截取字符串并拼接
一.substirng public static void main(String[] args) { String sendContent = "请查收:www.baidu.com&qu ...
- Comet OJ - Contest #3 D可爱的菜菜子(线段树+线性基的合并)
这题其实挺经典的,看到求异或最大,显然想到的是线性基,不过这怎么维护?当然区间有关的东西都可以上线段树,区间修改时记录每个点的修改量k,然后合并线性基时再加入线性基.因为线性基是求一组极大线性无关组, ...
- mnist数据集下载
http://yann.lecun.com/exdb/mnist/ THE MNIST DATABASE of handwritten digitsYann LeCun, Courant Instit ...
- HDU-6514 Monitor(二维前缀和+差分)
http://acm.hdu.edu.cn/showproblem.php?pid=6514 Problem Description Xiaoteng has a large area of land ...
- postman测试
Postman接口性能测试 1.从文件中获取参数,然后点击Runner 2.勾选测试用例,配置用例次数.参数文件.返回data等 3.点击run 测试用例 4.查看测试结果 5.测试接口:https: ...
- 吴裕雄--天生自然 pythonTensorFlow图形数据处理:多线程队列操作
import tensorflow as tf #1. 定义队列及其操作. queue = tf.FIFOQueue(100,"float") enqueue_op = queue ...
- Java依据集合元素的属性,集合相减
两种方法:1.集合相减可以使用阿帕奇的一个ListUtils.subtract(list1,list2)方法,这种方法实现必须重写集合中对象的属性的hashCode和equals方法,集合相减判断的会 ...
- xib下如何修改frame
1.取消xib下Use Auto Layout 2.xcode->product->clean
- socker通信-struct模块-粘包问题
Socket概念 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...
- LoadRunner 工具使用
LoaderRunner 第一天 1.1 性能测试基础 服务器端性能测试 1.1 什么是性能测试的本质 基于协议模拟用户发出请求(业务的模拟), 对服务器形成一定的负载,来测试服务器的性能指标是否 ...