Hello2 应用程序是一个 Web 模块,它使用 Java Servlet 技术来显示问候语和响应,使用的是 Java Servlet 技术。

该应用程序源代码在 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 { @Override
public void doGet(HttpServletRequest request, //重写 httpservlet 的 doget 方法,实现覆盖并用来处理 get 请求
HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html"); // 设置响应类型为 HTML
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。

ResponseServlet.java

@WebServlet("/response")   	// 将 URL 配置为 /response
public class ResponseServlet extends HttpServlet { @Override
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>"); //在页面输出一句话。
}
}
} @Override
public String getServletInfo() {
return "The Response servlet says hello."; }
}

在本地部署servlet时,可以使用以下URL访问它:

http://localhost:8080/hello2/greeting

参考链接:

https://blog.csdn.net/X_Teddy/article/details/88785624

Analysis of Hello2 source code的更多相关文章

  1. LIRE教程之源码分析 | LIRE Tutorial of Analysis of the Source Code

    LIRE教程之源码分析 |LIRE Tutorial of Analysis of the Source Code 最近在做地理图像识别和检索的研究,发现了一个很好用的框架LIRE,遂研究了一通.网上 ...

  2. Memcached source code analysis (threading model)--reference

    Look under the start memcahced threading process memcached multi-threaded mainly by instantiating mu ...

  3. Android Bluetooth Stack: Bluedroid(五岁以下儿童):The analysis of A2DP Source

    1. A2DP Introduction The Advanced Audio Distribution Profile (A2DP) defines the protocols and proced ...

  4. [转]Native Java Bytecode Debugging without Source Code

    link from:http://www.crowdstrike.com/blog/native-java-bytecode-debugging-without-source-code/index.h ...

  5. How to compile and install Snort from source code on Ubuntu

    http://www.tuicool.com/articles/v6j2Ab Snort is by far the most popular open-source network intrusio ...

  6. Source Code Reading for Vue 3: How does `hasChanged` work?

    Hey, guys! The next generation of Vue has released already. There are not only the brand new composi ...

  7. Tips for newbie to read source code

    This post is first posted on my WeChat public account: GeekArtT Reading source code is always one bi ...

  8. 编程等宽字体Source Code Pro(转)

    Source Code Pro - 最佳的免费编程字体之一!来自 Adobe 公司的开源等宽字体下载     每一位程序员都有一套自己喜爱的代码编辑器与编程字体,譬如我们之前就推荐过一款"神 ...

  9. How to build the Robotics Library from source code on Windows

    The Robotics Library is an open source C++ library for robot kinematics, motion planning and control ...

随机推荐

  1. python计算范数的问题

    计算norm时, 注意把数据改为float 类型, 否则结果不对! import numpy.linalg as LA d = LA.svd(features.toarray(),full_matri ...

  2. PAT Advanced 1059 Prime Factors (25) [素数表的建⽴]

    题目 Given any positive integer N, you are supposed to find all of its prime factors, and write them i ...

  3. TextBox换行C#文本框换行.net文本框换行textarea换行

    在TextBox中输入的内容,显示的时候如果用lable显示,无法换行 可以使用TextBox输入,然后也使用TextBox 显示,这样换行输入的内容,显示的时候也可以换行.显示的时候可以设置一下控件 ...

  4. F 乘法(第k大问题)(二分)

    题:https://ac.nowcoder.com/acm/contest/3979/F 题意:俩个序列俩俩相乘得到n*m个数,求第k大的数是哪个 分析:二分 #include<bits/std ...

  5. layui子弹框调用父弹框方法

    var thisFrame = parent.window.document.getElementById("LAY_layuiStampDuty1").getElementsBy ...

  6. tessereact的链接收藏

    http://www.sohu.com/a/323153211_823210 https://www.cnblogs.com/tongye/p/10734342.html https://github ...

  7. 学习ECC及Openssl下ECC生成密钥的部分源代码心得

    一.ECC的简介 椭圆曲线算法可以看作是定义在特殊集合下数的运算,满足一定的规则.椭圆曲线在如下两个域中定义:Fp域和F2m域. Fp域,素数域,p为素数: F2m域:特征为2的有限域,称之为二元域或 ...

  8. 跟踪路由(tracert)及ping命令

    由于最近学校网络不好,老是有问题,加上最近写了个数据展示系统,要部署到买的域名下,用到了这两个命令 首先,一台服务器,一台工作站,一个笔记本(我的,来测试ip是否通的) 服务器已经部署了三个网站(一个 ...

  9. [LC] 151. Reverse Words in a String

    Given an input string, reverse the string word by word. Example 1: Input: "the sky is blue" ...

  10. Java程序员常用Linux性能分析命令

    性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive ...