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。
12345678910111213141516171819202122232425262728293031323334353637383940414243
编辑器打开 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.";
}
}
123456789101112131415161718192021
以上就是 Hello2 的基本代码实现,整体来讲实现代码不多,也有很高的可读性,代码清晰,学习起来也没那么困难。
在本地部署servlet时,可以使用以下URL访问它:
http://localhost:8080/hello2/greeting

转载于:https://www.cnblogs.com/sclerx/p/10624723.html

hello2 source analysis相关推荐

  1. 脑电溯源分析/源定位 EEG source analysis / Localization

    脑电溯源定位,即脑电逆向问题,是根据头表记录到的电位信号,反向推算出估计的脑内神经活动源的位置.方向和强度信息. 参考链接:脑电溯源定位 本质上,脑电逆问题是非线性优化问题,考虑到计算的复杂性,因而近 ...

  2. 编译器GCC与Clang的异同

    GCC:GNU(Gnu's Not Unix)编译器套装(GNU Compiler Collection,GCC),指一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU项目的关键 ...

  3. Emacs for Go

    2019独角兽企业重金招聘Python工程师标准>>> In this post I'm going to explore customizing Emacs to make hac ...

  4. 增量加载(Incremental Loads)

    增量聚集(Incremental Aggregation) PowerCenter Server 运行你增量的修改目标(target),而不是强迫process整个源和重新计算. 用增量聚集的条件: ...

  5. [转]新版.Net开发必备十大工具

    本文转自:http://www.cnblogs.com/zxhoo/archive/2011/04/02/2002905.html 几年前MSDN上的一篇文章<Ten Must-Have Too ...

  6. 一个功能非常全面的增强出口查找工具

    程序代码: *&--------------------------------------------------------------------&* *& Report ...

  7. spring源码分析,聊聊PropertyPlaceholderConfigurer

    2019独角兽企业重金招聘Python工程师标准>>> 简介 最近工作中需要使用zookeeper配置中心管理各系统的配置,也就是需要在项目启动时,加载zookeeper中节点的子节 ...

  8. 【转】新.Net开发必备工具详解之Snippet Compiler。

    代码段编译工具 1. 工具概述 Snippet Compiler是一个基于 windows 的小型应用程序,你可以通过它来编写.编译和运行代码.现在Snippet Compiler已经支持.NET F ...

  9. 七种武器武装.NET(常用开发工具介绍)(转)

    我学习.Net快一年了,偶然间发现大家用的开发工具很多我都没见过,于是暗中的进行收集(呵呵,夸张了),现在收集满七种特来做此总结!我称他们为"七种武器"\(^o^)/ 第一种武器长 ...

最新文章

  1. data spring 指定时区_SpringBoot 统一时区的方案
  2. LoadRunner界面分析(二)
  3. xp职称计算机考试题库,2015年职称计算机考试XP题库.doc
  4. leetcode| 94. 二叉树的中序遍历
  5. golang 切片追加问题
  6. git根据commit生成patch(转载)
  7. 项目启动会注意事项-甲方
  8. dex2jar工具及问题
  9. 2022.02.19四座楼苹果园
  10. 35岁以后的大龄程序员,正处于怎样一种状态?
  11. java 数独游戏_java数独游戏完整版分享
  12. 魔兽对战平台服务器更新维护什么,魔兽官方对战平台更新:公会系统正式上线!...
  13. Python学习13 ----Seaborn调色板
  14. c语言1GB转成B,2018职称计算机考试WPS_Office精选习题9
  15. 总结一下强大的ES6符号
  16. 【西语】【2】Recuërdame antes de que se desaparezca la memoria del amor 在爱的记忆消失前,请记住我
  17. git错误:exceeds file size limit of 100.0 MB remote: error: hook declined to update refs/heads/master
  18. 车牌定位系统matlab,基于Matlab的车牌定位系统的研究与设计论文
  19. 4.Nginx优化,谁用谁说好
  20. Java读取数据库Geometry

热门文章

  1. HTML5 基础知识(三)
  2. el-date-picker怎样获取选择的时间范围值并判断是否大于7天
  3. SqlServer在安装时提示:需要Microsoft.NET Framework 3.5 Service Pack 1 规则失败
  4. UbuntuServer16.04LTS中安装Mysql并配置远程访问
  5. arduino 勘智k210_如何评价嘉楠耘智的勘智K210芯片?
  6. mysql pool返回值_Mysql成神之路-InnoDB 的 Buffer Pool
  7. 埋点全解 2:iOS 应用程序状态
  8. 她理财携手神策数据:让数据成为社区运营玩法升级的关键变量
  9. 他们为什么融资上市?因为用好了……
  10. 11.24杭州沙龙预告:数据化经营,智能化决策