之前都是集成的Servlet真的太过于繁琐了, Servlet接口提供了一个实现类 为HttpServlet  只要实现doGet 和doPost方法就可以了

仍然以一个表单为例

新建一个web工程

 package com.xiaoan.test;

 import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class TestHttpServlet extends HttpServlet{ /**
*
*/
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req, HttpServletResponse resp){
System.out.println("GET METHOD");
} public void doPost(HttpServletRequest req, HttpServletResponse resp){
System.out.println("POST METHOD");
}
}

编辑web.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>testHttpServlet</display-name> <servlet>
<servlet-name>TestHttpServlet</servlet-name>
<servlet-class>com.xiaoan.test.TestHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestHttpServlet</servlet-name>
<url-pattern>/testHttpServlet</url-pattern>
</servlet-mapping>
</web-app>

这样运行项目访问路径为http://localhost:8080/testHttpServlet/testHttpServlet  控制台会输出GET METHOD

写一个表单将其post提交到这个路径

在WebContent里面新建一个testform.jsp

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="testHttpServlet" method="post">
<input type="submit" value="tijiao">
</form>
</body>
</html>

运行这个jsp页面, 直接点击提交 注意浏览器中的变化和控制台的输出为POST METHOD

HttpServletRequest   HttpServletResponse  这里面和Serlvet.service方法中使用方法可以认为完全一样

并且在HttpServlet 的父类GenericServlet 中获得了Servlet初始化 init方法中的ServletConfig为一个成员属性 可以直接调用

ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现

1> getWriter(): 返回PrintWriter对象. 调用该对象的pring()方法, 将把pring()中的参数直接打印到客户浏览器上
PrintWriter out = response.getWriter();
out.println("neirong");

2> 设置响应内容类型: response.setContentType("application/msword");

3> woid sendRedirect(String location): 请求的重定向(本方法为HttpServletResponse中定义)

练习
在web.xml文件中设置两个WEB初始化参数 user, password. 定义一个login.html, 里面定义两个请求字段 user, password. 此对其和web.xml文件中定义的请求参数是否一致,若一致, 就响应Hello: xxx, 不一致就响应Sorry: xxx

1GenericServlet:
1> 是一个Servlet. 是Servlet接口和ServletConfig接口的实现类. 但是是一个抽象类. 其中的servlet方法为抽象方法
2> 如果新建的Servlet程序直接继承GenericServlet会使开发更简洁
3> 具体实现:
1) 在GenericServlet中声明了一个ServletConfig类型的成员变量, 在init(ServletConfig)方法中对其进行了初始化
2) 利用servletConfig成员变量的方法实现了ServletConfig接口的方法
3) 还定义了一个init()方法, 在init(ServletConfig)方法中对其进行调用, 子类可以直接覆盖init() 在其中实现对Servlet的初始化
4) 不建议直接覆盖init(ServletConfig), 因为如果忘记写super.init(config); 而是还使用了ServletConfig接口的方法, 则会出现空指针异常
5) 新建的init(){} 并非Servlet的生命周期方法. 而init(ServletConfig)是生命周期相关的方法

2 HttpServlet:
1是一个Servlet 继承自GenericServlet. 针对于HTTP协议所定制

JavaWeb核心编程之(三.6)HttpServlet的更多相关文章

  1. JavaWeb核心编程之(三.5)HTTP请求和接受表单数据

    HTTP简介WEB浏览器与WEB拂去其之间的一问一答的交互过程, 必须遵循一定的规则,这个规则就是HTTP协议HTTP是hypertext transfer protocol(超文本传输协议)的简写, ...

  2. JavaWeb核心编程之(三.4)Servlet Context 配置

    ServletContextServlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用S ...

  3. JavaWeb核心编程之(三.3)Servlet Init 配置

    Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...

  4. JavaWeb核心编程之(三.2)Servlet配置

    Servlet配置 1.配置Serlvet加载时机 2.配置多映射 配置加载时机 新建项目config->创建包com.xiaoan.config->创建类FirstServlet imp ...

  5. JavaWeb核心编程之(三.1)ServletHello

    Servlet简介Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servlet和客户的通信以及调用Servlet方法, 在这里Servlet ...

  6. JavaWeb核心编程之(四.1)JSP

    JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...

  7. 【1】python核心编程 第三章

    1.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...

  8. python核心编程-第三章-个人笔记

    1.语句和语法 (1)反斜杠"\"表示语句继续.python良好的编程习惯是一行最后不超过80个字符,一行字符过多时便须用到反斜杠换行继续该语句. PS:在使用小括号.中括号.大括 ...

  9. Windows核心编程 第三章 内核对象

    第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄.本章将要介绍一些比较抽象的概念,在此并不讨论某个特定内核对象的特性,相反只是介绍适用于所有内核对象的特性. 首先介 ...

随机推荐

  1. HTML——JAVASCRIPT——光棒效果

    光棒效果:建立一个表格,鼠标放到哪一行,哪一行的颜色就改变,鼠标离开那一行,那一行的颜色就恢复到原来的颜色 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  2. Windows SQL Server 2012 R2 安装Intel I217-V/I218-V网卡驱动(转)

    1.下载Intel官方驱动: https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23071&lang=zh ...

  3. Android Studio代码自动提示无效

    不生效的原因是因为你AS设置成了省电模式,设置成省电模式了的话,AS会禁掉一些辅助功能,达到省电的目的.所以代码自动提示也被禁掉了. 要修改回来的话,通过File选项,然后倒数第二项:Power Sa ...

  4. sql从某不连续的数字中将其分段并找出缺失的数字并分段

    首先做准备数据 )) ') ') ') ') ') ') ') ') ') ') ') ') ') ') ') ') 将数据转换成应该处理的数据格式 ),colValue INT ) ) ,LEN(c ...

  5. HDU 1038 - Biker's Trip Odometer

    算一下路程和速度... #include <iostream> #include <cstdio> using namespace std; const double p=3. ...

  6. javascript中的with

    with语句主要用来对一个对象操作多个属性,使代码简洁易读. 语法: with(object) statements object是新的默认对象,statements是一个或多个语句 例如: var ...

  7. ZRender源码分析3:Painter(View层)-上

    回顾 上一篇说到:ZRender源码分析2:Storage(Model层),这次咱看来看看Painter-View层 总体理解 Painter这个类主要负责MVC中的V(View)层,负责将Stora ...

  8. mysql性能优化学习笔记(3)常见sql语句优化

    一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+----- ...

  9. html5介绍

    html5与html4的区别   (h5 and h4)   什么是OPOA   1,    浏览器对h5的支持情况 2,    历史 --- h5         2004年,whatwg 提出 w ...

  10. TensorFlow 深度学习笔记 逻辑回归 实践篇

    Practical Aspects of Learning 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有 ...