hello2 source analysis
该应用程序源代码在 tutorial-examples\web\servlet\hello2\src\main\java\javaeetutorial\hello2 下,分别为:GreetingServlet.java和ResponseServlet.java
此 servlet 重写该 doGet 方法,实现 GET HTTP 方法。servlet 显示一个简单的HTML问候表单,GreetingServlet.java:
@WebServlet("/greeting") //将 URL 指定为/greeting
public class GreetingServlet extends HttpServlet {
public void doGet(HttpServletRequest request, //重写 httpservlet 的 doget 方法,实现覆盖并用来处理 get 请求
HttpServletResponse response)
throws ServletException, IOException {
response.setBufferSize(8192);
try (PrintWriter out = response.getWriter()) {
out.println("<html lang=\"en\">" //设置 HTML 语言
+ "<head><title>Servlet Hello</title></head>"); // 网页标题
// then write the data of the response
out.println("<body bgcolor=\"#ffffff\">"
+ "<img src=\"resources/images/duke.waving.gif\" "
+ "alt=\"Duke waving his hand\">"
+ "<form method=\"get\">"
+ "<h2>Hello, my name is Duke. What's yours?</h2>"
+ "<input title=\"My name is: \" type=\"text\" "
+ "name=\"username\" size=\"25\"/>"
+ "<p></p>"
+ "<input type=\"submit\" value=\"Submit\"/>"
+ "<input type=\"reset\" value=\"Reset\"/>"
+ "</form>"); // HTML 源代码,以显示页面
String username = request.getParameter("username");
//获取传来的参数值。
//通过容器传递给当前 httpservlet
if (username != null && username.length() > 0) { //判断用户输入的值是否有效
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response"); //获取url为/response的servlet作为一个dispatcher资源
if (dispatcher != null) {
dispatcher.include(request, response);
}
}
out.println("</body></html>");
}
}
//dispatcher 中通过 request 获得 username,在response中添加了hello这几句话,dispatcher 就是开始获得的 /response 对应的httpservlet。
12345678910111213141516171819202122232425262728293031323334353637383940414243
编辑器打开 ResponseServlet.java :
@WebServlet("/response") // 将 URL 配置为 /response
public class ResponseServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try (PrintWriter out = response.getWriter()) { //获取输出对象,用于向页面写数据。返回一个 PrintWriter 对象
String username = request.getParameter("username"); //获取用户的字符串或字符
if (username != null && username.length() > 0) { //判断输入值是否有效,有效则执行
out.println("<h2>Hello, " + username + "!</h2>"); //在页面输出一句话。
}
}
}
public String getServletInfo() {
return "The Response servlet says hello.";
}
123456789101112131415161718192021
以上就是 Hello2 的基本代码实现,整体来讲实现代码不多,也有很高的可读性,代码清晰,学习起来也没那么困难。
在本地部署servlet时,可以使用以下URL访问它:
http://localhost:8080/hello2/greeting
转载于:https://www.cnblogs.com/sclerx/p/10624723.html
hello2 source analysis相关推荐
- 脑电溯源分析/源定位 EEG source analysis / Localization
脑电溯源定位,即脑电逆向问题,是根据头表记录到的电位信号,反向推算出估计的脑内神经活动源的位置.方向和强度信息. 参考链接:脑电溯源定位 本质上,脑电逆问题是非线性优化问题,考虑到计算的复杂性,因而近 ...
- 编译器GCC与Clang的异同
GCC:GNU(Gnu's Not Unix)编译器套装(GNU Compiler Collection,GCC),指一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU项目的关键 ...
- Emacs for Go
2019独角兽企业重金招聘Python工程师标准>>> In this post I'm going to explore customizing Emacs to make hac ...
- 增量加载(Incremental Loads)
增量聚集(Incremental Aggregation) PowerCenter Server 运行你增量的修改目标(target),而不是强迫process整个源和重新计算. 用增量聚集的条件: ...
- [转]新版.Net开发必备十大工具
本文转自:http://www.cnblogs.com/zxhoo/archive/2011/04/02/2002905.html 几年前MSDN上的一篇文章<Ten Must-Have Too ...
- 一个功能非常全面的增强出口查找工具
程序代码: *&--------------------------------------------------------------------&* *& Report ...
- spring源码分析,聊聊PropertyPlaceholderConfigurer
2019独角兽企业重金招聘Python工程师标准>>> 简介 最近工作中需要使用zookeeper配置中心管理各系统的配置,也就是需要在项目启动时,加载zookeeper中节点的子节 ...
- 【转】新.Net开发必备工具详解之Snippet Compiler。
代码段编译工具 1. 工具概述 Snippet Compiler是一个基于 windows 的小型应用程序,你可以通过它来编写.编译和运行代码.现在Snippet Compiler已经支持.NET F ...
- 七种武器武装.NET(常用开发工具介绍)(转)
我学习.Net快一年了,偶然间发现大家用的开发工具很多我都没见过,于是暗中的进行收集(呵呵,夸张了),现在收集满七种特来做此总结!我称他们为"七种武器"\(^o^)/ 第一种武器长 ...
最新文章
- data spring 指定时区_SpringBoot 统一时区的方案
- LoadRunner界面分析(二)
- xp职称计算机考试题库,2015年职称计算机考试XP题库.doc
- leetcode| 94. 二叉树的中序遍历
- golang 切片追加问题
- git根据commit生成patch(转载)
- 项目启动会注意事项-甲方
- dex2jar工具及问题
- 2022.02.19四座楼苹果园
- 35岁以后的大龄程序员,正处于怎样一种状态?
- java 数独游戏_java数独游戏完整版分享
- 魔兽对战平台服务器更新维护什么,魔兽官方对战平台更新:公会系统正式上线!...
- Python学习13 ----Seaborn调色板
- c语言1GB转成B,2018职称计算机考试WPS_Office精选习题9
- 总结一下强大的ES6符号
- 【西语】【2】Recuërdame antes de que se desaparezca la memoria del amor 在爱的记忆消失前,请记住我
- git错误:exceeds file size limit of 100.0 MB remote: error: hook declined to update refs/heads/master
- 车牌定位系统matlab,基于Matlab的车牌定位系统的研究与设计论文
- 4.Nginx优化,谁用谁说好
- Java读取数据库Geometry
热门文章
- HTML5 基础知识(三)
- el-date-picker怎样获取选择的时间范围值并判断是否大于7天
- SqlServer在安装时提示:需要Microsoft.NET Framework 3.5 Service Pack 1 规则失败
- UbuntuServer16.04LTS中安装Mysql并配置远程访问
- arduino 勘智k210_如何评价嘉楠耘智的勘智K210芯片?
- mysql pool返回值_Mysql成神之路-InnoDB 的 Buffer Pool
- 埋点全解 2:iOS 应用程序状态
- 她理财携手神策数据:让数据成为社区运营玩法升级的关键变量
- 他们为什么融资上市?因为用好了……
- 11.24杭州沙龙预告:数据化经营,智能化决策