1.hello1代码分析

hello.java

package javaeetutorial.hello1;

import javax.enterprise.context.RequestScoped;#导入了一个java包,注解类型为RequestScoped((1)指定bean是请求范围的 (2) 请求范围处于活动状态   (3)请求上下文被销毁)
import javax.inject.Named;#导入了一个java包,注解类型为Named(常用于命名注解javax.inject.Name并 javax.enterprise.context.RequestScoped使用请求范围将类标识为托管bean。范围定义应用程序数据如何保持和共享)

@Named
@RequestScoped

#使用两个注解
public class Hello {#定义一个公共类

private String name;#一个私有字符串name

public Hello() { #定义自身类对象
    }

public String getName() {定义对象getName,返回name
        return name;
    }

public void setName(String user_name) {#将setNaame设置为返回值对象,把user_name赋值给this.name
        this.name = user_name;
    }
}

hello.1.web.xml

<?xml version="1.0" encoding="UTF-8"?>#xml版本号和编码
<web-app version="3.1" #web-app版本号
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" #表示web.xml命名空间
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" #类url
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">#指定web.xml约束文件xsd所在位置
    <context-param>#表明应用范围内的初始化参数
        <param-name>javax.faces.PROJECT_STAGE</param-name>#将参数名为faces的包导入project_stage
        <param-value>Development</param-value>#参数值
    </context-param>
    <servlet>#在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。
        <servlet-name>Faces Servlet</servlet-name>#servlet命名
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>#指定servlet类包
        <load-on-startup>1</load-on-startup>#启动负载为1
    </servlet>
    <servlet-mapping>#更改缺省url
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>#指定url参数类型
    </servlet-mapping>
    <session-config>#指定缺省超时值
        <session-timeout>#会话超时为30
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>#指示服务器在收到引用一个目录名而不是文件名的URL时,使用的文件
        <welcome-file>index.xhtml</welcome-file>#应用index.xhtml文件
    </welcome-file-list>
</web-app>

2.hello2代码分析

Responseservlet.java:
package javaeetutorial.hello2;  #软件包名为javaeetutorial.hello2

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;

  #导入io 和 serverlet相关的各类包
@WebServlet("/response")

  #注解WebServerlet 为response
public class ResponseServlet extends HttpServlet {

  #定义类ReponseServerlet从HttpServerlet拓展而来

@Override

  #注解Override
public void doGet(HttpServletRequest request,

  #定义对象doGet ,定义HttpServerletRequest 为request

HttpServletResponse response)

  #定义HttpServerResponse 为response
throws ServletException, IOException {

  #抛出异常
try (PrintWriter out = response.getWriter()) {

  #将response的getWeite方法赋值给PrintWrite的out,response的getWrite方法来自于HttpServletResponse接口方法
String username = request.getParameter("username");

  #将request的getParameter方法获得的username赋值给字符串username,requset来自于HttpServerletRequest接口方法
if (username != null && username.length() > 0) {

  #当username字符串不为空且username的长度大于0时
out.println("<h2>Hello, " + username + "!</h2>");

  #调用out的println打印Hello,和字符串
}
}
}

@Override
public String getServletInfo() {
return "The Response servlet says hello.";

  #定义字符串getServerletinfo,返回内容

}
}

GreetingServlet.java:

package javaeetutorial.hello2;  

  #包名hello2

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

  #导入各类需要的资源包

@WebServlet("/greeting")  

  #注解名greeting
public class GreetingServlet extends HttpServlet {

  #拓展类GreetingServlet从HttpServlet接口

@Override

  #注解Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)

  #同上定义对象 HttpServletRequest名为request,HttpServletResponse名为response
throws ServletException, IOException {

  #抛出异常

response.setContentType("text/html");

  #定义文本类型为text,html
response.setBufferSize(8192);

  #定义缓冲池大小8192
try (PrintWriter out = response.getWriter()) {
out.println("<html lang=\"en\">"
+ "<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");
if (username != null && username.length() > 0) {
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/response");
  #将response响应赋给dispatcher分发调度
if (dispatcher != null) {
dispatcher.include(request, response);
}

  #当匹配到处理请求响应的处理服务时,就返回请求和response.java的响应内容结果
}
out.println("</body></html>");
}
}

@Override
public String getServletInfo() {
return "The Hello servlet says hello.";

  #在页面返回响应的文字

}
}

参考链接:

https://www.cnblogs.com/lijianxuan/p/10606299.html

https://www.cnblogs.com/zrj-cdu/p/10631701.html

hello1 hello2 代码分析的更多相关文章

  1. hello1和hello2代码分析

    1.hello1代码分析 hello.java package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped ...

  2. hello1与hello2的代码分析

    1.hello1代码分析 hello.java package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped ...

  3. Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...

  4. pmd静态代码分析

    在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...

  5. [Asp.net 5] DependencyInjection项目代码分析-目录

    微软DI文章系列如下所示: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Autofac [ ...

  6. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)

    Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...

  7. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  8. STM32启动代码分析 IAR 比较好

    stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...

  9. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

随机推荐

  1. 破解某PDF转换器产品

    本文章纯属出于作者自己对技术的探索,绝不用于商业用途(虽然网上已经能够下载到注册机了) 软件功能就不多说了,PDF转换成WORD格式,对于学生党来说也算是神器了吧,那么我们今天就用自己的办法来获得这款 ...

  2. JAVA同步锁机制 wait() notify() notifyAll()

    wait() notify() notifyAll() 这3个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块中使用. wait() 必须在synchronized函数或 ...

  3. dsp 28335 ConfigCpuTimer()详细介绍

    我自己的理解:写的不一定对,还请多指教: 从网上看到的好多都是复制粘贴的一个版本,感觉不太对 图上的是系统时钟(SYSCLKOUT)=75MHz; ConfigCpuTimer(&CpuTim ...

  4. java——类、对象、方法

    一.类 1.Java语言把一组对象中相同属性和方法抽象到一个Java源文件就形成了类. 一个java文件可以有多个类,但是每一个类都会生成一个class字节码文件. 如果class 前加public ...

  5. LeetCode 145 二叉树的后序遍历(非递归)

    题目: 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 1 ...

  6. 小练习_num1

    题目:将一个正整数分解质因数.例如:输入90,打印输出90=2*3*3*5. /* 分解质因数 */ import java.util.*; class num1 { public static vo ...

  7. Android中获取文件路径的方法总结及对照

    最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...

  8. 菜鸟python之路-第五章(记录读书点滴)

    数字 1.数字类型 python支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 . 创建数值对象并赋值 aint=1 along=-999999999999999L aflo ...

  9. Qt 文件的操作

    文件操作是应用程序必不可少的部分.Qt 作为一个通用开发库,提供了跨平台的文件操作能力.从本章开始,我们来了解下 Qt 的文件以及输入输出的功能,也就是 I/O 系统. Qt 通过QIODevice提 ...

  10. 2017年5月11日17:43:06 rabbitmq 消费者队列

    从昨天开始发现个问题,一个接口在本地调用时大部分正常,一旦在生成者打一个断点调试,并且在promotion也打断点的时候会出现没有返回channel的异常,然后消费者就再也消费不了了 16:57:45 ...