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. HDU 1560 IDA*搜索

    用N个串中找到最短的公共串(不要求连续,仅仅要相对位置一样就可以) 迭代加深搜索就可以 剪枝:当前的深度+最少还有加深的深度是否大于限制的长度,若是,则退回. #include "stdio ...

  2. 香蕉派 Banana pi BPI-M1+ 双核开源单板计算机. 板载WIFI

     Banana PI BPI-M1+是一款高性能双核开源硬件单板计算机,Banana PI BPI-M1+是一款比树莓派更强悍的双核Android4.4与Linux产品. Banana PI BP ...

  3. LoadRunner测试Google Suggest

    Google的搜索框是典型的AJAX应用,用户在输入关键字的同时,前端页面通过xmlhttp与后台服务器动态交互,根据用户输入的关键字查找匹配的内容,向用户提示建议的搜索项,也就是所谓的“google ...

  4. 【Python3 爬虫】12_代理IP的使用

    我们在爬取页面的时候,如果长时间使用一个网址去爬取某个网站,就会受爬去限制,此时,我们引用了代理IP,IP随时在变化,也就不会被限制了 一下是国内提供免费代理IP的地址:http://www.xici ...

  5. 5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬

     1 触摸 Coco2dx默认仅仅有CCLayer及其派生类才有触摸的功能. 2 单点触摸 打开触摸开关和触摸方式 setTouchEnabled(true); setTouchMode(kCCT ...

  6. 正则化--L1正则化(稀疏性正则化)

    稀疏矢量通常包含许多维度.创建特征组合会导致包含更多维度.由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM. 在高维度稀疏矢量中,最好尽可能使权重正好降至 0.正好为 0 的 ...

  7. 一种在MVC3框架里面设置模板页的方法,不使用_ViewStart

    1.新建MasterFilterAttribute类继承ActionFilterAttribute,重写方法OnActionExecuted ,指定ViewResult的MasterName = &q ...

  8. Redis之Hash数据结构

    0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数 ...

  9. varnish学习笔记

    varnish cache是一款开源的高性能的缓存server.和老牌的Squid对照有例如以下长处. 1:varnish是基于内存缓存数据的,所以处理速度比Squid要快. 2:varnish支持更 ...

  10. SQL数据库查询练习题

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...