对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的核心架构,读完顿时感觉豁然开朗,茅塞顿开,写得非常的鞭辟入里,言简意赅,我想没有相当的功力是写不出这样的文章的,情不自禁转到自己空间来,生怕弄丢了 ...
随机推荐
- App 性能测试
app常见性能测试点: https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318
- java中 Spring 定时器定时任务Quartz的正确使用方法集配置
定时任务我想大家都不默认,现在流行的框架spring就带了定时任何 我的个人网站(http://www.yzcopen.com)上用户上传的文件都是用这套定时任务执行定时清除 第一步:在applica ...
- 工作记录mysql主从复制
环境ubuntu 16.04 主配置 1.编辑主MySQL配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf 更改server-id,它位于[mysqld]段.这个数 ...
- 吴裕雄--天生自然 pythonTensorFlow自然语言处理:文本数据预处理--生成训练文件
import sys import codecs # 1. 参数设置 MODE = "PTB_TRAIN" # 将MODE设置为"PTB_TRAIN", &qu ...
- 吴裕雄--天生自然 pythonTensorFlow图形数据处理:解决module 'tensorflow' has no attribute 'Session'
原因:因为是tensorflow 2.0版本
- Hibernate基础数据类型
Java数据类型 Hibernate数据类型 byte,java.lang.Byte byte short,java.lang.Short short int,java.lang.Integer in ...
- [LC] 767. Reorganize String
Given a string S, check if the letters can be rearranged so that two characters that are adjacent to ...
- LeetCode No.97,98,99
No.97 IsInterleave 交错字符串 题目 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 输入: s1 = "aabcc&qu ...
- qsub|pasta|
cd /xxx/genome_stat/Annotation ln -s /xxx/02.annotation/gff_v2/*.homolog.v2.gff /xxx/genome_stat/Ann ...
- Java类的三大特征
1.三大特征是封装.继承和多态 2.封装 特点: 需要修改属性的访问控制符为private: 创建getter/setter方法用于属性的读写: 在getter/setter方法中加入属性控制语句,用 ...