hello2源代码分析
String username = request.getParameter("username");
/*
*以 String 形式返回请求参数"username"的值,并赋值给username,如果该参数不存在,则返回 null。
*请求参数是与请求一起发送的额外信息。
*对于 HTTP servlet,参数包含在查询字符串或发送的表单数据中。
*/
if (username != null && username.length()> 0) {//若username不为null并且长度大于零则
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");
/*
*定义接收来自客户端的请求并将它们发送到服务器上的任何资源的对象dispatcher
*该对象被用作包装位于特定路径上的服务器资源或通过特定名称给定的服务器资源的包装器.
*该路径名必须以 "/" 开头,并相对于当前上下文根进行解释。
*如果 ServletContext无法返回RequestDispatcher,则此方法返回 null。
*/
if (dispatcher != null) {
dispatcher.include(request, response);
/*
*利用include()方法将HTTP请求转送给其他Servlet(/response)后,
*被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在当前的Servlet。
*/
}
}
@WebServlet("/response")//url映射
public class ResponseServlet extends HttpServlet {
@Override//重写doGet方法
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {//抛出可能出现servlet和IO异常
try (PrintWriter out = response.getWriter()) {//捕获可能发生的异常
// then write the data of the response
String username = request.getParameter("username");在请求中取得username参数的值
if (username != null && username.length()> 0) {
out.println("<h2>Hello, " + username + "!</h2>");//在前段页面打印username值
}
}
}
hello2源代码分析的更多相关文章
- android-plugmgr源代码分析
android-plugmgr是一个Android插件加载框架,它最大的特点就是对插件不需要进行任何约束.关于这个类库的介绍见作者博客,市面上也有一些插件加载框架,但是感觉没有这个好.在这篇文章中,我 ...
- Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...
- 转:SDL2源代码分析
1:初始化(SDL_Init()) SDL简介 有关SDL的简介在<最简单的视音频播放示例7:SDL2播放RGB/YUV>以及<最简单的视音频播放示例9:SDL2播放PCM>中 ...
- 转:RTMPDump源代码分析
0: 主要函数调用分析 rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://. ...
- 转:ffdshow 源代码分析
ffdshow神奇的功能:视频播放时显示运动矢量和QP FFDShow可以称得上是全能的解码.编码器.最初FFDShow只是mpeg视频解码器,不过现在他能做到的远不止于此.它能够解码的视频格式已经远 ...
- UiAutomator源代码分析之UiAutomatorBridge框架
上一篇文章<UIAutomator源代码分析之启动和执行>我们描写叙述了uitautomator从命令行执行到载入測试用例执行測试的整个流程.过程中我们也描写叙述了UiAutomatorB ...
- MyBatis架构设计及源代码分析系列(一):MyBatis架构
如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBa ...
- hostapd源代码分析(三):管理帧的收发和处理
hostapd源代码分析(三):管理帧的收发和处理 原文链接:http://blog.csdn.net/qq_21949217/article/details/46004379 这篇文章我来讲解一下h ...
- hostapd源代码分析(二):hostapd的工作机制
[转]hostapd源代码分析(二):hostapd的工作机制 原文链接:http://blog.csdn.net/qq_21949217/article/details/46004433 在我的上一 ...
随机推荐
- Object.keys 返回由一个给定对象的自身可枚举属性组成的数组
在实际开发中,我们有时需要知道对象的所有属性, 原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 http://blog.csdn.net/u014035151/ar ...
- 51 Nod 1072 威佐夫游戏
https://baike.baidu.com/item/%E5%A8%81%E4%BD%90%E5%A4%AB%E5%8D%9A%E5%BC%88/19858256?fr=aladdin&f ...
- Python excel文件操作,编程练习题实例七十五
纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], "2" ...
- pycharm创建.py文件时,自动添加头文件注释
File->settings->Editor->Code Templates->Python Script 添加以下代码: #!/usr/bin/env python # -* ...
- LC 961. N-Repeated Element in Size 2N Array【签到题】
In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeate ...
- python - paramiko模块 修改logging提示为静默
import paramiko import logging log = paramiko.util.get_logger("paramiko") log.setLevel(log ...
- 无缝滚动的float属性
The float CSS property specifies that (1) an element should be taken from the normal flow and (2) pl ...
- 2单表CRUD综合样例开发教程
东软集团股份有限公司 基础软件事业部 单表CRUD综合样例开发教程 东软机密 tui 更改履历 版本号 更改时间 更改的 图表和章节号 状态 更改简要描述 更改申 请编号 更改人 批准人 V1.0 2 ...
- spark map和mapPartitions的区别
package dayo1 import org.apache.spark.{SparkConf, SparkContext} import scala.collection.mutable.Arra ...
- java程序加到系统托盘的方法
package swingtest; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; impor ...