JavaWeb核心编程之(三.6)HttpServlet
之前都是集成的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的更多相关文章
- JavaWeb核心编程之(三.5)HTTP请求和接受表单数据
HTTP简介WEB浏览器与WEB拂去其之间的一问一答的交互过程, 必须遵循一定的规则,这个规则就是HTTP协议HTTP是hypertext transfer protocol(超文本传输协议)的简写, ...
- JavaWeb核心编程之(三.4)Servlet Context 配置
ServletContextServlet引擎为每个Web应用程序都创建一个对应的ServletContext对象, ServletContext对象被包含在ServletConfig对象中, 调用S ...
- JavaWeb核心编程之(三.3)Servlet Init 配置
Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...
- JavaWeb核心编程之(三.2)Servlet配置
Servlet配置 1.配置Serlvet加载时机 2.配置多映射 配置加载时机 新建项目config->创建包com.xiaoan.config->创建类FirstServlet imp ...
- JavaWeb核心编程之(三.1)ServletHello
Servlet简介Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servlet和客户的通信以及调用Servlet方法, 在这里Servlet ...
- JavaWeb核心编程之(四.1)JSP
JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...
- 【1】python核心编程 第三章
1.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 ...
- python核心编程-第三章-个人笔记
1.语句和语法 (1)反斜杠"\"表示语句继续.python良好的编程习惯是一行最后不超过80个字符,一行字符过多时便须用到反斜杠换行继续该语句. PS:在使用小括号.中括号.大括 ...
- Windows核心编程 第三章 内核对象
第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄.本章将要介绍一些比较抽象的概念,在此并不讨论某个特定内核对象的特性,相反只是介绍适用于所有内核对象的特性. 首先介 ...
随机推荐
- Erp第二章:业务流程化、集成、规划
1从全流程着眼,支持业务流程化优化,通过流程化优化提高工作效率和企业效益 2每个系统业务都相互依存.相互作用. 3.应用 程序(不用厂家)越多,信息集成难度越大 4信息集成.实时共享.实时企业 5信息 ...
- WCF通信过程
无废话WCF入门教程二[WCF应用的通信过程] 一.概述 WCF能够建立一个跨平台的安全.可信赖.事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Ser ...
- Docker终极指南:为什么Docker能做这么多事
Docker终极指南:为什么Docker能做这么多事 http://www.aboutyun.com/thread-11499-1-1.html
- mysql学习(十)多表查询
多表查询时,要给表名起别名,给字段名其别名(当两个表含有重复字段时) select p.name, c.name, pid from products p, cats c;//得到的结果为笛卡尔乘积 ...
- JAVA 8 新特性和改进
Java 8的所有新特性及改进包括(JEP全称为JDK Enhancement Proposal,JDK改进建议): 语言改进: JEP 126:Lambda表达式 & 虚拟扩展方法 JEP ...
- Android之修改部分字体颜色
#01# 方法一: TextView textView = (TextView) view.findViewById(R.id.text); SpannableString ss = new Span ...
- Linux的用户和用户组管理
Linux是个多用户多任务的分时操作系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控 ...
- 推荐大家使用的CSS书写规范、顺序(转载)
转自:http://www.admin10000.com/document/2979.html 写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体 ...
- 欧几里得求最大公约数--JAVA递归实现
欧几里得算法求最大公约数算法思想: 求p和q的最大公约数,如果q=0,最大公约数就是p:否则,p除以q余数为r,p和q的最大公约数即q和r的最大公约数. java实现代码: public class ...
- Intellij IDEA开发第一个android应用教程
用惯eclipse的同学们可以试试通过Intellij IDEA来开发一个android应用.下面是具体的教程. 首先:下载Intellij IDEA.最新版本是12.官方提供两个版本.一个是Comm ...