首先:

java EE 上的hello2项目是一个部署在glass fish上的开发源码的java web项目,在终端通过命令行使用maven进行打包成.war文件,最后部署到相关的glass fish服务器上。

Java EE 的hello2 不同于hello1 的不同之处在于,前者可以直接通过hello1项目名进行访问文件,后者需要通过访问编写的greeting的web文件才能够访问到hello2文件。

其中的原因在于如下:

1:在hello2的项目中,采用的是Java servlet  技术来采取对项目的整体框架的搭建。编写另一个greeting的java文件,实现了一个greeting的java类来覆盖url的doGet方法,

这个Java类重写了关于HTTP的get 方法,因此通过访问相关的url 即可以访问到编写的Java servlet 文件。主要的实例如下:

@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
response.setBufferSize(8192);

这个重写的doGet方法传入了一个request 和 response参数,对请求得到的响应进行处理,返回相关的编写的html类型的java web文件和并且设定最大的字节数为8192字节。

http://host:port/context-root[/url-pattern

@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
...}
通过分析可知,这个Greeting继承了HttpServlet包,从而实现关于http的servlet方法,完成了url到web组件的映射。
1
2
3
4
5
6
7
if (username != null && username.length()> 0) {
                RequestDispatcher dispatcher =
                    getServletContext().getRequestDispatcher("/response");
 
                if (dispatcher != null) {
                    dispatcher.include(request, response);
                }

编写的实例类实现了一个关于用户名和用户名长度的判别方法,对用户输入的信息进行判别,并通过responseServlet进行处理,相关的实例如下:

@WebServlet("/response")
public class ResponseServlet extends HttpServlet { @Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try (PrintWriter out = response.getWriter()) { // then write the data of the response
String username = request.getParameter("username");
if (username != null && username.length()> 0) {
out.println("<h2>Hello, " + username + "!</h2>");
}
}
}

当用户输入信息时,后端对输入的信息做出响应,呈现出java web的servlet HTML组件。

总结:

Servlet 技术首先编写一个java 类实现一个servlet接口,其次将开发好的Java web类部署到web 服务其中,即glass fish服务器中,即可以实现javaweb简单部署。

Servlet程序是由服务器调用,当服务器收到客户端的http请求时:

1:  首先判断是否是第一次访问Servlet程序,如果是则创建Servlet实例,调用实例对象的init()方法。

2 : 创建一个用于封装HTTP请求消息的HttpServletReqset对象和一个代表HTTP响应消息的HttpServletResponse对象。

3 :    最后调用doGet()方法将请求参数和响应参数传递进去。

通过以上的步骤,客户端通过请求上下文的URL即 ”http://host:port/context-root[/url-pattern]“ 能够访问到部署在glass fish服务器上的Java Servlet项目 即hello2。

Hello2实例的分析的更多相关文章

  1. php数组去重实例及分析

    php数组去重实例及分析.  一维数组的重复项: 使用array_unique函数即可,使用实例 <?php    $aa=array("apple","banan ...

  2. 通过实例来分析I2C基本通信协议

    本文旨在用最通俗易懂的方式.让大家明确I2C通信的过程到底是怎么回事. I2C起源于飞利浦公司的电视设计,但之后朝通用路线发展,各种电子设计都有机会用到I2C 总的来说,I2C能够简单归纳为,两根线, ...

  3. 有关RDS上只读实例延时分析-同适用于自建MySQL主从延时分析判断

    个人不是很喜欢在技术上跟人互喷,尤其是不在同一个岗位上的人.一方面本人的性格如此,另一方面,我自身的口水也确实是不行,人生经历了第一次的双11洗礼,在大促的环境下,总算知道了有些东西是否应该规避,这次 ...

  4. Backbone实例todos分析

    源码来自:http://todomvc.com/examples/backbone/ 这是一个用Backbone.js完成的待办事项实例,精简但完善,可以帮助很好的帮助理解Backbone的API,M ...

  5. Netty入门实例及分析

    什么是netty?以下是官方文档的简单介绍: The Netty project  is an effort to provide an asynchronous event-driven netwo ...

  6. hello1与hello2的代码分析

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

  7. SQLServer数据库,表内存,实例名分析SQL语句

    --数据库内存分析 USE master go DECLARE @insSize TABLE(dbName sysname,checkTime VARCHAR(19),dbSize VARCHAR(5 ...

  8. 对Java tutorial-examples中hello2核心代码分析

    1.在hello2中有两个.java源文件分别是GreetingServlet.Java和ResponseServlet.jva文件主要对以下核心代码做主要分析. String username = ...

  9. ORACLE AWR报告生成过程出现多个实例记录分析

    在一次生成AWR报告中,发现在"Instances in this Workload Repository schema"部分,出现了多个实例记录信息(host敏感信息被用host ...

随机推荐

  1. 网络相关配置,SSH服务,bash, 元字符

    作业一:临时配置网络(ip,网关,dns)+永久配置  设置IP和掩码ifconfig eth0 192.168.2.2 netmask 255.255.255.0设置网关route add defa ...

  2. css 底层知识点

    (摘自张鑫旭老师的课程内容) position: absolute 1. 定位元素(关闭按钮etc):dom顺序保持正确,然后根据absolute的位置跟随性(脱离文档流但是位置不变)和margin值 ...

  3. 福大软工 · 第十二次作业 - Beta答辩总结

    第三视角Beta答辩总结 博客链接以及团队信息 组长博客链接 成员信息(按拼音排序) 姓名 学号 备注 张扬 031602345 组长 陈加伟 031602204 郭俊彦 031602213 洪泽波 ...

  4. python 进程池Pool的apply_async方法以及一些需要注意的地方

    在写多进程的时候我发现一个问题,用Pool的apply_async(异步非阻塞)的时候传入实例函数会出错,或者说是子进程被跳过似的感觉(python2.7). 但是用python3.7的话没有任何问题 ...

  5. FX-玩列表

    list = []while True: meus = ("1.查看","2.添加","3.删除","0.退出") pr ...

  6. java 反射获取方法返回值类型

    //ProceedingJoinPoint pjp //获取方法返回值类型 Object[] args = pjp.getArgs(); Class<?>[] paramsCls = ne ...

  7. linux中常见的命令

    linux 中的命令非常多,但是玩过linux的人也从来不会因为Linux的命令如此之多而烦恼,我们只需要掌握其中常见的命令即可,可以在使用时去找man,会帮助你解决不少问题.下面就列出一些常见的li ...

  8. LeetCode 547 朋友圈

    题目: 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋友的 ...

  9. Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改

    Ganglia & RRD Ganglia是伯克利开发的一个集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,同时可以 ...

  10. ajax 提交form格式 和 json格式

    json 格式 内容在body中 ajax设置   Content-Type: application/json 浏览器查看为 Request Payload The Request Payload ...