文档章节

java servlet概要

klink
 klink
发布于 2014/06/11 15:56
字数 535
阅读 87
收藏 0

Servlet API

java Servlet有两个包,javax.servlet和javax.servlet.http。

  • javax.servlet包不是通过特定协议实现的,它是更加通用的servlet。
  • javax.servlet.http是javax.servlet基于http协议实现的版本。

java Servlet不同于我们写的普通程序,它没有main()方法。因此它必须要借助http server来执行。当客户端向服务器发送请求时,服务器就会把请求分发给servlet,servlet会根据请求的不同来处理它。

  • 对于GenericServlet,服务器会调用该类的service()方法来处理请求,因此我们可以override service()方法来实现想要的逻辑。
    • service()有两个参数,一个参数是request object, 另一个参数是response object。第一个参数记录了客户端请求的详细信息,第二个参数是向客户端返回的响应信息。

图中给出了GenericServlet处理请求的过程:

  • 对于HttpServlet,HttpServlet基于HTTP协议将service()分成了不同的模块,get, post等,因此我们不会直接override service()而是override doGet(),doPost(),doXXXX()等方法。

下图给出了HttpServlet处理请求的过程:

除了 GenericServlet和HttpServlet之外,还有一些辅助的类。如:

  • ServletRequest 和 ServletResponse提供了一般的请求和响应信息。
  • HttpServletRequest 和 HttpServletResponse提供了Http的请求和响应信息。

Servlet Example

创建Web工程

使用Maven创建Web工程 http://my.oschina.net/klink/blog/269718

编写Servlet代码

在编写之前,我们需要将Servlet的包引入到工程中来。在POM.XML中添加下面的依赖。

<dependency>
	<groupId>org.apache.geronimo.specs</groupId>
	<artifactId>geronimo-servlet_2.4_spec</artifactId>
	<version>1.1.1</version>
	<scope>provided</scope>
</dependency>

创建Class HelloWorld,并编写下面的代码。

package io.github.klink.web;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res)
   throws ServletException, IOException {

res.setContentType("text/html");
PrintWriter out = res.getWriter();

out.println("<HTML>");
out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>");
out.println("<BODY>");
out.println("<BIG>Hello World</BIG>");
out.println("</BODY></HTML>");
  }
}

将下面的配置信息写入到WEB-INF/web.xml中。

  <servlet>
    <servlet-name>
        hi
    </servlet-name>
    <servlet-class>
        io.github.klink.web.HelloWorld
    </servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>
        hi
    </servlet-name>
    <url-pattern>
        /hello.html
    </url-pattern>
</servlet-mapping>

使用mvn运行,mvn install。将Web工程编译并打包成war文件。然后将war文件上传到tomcat中,最后输入

http://localhost:8080/SimpleWebApp/hello.html

输出结果为:

Hello World

© 著作权归作者所有

共有 人打赏支持
klink
粉丝 0
博文 24
码字总数 29450
作品 0
苏州
Spring 和 JavaEE的关系

Java EE vs Spring. Or: What is a standard? 什么是JavaEE J2EE是一系列技术标准所组成的平台。JavaEE包含了对一系列标准(接口)的实现。如果你要用这些接口,恐怕要使用JavaEE服务器而不仅...

Finley.Hamilton
2014/11/12
0
0
Jsp 和 Servlet 有什么不同?

面试中被问到了 Jsp 和 Servlet 有什么不同?在这里总结分享下。 回答思路先分别进行基本介绍,然后分析说明两者相同点和不同点。 基本介绍 Servlet: Servlet 是一种服务器端的Java应用程序...

几个栗子
08/22
0
0
9.java web的发展 javaweb是什么 J2EE发展历史 规范 J2EE是什么 发展背景 组件标准 J2EE好处作用 Servlet 含义 本质 发展 java在web中的发展 servlet工作流程 java 开发web项目发展 javaBean jsp

javaweb 本质上来说就是使用java 语言来解决企业web应用中一系列技术体系与规范; jdk1.2 playground 此版本中把java技术体系拆分为三个方向 J2SE J2EE J2ME 这个大家都知道 其中之一的J2EE,...

noteless
06/29
0
0
Java EE部分核心技术简介

EJB — JavaEE的基石: 1、 EJB (Enterprise JavaBeans) : 一个Java服务器端组件开发的规范,定义了一个用来开发面向对象分布式应用组件的标准方法,软件厂商根据它来实现EJB服务器。 Java...

顶层设计
2012/08/03
0
0
【科普】JavaEE的核心技术

java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13种核心技术。 JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于W...

花的鱼
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

实战讲解高并发和秒杀抢购系统设计

互联网特别是电商平台,阿里双11秒杀、还有12306春运抢票、以及平时各种节假日抢购活动等,都是典型的高并发场景。 这类场景最大的特征就是活动周期短,瞬间流量大(高并发),大量的人短期涌...

xtof
18分钟前
0
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
21分钟前
4
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
30分钟前
0
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
41分钟前
0
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部