文档章节

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
苏州
私信 提问
Jsp 和 Servlet 有什么不同?

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

几个栗子
2018/08/22
0
0
ContentType,charset和pageEncoding的区别

ContentType 属性指定响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。   语法  Response.ContentType [= ContentType ]   参数   ContentType pageEncoding是jsp...

Glogo
2013/02/19
0
0
如何成为一个优秀的JSP程序员

一个普通的错误是把JSP当作简化的Java,它不是,(事实上, JSP是简化的Servlet)程序员通常试着没有学习要求的支持技巧而直接学习JSP。JSP是一个衔接技术,并且成功地连接你需要理解的另外的...

五味格子
2011/05/11
0
0
淘宝-7月24、25上海专场面试Java职位,考虑的发简历喽,或加QQ:1377433499

高级JAVA开发工程师 --工作地点:杭州,上海 职位描述: 1.根据软件需求说明书和软件设计文档实现软件产品; 2.从事具体的软件开发,确保研发软件的安全、质量和性能; 3.维护和升级现有软件...

Helen
2010/07/13
549
10
(JavaEE-07)JSP.md

JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术。JSP的编写就像编写HTML一样简单,但是与HTML不同的是,在JSP中,可以编写Java代码...

_-Leon-_
2014/07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部