在example目录下的web\servlet\hello2\src\main\java\javaeetutorial\hello2路径里可以找到hello2的GreetingServlet.java和ResponseServlet.java。

GreetingServlet.java(显示问候页面表单)

package javaeetutorial.hello2;

import java.io.IOException;      //IOException表示发生某种I/O异常的信号。此类是由失败或中断的I/O操作产生的一般异常类。
import java.io.PrintWriter;      //io常用类,包装流PrintWriter除了可以包装字节流OutputStream之外,还能包装字符流Writer。
import javax.servlet.RequestDispatcher;    //定义一个对象,该对象接收来自客户端的请求,并将它们发送到服务器上的任何资源(例如servlet,HTML文件或JSP文件)。
import javax.servlet.ServletException;    //定义servlet在遇到困难时可以抛出的一般异常。
import javax.servlet.annotation.WebServlet;    //web服务中的,在Glassfish下lib中的包。
import javax.servlet.http.HttpServlet;     //提供要进行子类化的抽象类,以创建适用于Web站点的HTTP Servlet。
import javax.servlet.http.HttpServletRequest;    //扩展ServletRequest接口以提供HTTP Servlet的请求信息。
import javax.servlet.http.HttpServletResponse;    //扩展ServletResponse接口以在发送响应时提供特定于HTTP的功能。 /**
* This is a simple example of an HTTP Servlet. It responds to the GET method of
* the HTTP protocol.
*/
@WebServlet("/greeting")    //设置标注@webserverlet,容器会自动读取里面的信息。此标注告诉容器,如果请求的UEL是“/greeting”,则由GreetingServelet的实例提供服务。
public class GreetingServlet extends HttpServlet {    //创建一个公有类GreetingServlet继承父类HttpServlet @Override          //覆盖标注,意思是下面覆盖HttpServlet中的doGet方法
public void doGet(HttpServletRequest request,    //参数:—req- HttpServletRequest包含客户端对servlet的请求的对象
HttpServletResponse response)     //参数:resp- HttpServletResponse包含servlet发送给客户端的响应的对象
throws ServletException, IOException {    //抛出:java.io.IOException - 如果在servlet处理GET请求时检测到输入或输出错误;ServletException - 如果无法处理GET请求 response.setContentType("text/html");    //发送给客户端的文章类型
response.setBufferSize(8192);    //发送给客户端的响应对象的缓冲大小是8192
try (PrintWriter out = response.getWriter()) {    //获取PrintWriter流,用来在客户端输出
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>"); String username = request.getParameter("username");    //定义一个字符串username并对它赋从request中拿出名字叫userName的值
if (username != null && username.length() > 0) {    //如果username不为空并且长度大于0
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");    //获取jsp上下文里边存储了各变量的信息(值),把一个命令发送到浏览器,让浏览器对指定的URL提出请求(此处的URL只能使用绝对路径) if (dispatcher != null) {
dispatcher.include(request, response);   //如果接收到的客户端的请求不为空时,记录保留request和response,以后不能再修改response里表示状态的信息
}
}
out.println("</body></html>");
}
} @Override    //覆盖
public String getServletInfo() {    //getServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如作者、版本、版权
return "The Hello servlet says hello.";    //返回说明这个servelet的信息是says hello
}
}

ResponseServlet.java(响应页面)

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* This is a simple example of an HTTP Servlet. It responds to the GET
* method of the HTTP protocol.
*/
@WebServlet("/response")
public class ResponseServlet extends HttpServlet { @Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try (PrintWriter out = response.getWriter()) {
String username = request.getParameter("username");    //同上
if (username != null && username.length() > 0) {    //如果username不为空且长度大于0
out.println("<h2>Hello, " + username + "!</h2>");    //打印Hello username
}
}
} @Override
public String getServletInfo() {
return "The Response servlet says hello."; }
}

Hello2 source analysis的更多相关文章

  1. 【FLYabroad 】微软内部代码检查工具 (Microsoft Source Analysis for C#)[转]

    SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些代码具有很高的可读性. 早就听说了微软内部的静态代码检查和代码强制格式美化工具 StyleCop ...

  2. Analysis of Hello2 source code

    Hello2 应用程序是一个 Web 模块,它使用 Java Servlet 技术来显示问候语和响应,使用的是 Java Servlet 技术. 该应用程序源代码在 tutorial-examples ...

  3. hello2 Source Analisis

    hello2应用程序是一个web模块,它使用Java Servlet技术来显示问候和响应.此应用程序的源代码位于 _tut-install_/examples/web/servlet/hello2/目 ...

  4. hello2 source analisis(notes)

    该hello2应用程序是一个Web模块,它使用Java Servlet技术来显示问候语和响应.使用文本编辑器查看应用程序文件,也可以使用NetBeans IDE. 此应用程序的源代码位于 _tut-i ...

  5. Analisis of Hello2 source

    GreetingServlet.java @WebServlet("/greeting") //为servelt指定URL pattern为:/greeting public cl ...

  6. hello2 source anaylis

    首先,我们先来看一看这一段的整体代码, 代码如下: @WebServlet("/greeting") public class GreetingServlet extends Ht ...

  7. Why many EEG researchers choose only midline electrodes for data analysis EEG分析为何多用中轴线电极

    Source: Research gate Stafford Michahial EEG is a very low frequency.. and literature will give us t ...

  8. What technical details should a programmer of a web application consider before making the site public?

    What things should a programmer implementing the technical details of a web application consider bef ...

  9. 把vim当做golang的IDE

    开始决定丢弃鼠标,所以准备用vim了. 那么在vim里面如何搭建golang环境呢? git盛行之下,搭建vim环境是如此简单. 而且vim搭建好了之后,基本上跟IDE没有差别. 高亮.自动补全.自动 ...

随机推荐

  1. Vue.js最简单的代码

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. Python的基本语法1

    一.python的基本数据类型 (1)6种基本数据类型 1.数字类型 int 整数,2,0,-4等 float 浮点数,如1.2,-0.3等 bool 布尔类型,True,False complex ...

  3. docker安装,err:exit status 255,提示找不到虚拟机IP

    我遇到这个问题是因为,BIOS没有打开虚拟化技术,导致虚拟机无法成功创建,自然找不到IP. 解决: 1.进入BIOS,高级选项卡下,找到虚拟化技术开关,打开即可.具体做法,可搜网文. 2.删除原来自动 ...

  4. webpack.config.js配置遇到Error: Cannot find module '@babel/core'&&Cannot find module '@babel/plugin-transform-react-jsx' 问题

    下文是网上找到的方法,是因为版本冲突的原因,参照后安装7版本解决 cnpm install -D babel-loader@ babel-core babel-preset-env 一. 问题描述 在 ...

  5. nc_netcat命令

    它可以打开TCP连接.发送UDP数据包.监听任意TCP和UDP端口,进行端口扫描,处理IPv4和IPv6 这个命令适用于写脚本 nc  -z -w 10 ip port -z:指定NC只应扫描侦听守护 ...

  6. Python多线程下存在_strptime的问题

    由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错:AttributeError: _strptime code: # -*- coding:utf-8 ...

  7. react github项目

    https://github.com/bailicangdu/react-pxq 网址;https://github.com/bailicangdu/react-pxq

  8. Sqlite3入门简记

    一,安装Sqlite3 1.入门时看http://www.runoob.com/sqlite/sqlite-intro.html,说的简单,但是适合入门 2.在终端输入sqlite3,没有返回信息,表 ...

  9. mac 配置vue+sanic环境准备工作

    Vue用到npm/cnpm.webpack ,准备工作主要是将这些安装上. 首先安装这些最好使用root用户. 第一步安装npm:npm是node.js的一部分,所以需要安装node.js. 安装no ...

  10. Elasticsearch从入门到精通之Elasticsearch集群内的原理

    上一章节我介绍了Elasticsearch安装与运行,本章节及后续章节将全方位介绍 Elasticsearch 的工作原理 在这个章节中,我将会再进一步介绍 cluster . node . shar ...