Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端。

Servlet的客户端提出请求并获得该请求的响应。

对于所有的客户端请求,只需要创建Servlet的实例一次(这是和CGI(Common Gateway Interface)的重要区别,CGI是每个请求创建一个新实例),因此节省了大量的内存。

Servlet在初始化后即驻留内存中,因此每次作出请求时无需加载。

下面通过一个例子来介绍如何编写一个简单的Servlet。

准备工作:

1. 下载并启动Tomcat(作为Servlet的容器)
 
实例步骤:
1. 在Tomcat/webapps下面创建新的folder,helloapp
 
2. 创建helloapp的子文件夹如下
helloapp
----WEB-INF
--------web.xml
--------classes
--------lib
 
3. 在classes下面创建新的java文件,Hello.java
 
4. 引入servlet-api.jar, import javax.servlet.*;
 
5. Servlet的实现有3种方式,下面分开进行介绍(重点)
HttpServlet继承GenericServlet,GenericServlet实现了Servlet。
 
5.1 实现Servlet接口
 
public class Hello implements Servlet{
@Override
public void init(ServletConfig sc) throws ServletException {
//只有第一次被调用,初始化函数。
System.out.println("initialization...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//每次访问都被调用,业务逻辑写在这里。
System.out.println("call service");
PrintWriter pw = res.getWriter();
pw.write("My first web app.");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
//最后关闭时,调用。
System.out.println("destroy...");
}
}

5.2 继承GenericServlet

public class Hello2 extends GenericServlet{
@Override
public void service(ServletRequest sr, ServletResponse sr1) throws ServletException, IOException {
//业务逻辑,每次访问都被调用。
System.out.println("Testing....");
PrintWriter pw = sr1.getWriter();
pw.println("my second web app.");
}
}

5.3 继承HttpServlet

public class Hello3 extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException{
System.out.println("do get method...");
PrintWriter pw = res.getWriter();
pw.println("do get method.");
} public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException{
System.out.println("do post method...");
PrintWriter pw = res.getWriter();
pw.println("do post method.");
}
}

6. 编译源文件

7. 修改web.xml

<servlet>
<servlet-name>Hello</servlet-name>//servlet 名称,随便起
<servlet-class>com.test.servlet.Hello</servlet-class>//对应的类
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>//servlet名称,随便起,但是要与servlet中的名称一致。
<url-pattern>/h1</url-pattern>//对应的,浏览器中url。
</servlet-mapping>

8. 访问helloapp/h1,可以看到结果。

[Spring MVC]学习笔记--基础Servlet的更多相关文章

  1. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  2. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  3. Spring MVC 学习笔记1 - First Helloworld by Eclipse【& - java web 开发Tips集锦】

    Spring MVC 学习笔记1 - First Helloworld by Eclipse reference:http://www.gontu.org 1. 下载 Spring freamwork ...

  4. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  5. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  8. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  9. spring MVC学习笔记

    为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...

  10. Spring MVC 学习笔记(整理)

    SpringMVC学习 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们 ...

随机推荐

  1. .sh文件怎么安装?

    实例:sh java_1.8.0.sh示例:sh filename.sh

  2. Django——QuerySets酷毙了!

    Django的QuerySets酷毙了! 在本文中我将解释一下QuerySets是什么,它是如何工作的(如果你对它已经熟悉了,你可以直接跳到第二部分),我认为如果可以的话你应该总是返回QuerySet ...

  3. selenuim-webdriver注解之@FindBy、@FindBys、@FindAll的区别

    selenium-webdriver中获取页面元素的方式有很多,使用注解获取页面元素是其中一种途径, 方式有3种:@FindBy.@FindBys.@FindAll.下文对3中类型的区别和使用场景进行 ...

  4. 微信小程序flex容器属性详解

    flex容器属性详解 flex-direction决定元素的排列方向 flex-wrap决定元素如何换行 flex-flow 是 flex-direction 和flex-wrap的简写 justif ...

  5. measureChildren的工作原理

    无论是在重写View还是ViewGroup的时候,尤其是ViewGrop的时候,往往不可避免的重写onMeasure方法,我们一定会调用setMeasuredDimension()将测量好的宽高值传递 ...

  6. flask 框架 前端和后端请求超时问题

    部署模式 flask + Gunicorn + nginx 为什么要用Gunicorn + nginx ? 请看知乎大神们的回答:https://www.zhihu.com/question/3852 ...

  7. poj 2409 Let it Bead Polya计数

    旋转能够分为n种置换,相应的循环个数各自是gcd(n,i),个i=0时不动,有n个 翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个 偶数时有n种置换,一半是n/2+1个,一半是n/2个 啃论文 ...

  8. SVN学习(二)——SVN 提交、更新、解决冲突等操作步骤

    1. 纳入版本控制 ①新建文件abc.txt ②在文件上点右键 ③添加后文件图标发生变化 2. 提交 ①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变.方法就是在想要提交的 ...

  9. strults2标签s:set的用法

    struts2标签<s:set></s:set>的用法.原理 http://liuna718-163-com.iteye.com/blog/1124654     我的例子: ...

  10. 转:EMQTT测试--安装与测试 (windows)

    官网 我下载的是windows版 安装 参考 http://emqtt.com/docs/install.html 将下载的压缩包解压,我解压到了D盘 命令行窗口,cd到程序目录 控制台模式启动: . ...